使用rsync同步代码

在工作中,我们经常需要在不同机器之间传递大量文件, 比如将程序文件复制到测试环境中进行部署。相比sftp和scp,rsync 最大的特点是能通过算法找到修改或新增的文件再复制,这可以减少传输数据,提高效率。

例1: 同步本网站到服务器

本网站运行在一台阿里云的Linux虚拟机中, 可以通过ssh进行远程访问。

首先,我在本地的ssh配置文件中,加入网站地址名称,以方便记忆。 ssh配置文件为 ~/.ssh/config, 其相关片段内容如下:

Host myblog
  HostName 101.200.***.***
  User wanggan

网站在目标服务器的目录为 /var/www/027yunwei.com/, 那么复制命令如下

$ rsync -Pcrvz --exclude .git --delete myblog/output/ myblog:/var/www/027yunwei.com

<code>

解释一下各个参数的含义:

  1. -P 显示进度

  2. -c 使用checksum来判断文件是否修改

  3. -r 目录下所有文件及子目录均包括在内

  4. -v 输出丰富的信息

  5. -z 压缩后传输

  6. --exclude 排除文件或目录. 本例子中,我们排除了.git

  7. --delete

    删除本地不存在的文件。

参考资料: man rsync