Step1 复制
优先rsync,次选cp
rsync
rsync -av --sparse 源目录/ 目标目录/
rsync远程
rsync -av --sparse --progress user@remote-host:/path/to/source/directory/ /path/to/local/destination/
如需要启用传输时压缩,则将-av改为-avz (局域网下和本地不需要压缩)。
参数解释
-
rsync
基本介绍:- 一个高效的文件同步和传输工具
- 支持增量传输(只传输变化的部分)
- 可以保持文件的所有属性
-
参数解释:
-
-a
(archive模式)包含以下功能:- -r:递归复制目录
- -l:复制符号链接
- -p:保持权限
- -t:保持时间戳
- -g:保持组
- -o:保持所有者
- -D:保持设备文件和特殊文件
-
-v
(verbose):- 显示详细的传输信息
- 可以看到每个被传输的文件
-
--sparse
:- 特殊处理稀疏文件
- 保持文件的"稀疏"特性
- 节省磁盘空间
-
-
路径格式说明:
-
源目录/
:末尾的/很重要- 带/:复制目录中的内容
- 不带/:复制目录本身
-
目标目录/
:- 指定同步的目标位置
- 如果目标目录不存在,会自动创建
-
-
命令执行效果:
- 将源目录中的所有内容复制到目标目录
- 保持所有文件属性和权限
- 智能处理稀疏文件
- 显示传输进度
- 只传输发生变化的文件
-
常见使用场景:
- 备份数据
- 目录同步
- 服务器之间传输文件
- 维护镜像站点
-
优势:
- 效率高(增量传输)
- 可靠性好
- 保持文件属性
- 支持断点续传
- 网络传输时支持压缩
使用示例:
# 本地目录同步
rsync -av --sparse /home/user/docs/ /backup/docs/
# 远程同步(通过SSH)
rsync -av --sparse /local/path/ user@remote:/path/
cp
rsync -av --sparse 源目录/ 目标目录/
Step2 校验
md5sum校验原始数据和备份数据
find 源目录 -type f -exec md5sum {} \; | sort > 源.md5
find 目标目录 -type f -exec md5sum {} \; | sort > 目标.md5
diff 源.md5 目标.md5
参数解释
1. `find 目录`
- find 命令用于在指定目录中搜索
- "目录" 是要搜索的起始目录
2. `-type f`
- 指定只查找普通文件
- 排除目录、符号链接等其他类型的文件
3. `-exec md5sum {} \;`
- -exec 表示对找到的每个文件执行后面的命令
- md5sum 是计算文件的 MD5 校验和的命令
- {} 是一个占位符,代表 find 找到的每个文件名
- \; 表示 -exec 命令的结束
4. `| sort`
- | 是管道符号,将前面命令的输出传递给 sort 命令
- sort 命令将结果按字母顺序排序
5. `> xxx.md5`
- > 是重定向符号,将排序后的结果保存到文件
- xxx.md5 是保存结果的目标文件