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