Linux 使用rsync 复制文件夹排除一个或者多个目录

比如: /home/vagrant/test 目录下有 a,b,c 三个文件夹,只复制 c 文件夹下面的文件到/home/vagrant/test2

使用cp命令复制的时候,只能排除一个目录不被复制,如果想排除两个或者多个目录的话,就需要使用rsync命令来实现了,看下面的例子

1
2
3
4
5
6
# yum install rsync
# apt install rsync
$ cd /home/vagrant/test
$ pwd
$ /home/vagrant/test
$ rsync -av --exclude a --exclude b . ../test2
  • -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
  • -v 显示同步过程的详细(verbose)信息
  • 第一个. 是把当前目录做为同步源,因为执行rsync命令时已经进入到/home/vagrant/test
  • 第二个../test2 把相对当前目录上级的test2 文件夹作为同步目标目录

注意:–exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则出错。

注解:

rsync命令是一个远程数据同步工具可通过LAN/WAN快速同步多台主机间的文件。-a参数表示archive模式,-v表示详细链模式输出,-z表示传输文件时使用压缩传输的模式。

References