位置: 编程技术 - 正文

linux rsync同步命令(值得收藏)

编辑:rootadmin

推荐整理分享linux rsync同步命令(值得收藏),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

如果你是一位运维工程师,你很可能会面对几十台、几百台甚至上千台服务器,除了批量操作外,环境同步、数据同步也是必不可少的技能。

说到“同步”,不得不提的利器就是rsync,今天就来说说我从这个工具中看到的同步的艺术。

[不带任何选项]

我们经常这样使用rsync:

1 只要目的端的文件内容和源端不一样,就会触发数据同步,rsync会确保两边的文件内容一样。

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

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

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

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

[-t选项]

我们经常这样使用-t选项:

1 使用-t选项后,rsync总会想着一件事,那就是将源文件的“modify time”同步到目标机器。

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

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

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

[-I选项]

我们经常这样使用-I选项:

1 -I选项会让rsync变得很乖很老实,它会挨个文件去发起数据同步。

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

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

【-v选项】

这个选项,简单易懂,就是让rsync输出更多的信息,我们可以举一个例子:

你增加越多的v,就可以获得越多的日志信息。

[-z选项]

这是个压缩选项,只要使用了这个选项,rsync就会把发向对端的数据先进行压缩再传输。对于网络环境较差的情况下建议使用。

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

[-r选项]

我们在第一次使用rsync时,往往会遇到这样的?寰常?/p>

如果你不额外告诉rsync你需要它帮你同步文件夹的话,它是不会主动承担的,这也正是rsync的懒惰之处。

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

我们在上面的讲解中说过,如果时间戳和文件大小完全一致,只有文件内容不同,且你没有使用-I选项的话,那么,rsync是不会进行数据同步的。

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

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

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

[-l选项]

linux rsync同步命令(值得收藏)

如果我们要同步一个软链接文件,你猜rsync会提示什么?

嗯,你猜对了,rsync又无情地拒绝了我们。它一旦发现某个文件是软链接,就会无视它,除非我们增加-l选项。

使用了-l选项后,rsync会完全保持软链接文件类型,原原本本的将软链接文件复制到目的端,而不会“follow link”到指向的实体文件。

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

[-p选项]

这个选项的全名是“perserve permissions”,顾名思义,就是保持权限。

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

1 如果目的端没有此文件,那么在同步后会将目的端文件的权限保持与源端一致;

2 如果目的端已存在此文件,那么只会同步文件内容,权限保持原有不变。

如果你使用了-p选项,则无论如何,rsync都会让目的端保持与源端的权限一致的。

[-g选项和-o选项]

这两个选项是一对,用来保持文件的属组(group)和属主(owner),作用应该很清晰明了。不过要注意的一点是,改变属主和属组,往往只有管理员权限才可以。

[-D选项]

-D选项,原文解释是“preserve devices(root only)”,从字面意思看,就是保持设备文件的原始信息。由于博主没有实际体验过它的好处,所以没有太多发言权。

[-a选项]

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

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

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

[--delete选项、--delete-excluded选项和--delete-after选项]

三个选项都是和“删除”有关的:

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

2 ?delete-excluded:专门指定一些要在目的端删除的文件。

3 ?delete-after:默认情况下,rsync是先清理目的端的文件再开始数据同步;如果使用此选项,则rsync会先进行数据同步,都完成后再删除那些需要清理的文件。

看到这么多delete,你是否有点肝颤? 的确,在rsync的官方说明里也有这么一句话:

This option can be dangerous if used incorrectly! It is a very good idea to run first using the dry run option(-n) to see what files would be deleted to make sure important files aren't listed.

从这句话里,我们学到了一个小技巧,那就是-n选项,它是一个吓唬人的选项,它会用受影响的文件列表来警告你,但不会真的去删除,这就让我们有了确认的机会和回旋的余地。我们看看实际用法吧:

[--exclude选项和--exclude-from选项]

如果你不希望同步一些东西到目的端的话,可以使用?exclude选项来隐藏,rsync还是很重视大家隐私的,你可以多次使用?exclude选项来设置很多的“隐私”。

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

[--partial选项]

这就是传说中的断点续传功能。默认情况下,rsync会删除那些传输中断的文件,然后重新传输。但在一些特别情况下,我们不希望重传,而是续传。

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

[--progress选项]

使用这个选项,rsync会显示出传输进度信息,有什么用呢,rsync给了一个很有意思的解释:

This gives a bored user something to watch.

好了,写了这么多,大家看的已经很乏味了,去实际用用?progress解解闷,是个不错的选择 ^_^

下面给大家介绍的是rsync参数的具体解释:

-v, --verbose 详细模式输出 -q, --quiet 精简输出模式 -c, --checksum 打开校验开关,强制对文件传输进行校验 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD -r, --recursive 对子目录以递归模式处理 -R, --relative 使用相对路径信息 -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 --backup-dir 将备份文件(如~filename)存放在在目录下。 -suffix=SUFFIX 定义备份文件前缀 -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件) -l, --links 保留软链结 -L, --copy-links 想对待常规文件一样处理软链结 --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结 --safe-links 忽略指向SRC路径目录树以外的链结 -H, --hard-links 保留硬链结 -p, --perms 保持文件权限 -o, --owner 保持文件属主信息 -g, --group 保持文件属组信息 -D, --devices 保持设备文件信息 -t, --times 保持文件时间信息 -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间 -n, --dry-run现实哪些文件将被传输 -W, --whole-file 拷贝文件,不进行增量检测 -x, --one-file-system 不要跨越文件系统边界 -B, --block-size=SIZE 检验算法使用的块尺寸,默认是字节 -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步 --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息 -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件 --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件 --delete 删除那些DST中SRC没有的文件 --delete-excluded 同样删除接收端那些被该选项指定排除的文件 --delete-after 传输结束以后再删除 --ignore-errors 及时出现IO错误也进行删除 --max-delete=NUM 最多删除NUM个文件 --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输 --force 强制删除目录,即使不为空 --numeric-ids 不将数字的用户和组ID匹配为用户名和组名 --timeout=TIME IP超时时间,单位为秒 -I, --ignore-times 不跳过那些有同样的时间和长度的文件 --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间 --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0 -T --temp-dir=DIR 在DIR中创建临时文件 --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份 -P 等同于 --partial --progress 显示备份过程 -z, --compress 对备份的文件在传输时进行压缩处理 --exclude=PATTERN 指定排除不需要传输的文件模式 --include=PATTERN 指定不排除而需要传输的文件模式 --exclude-from=FILE 排除FILE中指定模式的文件 --include-from=FILE 不排除FILE指定模式匹配的文件 --version 打印版本信息 --address 绑定到特定的地址 --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件 --port=PORT 指定其他的rsync服务端口 --blocking-io 对远程shell使用阻塞IO -stats 给出某些文件的传输状态 --progress 在传输时现实传输过程 --log-format=formAT 指定日志文件格式 --password-file=FILE 从FILE中得到密码 --bwlimit=KBPS 限制I/O带宽,KBytes per second -h, --help 显示帮助信息 一般同步传输目录都使用azv选项.

Linux 命令每天必学()之du命令 Linuxdu命令也是查看使用空间的,但是与df命令不同的是Linuxdu命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的.du/bin和du-s/bin有什

Linux du命令查看文件夹大小并按降序排列 1.df-lh2.du-s/usr/*|sort-rn这是按字节排序3.du-sh/usr/*|sort-rn这是按兆(M)来排序4.选出排在前面的个du-s/usr/*|sort-rn|head5.选出排在后面的个du-s/usr/*|sort-rn|taild

linux awk时间计算脚本及awk命令详解 在linux如果计划时间是个麻烦事,用awk脚本如下BEGIN{FS=":";OFS=":"}{total_seconds=total_seconds+$3}total_seconds={total_seconds=total_sconds-$2=$2+1}{total_minutes=total_minutes+$2

标签: linux rsync同步命令(值得收藏)

本文链接地址:https://www.jiuchutong.com/biancheng/371396.html 转载请保留说明!

上一篇:linux rsync安装 配置 实例详解(rsync安装使用详解)

下一篇:Linux 命令每天必学(34)之du命令(每日一个linux命令)

  • 个人所得税个人信息怎么填写
  • 个体户可选择不交税吗
  • 企业办理纳税手续需要带什么材料
  • 关税是价内税还是税外税
  • 发生租赁费用怎么做账
  • 以前暂估的成本,年终要冲销怎么做账
  • 个体工商户网上报税流程
  • 企业重组失败会怎么样
  • 工会签约有什么好处
  • 企业所得税的应纳税所得额的扣除项目有哪些
  • 公司收到一张专用发票
  • 税务自查补缴税款算滞纳金么
  • 政府补助的失业金发放准时吗
  • 固定基金怎么算
  • 算材料成本的时候要算增值税吗?
  • 房地产退房款会计分录
  • 材料含税价怎么算
  • 给分公司开发票由总公司付款怎么办?
  • 代扣业务员佣金怎么做账
  • 价外费用的会计和税务处理
  • 每月免税10万是什么意思
  • 权益乘数公式
  • 领款凭证可以当收据吗
  • 递延所得税怎么产生
  • 认缴制下收到股东转入的钱怎么入账
  • 腾讯手游助手使命召唤怎么滑铲
  • 进口增值税属于海关代征的税收吗
  • 收到投资方投入原材料
  • 银行退回手续费的账务处理
  • 公司福利放置零食文案
  • uniapp使用高德地图创建多边形
  • vue解决数据量过大的问题
  • 申请代开增值税专用发票有金额限制吗
  • php 截断
  • 细说php
  • vue3.0安装
  • 工程结算 增值税
  • 增值税留抵税额科目如何使用
  • 一般纳税人销售自行开发的软件产品
  • 周转材料二级科目有哪些
  • SqlServer与MongoDB结合使用NHibernate
  • ubuntu中安装opencv
  • 个体工商户未年报 经营异常罚款
  • 需要做审计有哪些行业
  • 控股公司的收入怎么计算
  • 差额征税的专用发票能抵扣吗
  • 在windowsxp的应用程序中,经常
  • mysql数据库中进入mysql库的命令
  • 税前列支的项目
  • 员工罚款从工资中代扣
  • 收到投资款如何做账务处理
  • 参加新冠疫情防控工作感悟 医务人员
  • 探望生病员工属于什么费用
  • 单位收走三方协议
  • 财务报表的一般构成要素
  • 劳务报酬个税如何入账
  • 支付给个人的劳务费需要发票吗
  • 对方发票丢失怎么申报丢失
  • 企业投资人类型怎么选
  • mysql表字段设置默认值
  • 在windows的命令提示符下,命令名在实际输入时规定
  • win10系统共享打印机无法访问怎么解决
  • centos6.7防火墙
  • 本地磁盘安装
  • SUSE Linux Enterprise Server 设置防火墙开启ssh远程端口的方法
  • qctray.exe - qctray进程 是什么文件 作用是什么
  • linux在服务器的份额
  • 电脑window8系统怎么样
  • cocos2d-x 3.3 final 适配安卓5.0机型小记
  • opengl 函数可以在子线程中调用吗
  • javascript日期加减
  • jquery 延迟对象
  • 常见的shell脚本
  • javascript含义
  • android 4.2
  • 郑州地铁客服热线电话
  • 河南电子发票申请流程
  • 划拨土地评估价
  • 杨浦区办理健康证地点
  • 高山白茶和普通白茶的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设