美文网首页每天一个Linux命令Linux学习|Gentoo/Arch/FreeBSDLinux
Linux篇:rsync文件同步工具的用法学习(一)

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

作者: walker86 | 来源:发表于2019-12-02 23:36 被阅读0次

    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文件同步工具的用法学习(一)

        本文链接:https://www.haomeiwen.com/subject/rdcqgctx.html