Linux篇:rsync文件同步工具的用法学习(一)

01 前言

rsync是linux下一款功能非常强大的文件同步工具,它不仅可以实现本地到远程的文件或目录的文件传输,也可以实现本地到本地的文件或目录传输,可能很多小伙伴会问,那scp或者cp不是也可以实现相应的功能吗?

重点区别就来了。

scp cp命令是全量覆盖

rsync却是增量更新

02 rsync 格式

rsync基本用法格式如下:

• rsync [OPTION] … SRC   DEST

•rsync [OPTION] … SRC  [user@]host:DEST

•rsync [OPTION] … [user@]host:SRC   DEST

•rsync [OPTION] … SRC  [user@]host::DEST

•rsync [OPTION] … [user@]host::SRC   DEST

说明:SRC 源文件/目录  DEST 目标文件/目录

例如 将/data下的文件同步到/temp下,那么/data就是SRC   /temp就是DEST

03 rsync的常用选项

rsync的常用选项如下:

•  -a 包含-rtplgoD

•  -r 同步目录时要加上,类似cp时的-r选项

•  -v 同步时显示一些信息,让我们知道同步的过程

•  -l 保留软连接

•  -L 加上该选项后,同步软链接时会把源文件给同步

•  -p 保持文件的权限属性

•  -o 保持文件的属主

•  -g 保持文件的属组

•  -D 保持设备文件信息

•  -t 保持文件的时间属性

•  --delete 删除DEST中SRC没有的文件

•  --exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步

•  -P 显示同步过程,比如速率,比-v更加详细

•  -u 加上该选项后,如果DEST中的文件比SRC新,则不同步

•  -z 传输时压缩

04 几个简单的小例子

例如在/home/temp目录下有111、222文件夹作为演示

选择111文件夹作为SRC,选择222文件夹作为temp

示例1:验证rsync的同步功能

rsync -av /home/temp/111/  /home/temp/222

可以看到,111文件夹下的文件都已同步到222文件夹下

特别说明:使用rsync一定要注意的一点是,源路径如果是一个目录的话,带上尾随斜线和不带尾随斜线是不一样的,不带尾随斜线表示的是整个目录包括目录本身,带上尾随斜线表示的是目录中的文件,不包括目录本身。

例如:

[root@localhost~]# rsync -a  /etc /tmp

[root@localhost~]# rsync -a  /etc/ /tmp

第一个命令会在/tmp目录下创建etc目录,而第二个命令不会在/tmp目录下创建etc目录,源路径/etc/中的所有文件都直接放在/tmp目录下。

在工作中,建议在SRC目录后面加上“/”,个人觉得这是一个好习惯

示例2:验证rsync的增量同步功能

在111文件夹下新增加一个文件4.sh

再次使用命令,如下:

可以看到,本次同步的是新增的文件,即增量同步。

示例3:同步的时候删除222文件夹中111没有的文件,保持两个文件夹一致(演示--delete选项)

这里用--delete参数

可以看到,222文件夹中原来有(a.sql b.sql c.sql)因为111文件夹没有,目前已被删除

示例4:同步111中的文件到222 但不包括以log为后缀的日志文件(演示--exclude选项)

在111文件夹下创建几个日志文件,如下:

可以看到,同步的过程中,后缀为log的文件没有同步过来,这一点在后续的备份操作中可用来过滤日志文件。

示例5:同步过程中如果222文件夹文件更新,则不同步(演示-u选项)

先在111和222文件夹下的1.sh 分别插入一句 Hello world

可以看到,111和222文件夹下的1.sh文件目前是一致的,此时往222文件夹下的1.sh再插入一句

rsync is useful

这是再使用rsync同步

可以看到,因为222文件夹下的1.sh相比111文件夹下的1.sh是较新的版本,此次未做同步

05 小总结

以上是rsync几个最基础的用法,以本地同步作为演示,远程的可参照格式,原理是一样的。

明天将学习rsync通过服务或ssh进行同步。晚安~

你可能感兴趣的:(Linux篇:rsync文件同步工具的用法学习(一))