rsync 学习

rsync 的一些常用用法

rsync是Linux里常用的一个用于文件同步的命令。

可以替代mvcp命令,也可以和远端主机同步文件(rsync的全称是 remote sync)。最主要的特性就是每次只会传输文件变动的部分,而不是每次都全量同步。

常用参数

-a 参数

-a参数有两个功能:

  • 会遍历源文件,将包含子目录
  • 会拷贝文件的元信息,比如文件大小,修改时间等

rsync默认是通过文件大小和修改时间判断文件是否进行过修改

rsync -a source destination

rsync -a source/ destination

上面这两个命令的不同之处是在于,第二条命令会把source下面的文件拷贝到destionation中,而不是将source目录拷贝到destination中

-n 参数

rsync -anv source destination

-n 并不会真正的执行命令,而是模拟执行的结果

-v会把模拟执行的结果输出到终端

–delete 参数

rsync -av --delete source destination

默认情况下,rsync只确保将源目录中的所有内容拷贝到目标目录中,并不会要求两个目录的文件完全相同。

--delete参数会确保两个目录中的内容相同,如果目标目录中有多余的文件则会删除

–exclude 参数

--exclude支持同步文件时排除某些文件

  1. 不同步txt文件

     rsync -av --exclude="*.txt" source destination
  2. rsync默认会同步.开头的文件,下面的命令可以排除以.开头的文件

     rsync -av --exclude=".*" source destination
  3. 多个文件需要排除

     rsync -av --exclude=".*" --exclude="*.txt" source destination
    
     rsync -av --exclude={'.*', '*.txt'} source destination
  4. 如果需要排除某个目录下的所有文件,而保留目录

    rsync -av --exclude="dir1/*" source destination

–include 参数

--include指定必须要同步的文件

通常和--exclude参数同时使用

rsync -av --include="*.txt" --exclude="*" source destination

--link-dest用来指定同步文件时的基准目录

rsync -av --delete --link-dest=../path source/ destination

如果基准目录相对路径,并且和source、destination目录是同一级的,需要在目录名前加上../

source目录中的文件会和path中的文件进行比较,只会把更新了的文件拷贝到destination目录中,那些没有更新的文件则会和path中的文件生成硬链接

–append 参数

--append参数接着文件上次中断的地方继续传输

–append-verify 参数

在传输完成时会对文件进行一次校验,如果校验失败,则会重新传输

–checksum 参数

默认情况下rsync在文件传输完成后只进行文件大小和修改时间的判断,使用该参数后将使用文件内容的校验和

-m 参数

不同步空目录

-P 参数

--partial--progress的结合

rsync在中途传输失败时,默认会删除已经传输完成的文件。--partial则不会删除文件,下次同步时会再次恢复中断的传输

远程同步

  1. SSH协议

    rsync -av source username@remote_host:destination
    
    rsync -av username@remote_host:source destination
    
    rsync -av -e "ssh -o 2222" username@remote_host:source destination

    如果ssh需要有附加的命令需要用-e参数

参考链接:


   转载规则


《rsync 学习》 KaKa 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录