当前位置:首页 > 问答 > 正文

Linux 文件夹迁移:保留文件属性高效实现Linux文件复制

📂 Linux文件夹迁移:保留文件属性高效实现文件复制

场景引入
刚接手一台老旧的Linux服务器,想把/home/user_data整个搬到新硬盘,结果发现复制后文件权限全乱了😱——脚本无法执行、日志报权限错误…别慌!今天教你用cprsync两大神器,完美保留文件属性(权限、时间戳、所有者),还能提速50%!✨


🔧 方法一:cp命令的进阶用法

适合场景:快速复制单个文件夹,保留基础属性

cp -a /source/folder /destination/

参数解析

  • -a = -dR --preserve=all(归档模式)
    • 保留权限(-p
    • 保留软链接(-d
    • 递归复制子目录(-R
    • 保留时间戳、所有者等信息

注意

Linux 文件夹迁移:保留文件属性高效实现Linux文件复制

  • 如果目标文件夹已存在,建议先清空或使用-r覆盖
  • 大文件推荐搭配pv监控进度(例:pv /source/bigfile > /destination/bigfile

🚀 方法二:rsync——迁移专业户

适合场景:增量同步/网络传输/断点续传

rsync -avzh --progress /source/ /destination/

参数解析

  • -a:归档模式(同cp -a
  • -v:显示详细过程
  • -z:压缩传输(节省带宽)
  • -h:人类可读的单位显示
  • --progress:实时进度条

💡 高阶技巧

Linux 文件夹迁移:保留文件属性高效实现Linux文件复制

  • 排除特定文件:--exclude='*.tmp'
  • 限速传输:--bwlimit=5000(单位KB/s)
  • 远程同步:user@remote:/path替换目标路径

🕵️‍♂️ 验证属性是否保留

复制完成后,用ls -l对比源和目标:

ls -l /source/file /destination/file

检查三要素:

  1. 权限(如-rwxr-xr--
  2. 所有者(如user:group
  3. 时间戳(最后修改时间)

⚠️ 常见坑点排查

  1. 权限不足:用sudo执行命令,或先chown调整权限
  2. 磁盘空间不足df -h查看目标盘容量
  3. SELinux干扰:临时关闭setenforce 0(生产环境慎用)

🌟 终极懒人脚本

一次性迁移并校验的脚本:

Linux 文件夹迁移:保留文件属性高效实现Linux文件复制

#!/bin/bash
rsync -avzh --delete /source/ /destination/ && \
echo "迁移完成!开始校验..." && \
diff -rq /source/ /destination/ || echo "发现差异,请检查日志!"

📌:

  • 小文件夹用cp -a简单粗暴
  • 大工程选rsync稳如老狗
  • 记得验证属性,别让权限问题半夜找你加班!

(本文操作基于Linux内核5.15+测试,2025-08更新)

发表评论