rsync 命令详解

rsync 命令详解rsync 的命令格式 rsync OPTION SRCDEST 推荐在 SSH 的基础上使用 rsync 可以事先在 ssh config 中加入配置 这样远端可以写作 SSH 配置名 路径 目录 SRC 是否以斜杠结尾 会影响同步的结果 以斜杠结尾 目录 DEST 里面有 目录 SRC 里面的文件 不以斜杠结尾 目录 DEST 里面有 目录 SRC 本身 目录 DEST 是否以斜杠结尾 对同步的结果没有任何影响 转载 标题 rsync 同步的艺术作者 roc 原文 http roclinux cn

目录SRC是否以斜杠结尾,会影响同步的结果:

我们经常这样使用rsync:

但rsync不会同步文件的 modify time ,凡是有数据同步的文件,目的端的文件的 modify time 总是会被修改为最新时刻的时间。

rsync不会太关注目的端文件的 rwx 权限,如果目的端没有此文件,那么权限会保持与源端一致;如果目的端有此文件,则权限不会随着源端变更。

只要rsync有对源文件的读权限,且对目标路径有写权限,rsync就能确保目的端文件同步到和源端一致。

rsync只能以登陆目的端的账号来创建文件,它没有能力保持目的端文件的输主和属组和源端一致。除非你使用 root 权限,才有资格要求属主一致、属组一致。

带有-t选项的rsync,会变得更聪明些,它会在同步前先对比两边文件的时间戳和文件大小,如果一致,则就认为两边文件一样,对此文件就不再采取更新动作了。

因为rsync的聪明,也会反被聪明误。如果目的端的文件的时间戳、大小和源端完全一致,但是内容恰巧不一致时,rsync是发现不了的。这就是传说中的“坑”!

对于rsync自作聪明的情况,解决办法就是使用-I选项。

-I选项可以确保数据的一致性,代价便是速度上会变慢,因为我们放弃了 quick check 策略。 quick check 策略,就是先查看文件的时间戳和文件大小,依次先排除一批认为相同的文件。

无论情况如何,目的端的文件的 modify time 总会被更新到当前时刻。

一般情况下,-z的压缩算法会和 gzip 的一样。

所以,如果你真的想同步文件夹,那就要加上-r选项,即 recursive(递归的、循环的),像这样:

那么,提个问题:“因为在Linux的世界里,文件夹也是文件,如果这类文件(文件夹)也只有内容不同,而时间戳和文件大小都相同,rsync会发现么?”

实验大家可以自己动手做,结论在这里告诉大家:

对于文件夹,rsync是会明察秋毫的,只要你加了-r选项,它就会恪尽职守的进入到文件夹里去检查,而不会只对文件夹本身做 quick check 的。

如果我偏偏就想让rsync采取 follow link 的方式,那就用-L选项就可以了。你可以自己试试效果。

如果你不使用此选项的话,rsync是这样来处理权限问题的:

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

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

-delete选项必须和-r选项搭配使用。

-delete-excluded选项必须和-r选项搭配使用。

-delete-after选项必须和-r选项搭配使用。

This option can be dangerous if used incorrectly!

如果你要隐藏的隐私太多的话,在命令行选项中设置会比较麻烦,rsync还是很体贴,它提供了-exclude-from选项,让你可以把隐私一一列在一个文件里,然后让rsync直接读取这个文件就好了。

-include选项可以被多次使用。-include-from选项用于指定文件中读取文件列表。

请注意 exclude 和 include 的先后顺序。先 exclude 再 include。

我们在使用中,经常会看到有人会使用-P选项,这个选项其实是为了偷懒而设计的。以前人们总是要手动写-partial -progress,觉得太费劲了,倒不如用一个新的选项来代替,于是-P应运而生了。有些读者会问-partial我知道作用了,可-progress是干什么用的呢?为什么很多人要使用它呢,它有那么大的吸引力?

真有……

PS:后续会讲解有关rsync的-exclude的 PATTERN 语法。

谢谢!

转载:

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

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

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


相关推荐

  • pycharm 中切换虚拟环境的总结

    pycharm 中切换虚拟环境的总结一、理清思路太重要了1、首先了解对应虚拟环境的运行机制你才能找到正确的解决方案2、分享我个人遇到的问题及解决方案首先安装好了django框架后,在cmd里面能正常运行,但是在Pycharm里面总是不能运行成功,老是报没有激活的问题。首先我们来看在cmd中成功运行的界面:在cmd里面我们切换至对应工程的路径输入命令:pythonmanage.pyrunserver127.0.0.1:8888,我们可以看到Startingdevelopmentserverathttp://127.0

    2022年8月28日
    4
  • python中的type和object详解

    python中的type和object详解关于这篇博客这篇博客主要描述Python的新风格对象(newstyleobjects),如下:1.和分别是什么?2.用户自定义的类和实例之间是怎么联系的?它们和内置类型又是怎么联系的?

    2022年7月5日
    25
  • linux非root用户启动nginx,Linux 普通用户启动nginx

    linux非root用户启动nginx,Linux 普通用户启动nginx现象nginx配置的user为www用户,root启动之后主进程显示root,子进程显示是www,但是切换到www用户之后执行nginx-t等报错services@pts/0$/usr/local/nginx/sbin/nginx-tnginx:[warn]the”user”directivemakessenseonlyifthemasterprocess…

    2026年4月14日
    7
  • 显示屏如何检测坏点(手机屏幕坏点检测图片)

    文章来源:http://bbs.50bang.com/read.php?tid=23543通过debug检测屏幕颜色显示坏点、低格硬盘等等技巧通过如下方法,可以方便地在手头么有工具特情况下检测LCD显示器的坏点  购买LCD显示器最忌有亮点或暗点,我们可以借助相关的检测软件来辅助查看,但在配电脑时,老板常常不让我们装软件,其实利用Debug中的F命令就可以看得清清楚楚!  为了检测LCD屏…

    2022年4月17日
    241
  • GMT时间日期格式

    GMT时间日期格式GMT amp 时间日期格式 GMT 格林尼标准时间北京时间 GMT 时间 8 小时格林尼治平均时 GMT GreenwichMea 格林威治是英国伦敦泰晤士河南岸的一个地方 由于从 19 世纪开始 因为世界各国来往频繁 而欧洲大陆 美洲大陆和亚洲大陆都有各自的时区 所以为免混乱 各国的代表就在 1884 年在美国华盛顿召开了国际大会 通过协议选出伦敦的格林威治 作为全球时间的中心

    2026年3月16日
    2
  • Quartus II 13.1的安装及使用

    Quartus II 13.1的安装及使用QuartusII的安装及使用前言一、QuartusII的下载二、QuartusII的安装三、QuartusII的注册四、QuartusII的使用(一)相关驱动的配置(二)使用流程的认识(三)使用过程总结前言本文章是对QuartusII13.1的安装及使用方法的介绍说明。一、QuartusII的下载百度网盘下载链接:https://pan.baidu.com/s/1a9d-bq9RZmWrRV542X4IEA提取码:ifte说明:本链接来自于正点原子官方资料下载二、

    2022年10月16日
    3

发表回复

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

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