rsync支持本机目录之间,也支持网络计算机之间的可续传、可压缩的拷贝。
使用方法
格式:rsync SOURCE/ DESTINATION/
或 rsync OPTION SOURCE DESTINATION
。
网络拷贝时,rsync基本和scp的用法差不多,例:rsync -vhlPr -e ssh user@host:/home/user/hzh-disk/HanLP .
,如果不指定协议,rsync可能会采用rsh协议,这个协议比ssh慢一些。
若目录之间拷贝时不带 -r
option,将只拷贝该目录下的文件,不会递归拷贝子目录。注意如果目录里有隐藏文件,rsync会将其一并拷贝到目标目录,因此rsync看起来更像是一个备份命令。
使用 rsync -vhlP SOURCE DESTINATION
就应该可以满足大部分需求了。若拷贝目录则带上-r
,根据情况带上-a
,小文件太多时可带上-z
。
注意事项
- 关于目录拷贝,即若source是目录
-
rsync -vhlPr SOURCE DESTINATION/
拷贝目录本身
将目录SOURCE(包括SOURCE本身)全部打包拷贝到DESTINATION,若DESTINATION中不存在SOURCE目录,则会创建SOURCE目录。如果不带-l
选项,则不会拷贝软链接文件(子目录里的链接也不会),但会拷贝隐藏文件。如果不带-r
选项,则什么都不会做。 -
rsync -vhlPr SOURCE/ DESTINATION/
拷贝目录内容
将目录SOURCE(不包括SOURCE本身,只会拷贝SOURCE目录里的东西)里的全部文件,包括软链接文件和隐藏文件都拷贝到DESTINATION目录下面。如果不带-l
选项,则不会拷贝链接文件,但依然会拷贝隐藏文件。如果不带-r
选项,则什么都不会做。 -
rsync -vhlPr SOURCE/* DESTINATION/
很少用
尽量不要使用这个命令。它与rsync -vhlPr SOURCE/ DESTINATION/
差不多,但是还是有点差别。这个命令永远不会拷贝隐藏文件,也没有选项让它拷贝隐藏文件。若不带-r
则只会拷贝文件,不会拷贝子目录。若不带-l
则会忽略软链接。
DESTINATION
与DESTINATION/
没有区别。
option常用选项:
- -v or --verbose
传输的时候会显示一个概览。 - -h or --human-readable
显示的内容以易读方式显示。 - -l
同时拷贝软链接。不带这个选项是不会拷贝软链接的。所以建议总是带这个选项。 - -P
相当于--partial --progress
。即断点续传并显示进度。 - -r or --recursive
递归拷贝目录及其子目录。和-a的差别是-a等效于-rlptgoD
(no -H,-A,-X)。 - -e
指定传输所用的传输协议,支持 ssh or rsh。如rsync -vhlPraze ssh SOURCE/ DESTINATION/
- -a or --archive
归档模式,等效于-rlptgoD
(no -H,-A,-X),会拷贝软链接,且拷贝的时候会保留几乎所有的属性,比如所属用户及组,时间戳等。 - -z or --compress
压缩后再传。 - --partial
断点续传。如果不带这个选项,中断传输时,只传输了一部分的文件会被删除。 - --progress
传输时显示进度。 - --update
- 相当于增量备份功能。
- 如果文件不存在,则会传输,即删掉目标文件。
- 如果文件时间戳较新,则也会传输。
- 不管文件时间戳,文件内容不一样,也会传输。(注:这一点我自己还没验证过)
- --remove-source-files
删掉传输成功的文件。 - --delete
从目标目录中删掉源目录中不存在的文件。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------