rsync是一种远程和本地文件同步工具,它可以实现远程和本地文件的增量同步,从而减少传输的数据量。
同步目录
rsync -r dir1/ dir2
上面的命令表示把dir1下的所有文件复制到dir2,如果目标目录不存在将会自动创建。-r表示递归,包含该文件夹下的所有目录和文件。注意,dir1后面的/不能省略,省略之后会在dir2下创建一个dir1文件夹。
更常见的用法是使用-a代替-r,它除了可以递归同步,还可以保留符号链接、特殊文件和设备文件、修改时间、组、所有者和权限等信息。
rsync -a dir1/ dir2
试运行
在执行rsync命令之前,应该始终检查参数是否输错,rsync提供-n参数可以试运行命令,-v表示输出执行过程的详细信息
rsync -anv dir1/ dir2
与远程同步
本地传输到远程
rsync -a ~/dir1 username@remote_host:remote_directory
远程传输到本地
rsync -a username@remote_host:~/dir1 local_directory
如果修改了ssh端口,需要加上-e参数指定新的端口
rsync -a -e 'ssh -p 10021' ~/dir1 username@remote_host:remote_directory
压缩传输
rsync可以对传输的内容进行压缩,从而减少传输时间,具体做法是加上-z参数
rsync -az ~/dir1 username@remote_host:remote_directory
续传和进度
-P标志结合了--progress和--partial,可以恢复中断和显示传输进度
rsync -azP ~/dir1 username@remote_host:remote_directory
完全同步
默认情况下,源目录删除了某个目录,目标目录不会同步删除,可以使用--delete参数来更改这个预设
rsync -a --delete ~/dir1 username@remote_host:remote_directory
排除和包含
--exclude和--include用来指定哪些目录和文件需要排除或者包含进来
rsync -a --exclude='node_modules' ~/dir1 username@remote_host:remote_directory
上述命令将不同步node_modules文件夹,如果想保留目录,可更改为node_modules/*
文件备份
rsync支持对源文件进行备份,语法如下
rsync -a --delete --backup --backup-dir=~/backups ~/dir1 username@remote_host:remote_directory