linux查看rsync的命令,Linux rsync 命令学习

linux查看rsync的命令,Linux rsync 命令学习Rsync 命令和 cp 命令很像 但是功能似乎更加复杂点 主要用来备份数据 看了网上一堆介绍的文章 感觉不是很通俗易懂 下面按照我的理解 做一些笔记 同步方式之前接触过一些同步软件 例如坚果云 百度云盘等等 他们对于同步方式都是有一些选择项的 下面列举一些同步方式单向同步每次执行任务时 源目录中新建和更新的文件将被复制到目标目录中 目标目录中对应源目录中已经删除的文件 将被删除 此方式只是单向地对文件

Rsync命令和cp命令很像,但是功能似乎更加复杂点,主要用来备份数据。看了网上一堆介绍的文章,感觉不是很通俗易懂。下面按照我的理解,做一些笔记:

同步方式

之前接触过一些同步软件,例如坚果云、百度云盘等等,他们对于同步方式都是有一些选择项的,下面列举一些同步方式

单向同步

每次执行任务时,源目录中新建和更新的文件将被复制到目标目录中;目标目录中对应源目录中已经删除的文件,将被删除。此方式只是单向地对文件进行从源目录到目标目录的操作。如果您手工对目标目录进行的任何文件操作,将被任务忽略。

双向同步

每次执行任务时,不管源目录还是目标目录中新建和更新的文件都会被复制到另外一个目录中;在任何一个目录中删除文件,另外一个目录也会删除对应的文件。当两个目录中文件的操作重叠时,任务会自动保留最新的操作。如果操作时间无法判断,更新和新建文件的操作会优于删除文件而被保留。此方式会对源目录进行文件操作。

镜像同步

每次执行任务时,任何在源目录中新建或在目标目录中删除或在两个目录中更新的文件,都会从源目录复制到目标目录。任何在源目录中删除或在目标目录中新建的文件都会从目标目录中删除。此方式始终保持目标目录中的文件和源目录中的文件一模一样,任何目标目录自身的文件变化将被去除。此方式会删除目标目录中多余的文件。

移动同步

每次执行任务时,源目录中的任何文件都会被移动到目标目录中去。目标目录中如果存在相同文件将被覆盖。移动后,源目录被清空。

更新同步

每次执行任务时,源目录中新建和更新的文件将被复制到目标目录中,目标目录中任务之前复制的所有文件将被删除,只保留最新的文件。

累加同步

每次执行任务时,源目录中新建和更新的文件将被复制到目标目录中,目标目录中的任何文件都不会被删除。目标目录中会保留所有在源目录中曾经出现过的文件且都是最后一个版本。

增量备份

每次执行任务时,任务发现源目录中有新建或更新的文件,则在目标目录中建立一个子目录来保存这些新文件。虽然保存的文件只反映了执行时源目录的一部分,但您可以利用软件中提供的文件恢复工具来恢复出执行时源目录完整的目录结构和所有文件。增量备份任务第一次执行时,会自动对源目录做一次完全备份,以便以后能完全恢复。

完全备份

每次执行任务时,任务会在目标目录中建立一个子目录来保存源目录中的所有文件。

除双向同步和镜像同步外,其它方式的任务在执行时,如果发现源目录中的文件没有发生变化,将不做任何处理,只会记录一个最后检查时间。双向同步和镜像同步如果碰到源目录和目标目录中的文件都没有变化的情况,也将只记录一个最后检查时间。

除双向同步和镜像同步外,其它方式的任务对于用户直接对目标目录进行新建、更新、删除的文件不做处理。也就是说,不是任务复制到目标目录而存在的文件,任务认为它不存在,不是被任务删除的文件,任务认为文件还在目标目录中存在。

除双向同步和移动同步外,其它方式的任务不会对源目录进行文件操作。

Rsync的命令格式可以为以下六种:

rsync [OPTION]… SRC DEST

rsync [OPTION]… SRC [USER@]HOST:DEST

rsync [OPTION]… [USER@]HOST:SRC DEST

rsync [OPTION]… [USER@]HOST::SRC DEST

rsync [OPTION]… SRC [USER@]HOST::DEST

rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]

rsync 参数理解

-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。

-e, –rsh=command 指定使用rsh、ssh方式进行数据同步。

-r, –recursive 对子目录以递归模式处理。

-l,–links保留软链结。

-L, –copy-links 想对待常规文件一样处理软链结。

-K, –keep-dirlinks treat symlinked dir on receiver as dir

-v, –verbose 详细模式输出。

-z, –compress 对备份的文件在传输时进行压缩处理。

–deldete

–delete:如果源端没有此文件,那么目的端也别想拥有,删除之。(如果你使用这个选项,就必须搭配-r 选项一起)

–delete 删除那些 DST 中 SRC 没有的文件,就是说,DST 中如果存在和 SRC 不一样的文件,那么这些文件就会在同步过程中删除!这种同步方式是不是有点像镜像同步。

为了搞清楚目录加/的区别,做了如下的对比:

目的:将源目录test传输到远程目录/tmp下,即远程目录下/tmp/test

1.源目录加斜线,目标目录不加斜线:

结果显示,加了斜线,会将源目录下的文件,传输到目标目录下。

如果目标目录不存在,会创建目录。

rsync -avlK ./test/ root@10.22.44.103:/tmp/test

root@10.22.44.103’s password:

sending incremental file list

created directory /tmp/test

./

a.txt

b.py

dd/

sent 208 bytes received 97 bytes 55.45 bytes/sec

total size is 0 speedup is 0.00

root@SZX:/tmp/test# ls

a.txt b.py dd

2.源目录不加斜线,目标目录不加斜线

不加斜线,直接将源目录复制到目标目录下,所以,test整个目录复制到了目标目录下了。

root at node1 in /tmp

$ rsync -avlK ./test root@10.22.44.103:/tmp/test

root@10.22.44.103’s password:

sending incremental file list

created directory /tmp/test

test/

test/a.txt

test/b.py

test/dd/

sent 219 bytes received 98 bytes 57.64 bytes/sec

total size is 0 speedup is 0.00

root@SZX:/tmp# cd test/

root@SZX:/tmp/test# ls

test

root@SZX:/tmp/test# cd test

root@SZX:/tmp/test/test# ls

a.txt b.py dd

3. 源目录不加斜线,目标目录加斜线:

不加斜线,直接将源目录复制到目标目录下,所以,test整个目录复制到了目标目录下了。

$ rsync -avlK ./test root@10.22.44.103:/tmp/test/

root@10.22.44.103’s password:

sending incremental file list

created directory /tmp/test

test/

test/a.txt

test/b.py

test/dd/

sent 219 bytes received 98 bytes 70.44 bytes/sec

total size is 0 speedup is 0.00

root@SZX:/tmp# cd test/

root@SZX:/tmp/test# ls

test

4. 源目录加斜线,目标目录加斜线:

结果显示,加了斜线,会将源目录下的文件,传输到目标目录下。

$ rsync -avlK ./test/ root@10.22.44.103:/tmp/test/

root@10.22.44.103’s password:

sending incremental file list

created directory /tmp/test

./

a.txt

b.py

dd/

sent 208 bytes received 97 bytes 55.45 bytes/sec

total size is 0 speedup is 0.00

root@SZX:/tmp/test# ls

a.txt b.py dd

总结

源目录加了斜线,效果就是将该目录下的内容传输到目标目录下。

源目录不加斜线,效果就是将该目录传输到目标目录下。

目标目录如果不存在,会自动创建目标目录。

所以,为了实现最初的目的,可以通过:

$ rsync -avlK ./test/ root@10.22.44.103:/tmp/test

或者:

$ rsync -avlK ./test root@10.22.44.103:/tmp

-a 选项

-a 选项是rsync里比较霸道的一个选项,因为你使用-a选项,就相当于使用了 -rlptgoD 这一坨选项。以一敌七,唯 -a选项也。(在看了前文之后,你应该可以很轻松的理解这七个选项的作用了)

-a 选项的学名应该叫做archive option,中文叫做归档选项。使用-a` 选项,就表明你希望采取递归方式来同步,且尽可能的保持各个方面的一致性。

但是 -a选项也有阿克琉斯之踵,那就是-a无法同步“硬链接”情况。如果有这方面需求,要加上-H选项

实例

加不加 / 的区别

末尾不加/,表示的是将src这个目录直接复制到文件夹下,如果dst目录下没有src,会自动创建src目录

$ rsync -avzh –progress /apkg/backup/src /apkg/backup/dst

末尾加/,表示的是将src目录下的内容复制到dst2文件夹下

$ rsync -avzh –progress /apkg/backup/src/ /apkg/backup/dst2

同步时,创建目录

将本地机器上/data/repo/Log/中的内容,归档到远程机器上的/data/repo/Log/{repo}/目录中,{repo} 这个目录远程不一定有,需要创建:

rsync -avzh –progress –rsync-path=”mkdir -p /data/repo/Log/{repo} && rsync ” /tmp/{repo}/{repo}/log/ :/data/repo/Log/{repo}/

参考

rsync -aL

示例:

一次传输多个文件到目标文件夹下

rsync -aL /apkg/FusionSwift/package_pool/DLRN_RPMS/current/cps-swift.noarch.rpm /apkg/FusionSwift/package_pool/DLRN_RPMS/current/cps-swift-proxy.noarch.rpm /apkg/FusionSwift/rpm_srv/euleros/2.0/noarch/

-e

示例:

rsync -avzKq –stats -e “ssh -i /usr/lib/python2.7/site-packages/apkg/actions/pool/id_rsa -o StrictHostKeyChecking=no” cps-pkg-pool-2.xxx.com:/data/cps/repo/FusionSwift/master/xxx/euler

参考

– [《rsync同步的艺术》–linux命令五分钟系列之四十二](http://roclinux.cn/?p=2643) 推荐,详细叙述了各选项的意义

– [RSYNC 的核心算法](https://coolshell.cn/articles/7425.html)

– [Linux命令中:rsync和cp之间的区别](https://www.cnblogs.com/kex1n/p/7008178.html)

– [使用 rsync 增量同步备份文件 ](http://einverne.github.io/post/2017/07/rsync-introduction.html)

– [Rsync命令详解](http://blog.csdn.net/u0/article/details/)

– [第2章 rsync(一):基本命令和用法](https://www.cnblogs.com/f-ck-need-u/p/7220009.html#blog243)

– [Rsync(远程同步):10 Linux中Rsync命令的实际示例](https://www.howtoing.com/rsync-local-remote-file-synchronization-commands)

– [FileGee的8种同步和备份方式](http://www.sohu.com/a/_)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177017.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:30
下一篇 2026年3月26日 下午8:31


相关推荐

  • 数字图像处理标准图像Lena的故事「建议收藏」

    数字图像处理标准图像Lena的故事「建议收藏」熟悉图像处理或者压缩的工程师、研究人员和学生经常在他们的实验或者项目任务里使用“Lenna”或者“Lena”的图像。Lenna图像已经成为被广泛使用的测试图像。今天,Lenna图像的使用被认为是数字图像历史上最重要的事件之一。然而,很少有人看过原始的图像并知道完整的关于Lenna的故事。这里3sBeta将综合收集的材料对此做一个详细的梳理。。。1.Lena图像的来源在数

    2022年6月19日
    33
  • CSS实现文字垂直居中

    CSS实现文字垂直居中CSS 实现文字垂直居中

    2026年3月19日
    1
  • coze工作中怎么上传文件

    coze工作中怎么上传文件

    2026年3月12日
    3
  • bzero等函数源代码实现

    bzero等函数源代码实现看 网络编程 对 bzero 等函数的实现颇有兴趣 于是便翻看了其源代码的实现 bzero bcopy bcmp 等函数源码如下 bzero 源码 voidbzero s1 n void s1 unsignedn registerchar t s1 while n 0 t 0 n bcopy 源码如下

    2026年3月17日
    2
  • java对象转换为json字符串_复杂json字符串转对象

    java对象转换为json字符串_复杂json字符串转对象java转换json字符串在学习如何编写基于Java的软件时,开发人员遇到的第一个障碍就是如何将其代码与其他软件连接。这通常是JSON的来源。虽然您可能是Java向导,但JSON是另一种动物。无论如何,这篇博客文章解释了完成工作所需的一切。Java对象是数据和处理可用数据的过程的组合。对象既有状态又有行为。在Java中,使用关键字“new”创建对象。对象是从称为类的模…

    2025年12月9日
    5
  • IntelliJ IDEA Console 控制台输出中文乱码终极解决

    IntelliJ IDEA Console 控制台输出中文乱码终极解决IntelliJIDEA 控制台输出中文乱码 遇到这个问题的小伙伴想必都很脑壳痛 也应该搜到很多解决方法 如果按照其它方法能解决的话 就没必要再看这篇了 这里也不再例举普遍能搜到的方式 看这里 1 检查 pom xml 文件有没有这一句 没有的话把它加上 2 假如有改过 Tomcat 配置文件 apache tomcat 7 0 104 conf logging properties 内容为 GBK 的 把它改回 UTF 8 如果 Tomcat

    2026年3月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号