跳到主要内容

Rsync 同步文件

你可以使用以下命令组合来实现 rsync 先检查再同步,并显示进度条:


直接上示例:

例如本网站资源的更新

# # 1. 先进行模拟运行(检查) --- 检查要同步的内容
rsync -avn --checksum --progress --delete /www/fanconn_wiki/wiki/ c:/www/wiki/

# 2. 确认无误后实际同步
rsync -av --checksum --progress --delete /www/fanconn_wiki/wiki/ c:/www/wiki/



# 显示更详细的进度信息
rsync -av --progress --stats --human-readable 源目录/ 目标目录/

# 或者使用更直观的进度条(需要安装 pv)
rsync -av 源目录/ 目标目录/ | pv -lep -s $(du -sb 源目录/ | cut -f1)

方法一: 分两步执行(推荐)

# 1. 先进行模拟运行(检查)
rsync -avun --progress 源目录/ 目标目录/

# 2. 确认无误后实际同步
rsync -av --progress 源目录/ 目标目录/

方法二: 使用 --dry-run 参数先检查

# 先检查(模拟运行)
rsync -avun --progress 源目录/ 目标目录/

# 或者使用 --dry-run
rsync -av --dry-run --progress 源目录/ 目标目录/

# 检查无误后,去掉 -n 或 --dry-run 进行实际同步
rsync -av --progress 源目录/ 目标目录/

关键参数说明

  • -a: 归档模式,保持文件属性

  • -v: 详细输出

  • -u: 跳过目标目录中更新的文件(仅同步更新的文件)

  • -n--dry-run: 模拟运行,不实际复制文件

  • --checksum: 最慢,计算每个文件的MD5校验和

  • --progress: 显示传输进度

  • --delete: 删除目标目录中源目录不存在的文件

  • --delete-excluded: 同时删除被排除的文件(如果使用了排除规则)

  • 注意: 源目录路径结尾的 / 很重要,它表示同步目录内容而非目录本身

这样你就可以先看到哪些文件会被同步,确认无误后再执行实际的文件传输,同时还能看到传输进度。


图片