Linux rsync命令用法
1、介绍
从字面意思上,rsync 可以理解为 remote sync(远程同步),但它不仅可以远程同步数据(类似于 scp 命令),还可以本地同步数据(类似于 cp 命令)。不同于 cp 或 scp 的一点是,使用 rsync 命令备份数据时,不会直接覆盖以前的数据(如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
2、安装
在Centos中使用以下命令安装rsync:
1 | yum install -y rsync |
3、工作模式
rsync 有 5 种不同的工作模式:
- 第一种用于仅在本地备份数据;
- 第二种用于将本地数据备份到远程机器上;
- 第三种用于将远程机器上的数据备份到本地机器上;
- 第四种和第三种是相对的,同样第五种和第二种是相对的,它们各自之间的区别在于登陆认证时使用的验证方式不同。
要知道,使用 rsync 在远程传输数据(备份数据)前,是需要进行登陆认证的,这个过程需要借助 ssh 协议或者 rsync 协议才能完成。在 rsync 命令中,如果使用单个冒号(:),则默认使用 ssh 协议;反之,如果使用两个冒号(::),则使用 rsync 协议。
ssh 协议和 rsync 协议的区别在于,rsync 协议在使用时需要额外配置,增加了工作量,但优势是更加安全;反之,ssh 协议使用方便,无需进行配置,但有泄漏服务器密码的风险。
4、参数列表
另外,以上几种格式中各个参数的含义如下:
- SRC:用来表示要备份的目标数据所在的位置(路径);
- DEST:用于表示将数据备份到什么位置;
- USER@:当做远程同步操作时,需指明系统登录的用户名,如果不显示指定,默认为以 root 身份登录系统并完成同步操作。
rsync 命令提供使用的 OPTION 及功能如表
OPTION选项 | 功能 |
---|---|
-a | 这是归档模式,表示以递归方式传输文件,并保持所有属性,它等同于-r、-l、-p、-t、-g、-o、-D 选项。-a 选项后面可以跟一个 –no-OPTION,表示关闭 -r、-l、-p、-t、-g、-o、-D 中的某一个,比如-a –no-l 等同于 -r、-p、-t、-g、-o、-D 选项。 |
-r | 表示以递归模式处理子目录,它主要是针对目录来说的,如果单独传一个文件不需要加 -r 选项,但是传输目录时必须加。 |
-v | 表示打印一些信息,比如文件列表、文件数量等。 |
-l | 表示保留软连接。 |
-L | 表示像对待常规文件一样处理软连接。如果是 SRC 中有软连接文件,则加上该选项后,将会把软连接指向的目标文件复制到 DEST。 |
-p | 表示保持文件权限。 |
-o | 表示保持文件属主信息。 |
-g | 表示保持文件属组信息。 |
-D | 表示保持设备文件信息。 |
-t | 表示保持文件时间信息。 |
–delete | 表示删除 DEST 中 SRC 没有的文件。 |
–exclude=PATTERN | 表示指定排除不需要传输的文件,等号后面跟文件名,可以是通配符模式(如 *.txt)。 |
–progress | 表示在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、 同步的文件传输速度等。 |
-u | 表示把 DEST 中比 SRC 还新的文件排除掉,不会覆盖。 |
-z | 加上该选项,将会在传输过程中压缩。 |
5、本机中的两个目录进行同步
要同步本地计算机中的两个目录,使用rsync -zvr
命令:
1 | [root@node1 ~]# mkdir /rsync |
6、使用rsync -a选项
rsync命令的-a
选项表示存档模式。-a
选项递归同步,保留符号链接,保留权限,保留,保留所有者和组。
现在,执行以下命令,然后查看文件的时间:
1 | [root@node1 ~]# rsync -zva /var/log/ /rsync/ |
如下图所示,在同步期间保留了补充
7、将文件从本地同步到远程目录
rsync允许在本地和远程系统之间的同步文件/目录,应该是本地和远程系统都要安装rsync才行
1 | [root@node1 ~]# rsync -zva /var/log/ root@192.168.10.200:/rsync |
8、将文件从远程目录同步到本地
将目标文件从远程系统同步到本地时,在源中指定远程路径,在目标中指定本地路径即可:
1 | [root@node1 ~]# rsync -avz root@192.168.10.200:/rsync/ /test1/ |
9、不传输大文件
可以使用rsync --max-size
选项告诉rsync不要传输大于指定大小的文件。
1 | [root@node1 ~]# rsync -zva --max-size='1M' /var/log/ root@192.168.10.200:/rsync1 |
--max-size=1M
使rsync仅传输小于或等于1M的文件。单位可以是K,M,G等。
还可以使用--min-size=
参数,指定传输最小文件的大小。