Quan Zhuo's Blog

使用 rsync 同步文件夹

2017-02-09

很多时候我们需要两个文件夹的内容保持完全一致。比如说在 Android 平台开发中,当上游厂商 release 出新的版本的代码的时候,就需要合并新的代码到我们的代码仓库中。对于一两个文件的 对比,使用任何方法都可以。但是对于 Android 源码来说,加上仓库一共有 50 ~ 60 GB 的代码, 上百万的文件,此时就需要选取合适的工具。本文介绍怎么使用 rsync 命令来自动对比并 Merge 代码。

rsync 简介

下面是 rsync 的 Manual Page 中的简介。

rsync - a fast, versatile, remote (and local) file-copying tool

上面的一句话简单明了的概括了 rsync 的功能特性:快速,功能强大,远程复制,以及本地复制。 rsync 可以说是一个功能强大的复制工具。本文我们只会介绍一些使用 rsync 在本地 Merge 代码 时会用到的选项。

语法

rsync 在本地 Merge 两个文件夹的语法如下:

 rsync [OPTION...] SRC... DEST

选项

下面是一些合并代码会用到的选项

  • -v, --verbose:详尽的输出
  • -i, --itemize-changes: 输出文件变化的总结
  • -C, --cvs-exclude:按照版本控制系统的模式自动忽略文件
  • -c, --checksum:比较校验和,而不是时间和大小
  • -n, --dry-run:只打印出差异,而不进行 Merge
  • --delete:删除只在 dest 中存在的文件
  • --exclude:跳过某些文件或者文件夹
  • --no-times:如果两个文件只是时间不同,则不改变 dest 的时间
  • --no-perms:如果两个文件只是权限不同,则不改变 dest 的权限

用法示例:

rsync -av -C --exclude=.repo/ --exclude=.git/ -c -i --no-times --no-perms --delete src/ dest/

更多信息

上面只介绍了 rsync 全部功能的一小部分,更多的用法请查看 rsync 的官方手册。

man rsync

评论