rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
用法
rsync [OPTION]... SRC DEST |
对应于以上六种命令格式,rsync有六种不同的工作模式:
- 拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如:
rsync -a /data /backup
- 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。如:
rsync -avz *.c foo:src
- 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如:
rsync -avz foo:src/bar /data
- 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如:
rsync -av root@192.168.78.192::www /databack
- 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。如:
rsync -av /databack root@192.168.78.192::www
- 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:
rsync -v rsync://192.168.78.192/www
-v, --verbose 详细模式输出。 |
常用参数
从远程同步至本地
rsync -avzP -e ssh user@192.168.90.90:/home/user/test/ /home/user/test_new/ |
需要注意的是,如果是/home/user/test/表示是test目录下的所有内容,/home/user/test表示连同这个目录已经目录下的所有内容
从本地同步至远程
rsync -avzP -e ssh /home/user/test_new/ user@192.168.90.90:/home/user/test/ |
精确同步
rsync -avz --delete user@192.168.90.90:/home/user/test/ /home/user/New_Test/ |
--delete
会精确保存副本,源主机删除的文件,目标主机也会同步删除
排除文件或目录
rsync -ave ssh --exclude "tmp/checkout" --exclude "temp.txt" /home/user/test_new/ user@192.168.90.90:/home/user/test/ |
注意:--exclude
这个路径必须是一个相对路径,不能是绝对路径
rsync -ave ssh --exclude-from=/exclude.list /home/user/test_new/ user@192.168.90.90:/home/user/test/ |
cat exclude.list |
指定远端ssh端口
rsync -avzP -e "ssh -p 8022" user@192.168.90.90:/home/user/test/ /home/user/test_new/ |
限制速度rsync -avzP -e ssh --bwlimit=1000 user@192.168.90.90:/home/user/test/ /home/user/test_new/
--bwlimit
后面的值的单位是kb/s