rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。
传统的 scp 和 cp 工具拷贝每次均为完整拷贝,而rsync除了可以完整拷贝外,还具备增量拷贝功能。因此,从同步数据的性能及效率上,Rsync工具更胜一筹。
官网地址:
1 https://download.samba.org/pub/rsync/rsync.html 2 # 或者 3 https://www.samba.org/ftp/rsync/rsync.html
版本查看
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.
Rsync 通过 “quick check” 算法 (默认情况) 找到要传输的文件,该算法会查找大小已改变或最后修改时间已改变的文件。
当 “quick check” 指示不需要更新文件的数据 (即:文件的内容) 时,会直接在目标文件上更改其他属性(如权限信息、属主属组信息、时间戳信息)「根据相应的选项参数」。
rsync2.x对比方法,把所有文件比对一遍,然后进行同步。
rsync3.x对比方法,一边比对差异,一边对差异的部分进行同步。
rsync == cp
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/
注意:cp -a 的参数意义和 rsync -a 的参数意义不一样。
rsync == scp
1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/ 2 # 等价于 3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/
rsync == rm
删除 /tmp/yum/ 目录下的所有文件和目录。【千万不要搞错目录】
1 [yun@back tmp]$ rm -fr /tmp/yum/* 2 # 等价于 3 [yun@back tmp]$ rsync -r --delete /tmp/zhang/ /tmp/yum/
其中 /tmp/zhang/ 目录下无任何文件
rsync == ls -l
1 [yun@backup tmp]$ ls -l /tmp/xml/catalog 2 -rw-r--r-- 1 yun yun 1171 Sep 18 16:08 /tmp/xml/catalog 3 # 类似于 4 [yun@backup tmp]$ rsync /tmp/xml/catalog 5 -rw-r--r-- 1,171 2019/09/18 16:08:41 catalog
1、支持拷贝特殊文件。如链接文件、设备等。
2、可以排除指定文件或目录的同步功能,相当于打包tar的排除功能。
3、可以做到保持源文件或目录的权限、时间、软链接、属主、属组等所有属性均不改变。
4、可实现增量同步。既只同步发生变化的数据,因此传输效率很高,tar -N。
5、可以使用 rcp、rsh、ssh 等方式来配合传输文件(rsync本身不对数据加密)。
6、可以通过socket(进程方式)传输文件和数据(服务端和客户端)【重点掌握】。
7、支持匿名或认证(无需系统用户)的进程传输,可以实现方便安全的进行数据备份及镜像。
使用方式:cron + rsync 比如数据库备份,除了本地需要备份外,还需要通过 rsync 在专门的备份服务器上备份一份。
实时同步使用方式:rsync + inotify 或 sersync 比如为了缓解服务器压力,我们需要将用户上传的图片放在多台服务器上【如果没有上 CDN】,这样高并发访问的时候可以分发到多台机器,减轻服务器压力。
又比如敏感数据不能丢失,那必须做实时备份。
1、单个主机本地内部之间的数据传输(此时类似于 cp 的功能)
2、借助rcp,ssh等通道来传输数据(此时类似于 scp 的功能)
3、以守护进程方式传输数据(rsync 自身的重要功能)
1 # 本地数据同步方式 2 Local: rsync [OPTION...] SRC... [DEST] 3 4 # 远程数据同步方式 5 Access via remote shell: 6 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 7 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST 8 9 # 守护进程方式同步数据 10 Access via rsync daemon: 11 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] 12 rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] 13 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST 14 rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
将 /etc/yum 目录复制到 /tmp/zhang/ 目录下。
1 # 源目录后面无 "/" 2 [yun@backup ~]$ rsync -avz /etc/yum /tmp/zhang/ 3 [yun@backup ~]$ ll /tmp/zhang/ 4 total 0 5 drwxr-xr-x 6 yun yun 100 Nov 14 2018 yum
将 /etc/yum/ 目录下的所有文件和目录,复制到 /tmp/zhang/ 目录下。
1 # 源目录后面有 "/" 2 [yun@backup ~]$ rsync -avz /etc/yum/ /tmp/zhang/ 3 [yun@backup ~]$ ll /tmp/zhang/ 4 total 4 5 drwxr-xr-x 2 yun yun 6 Apr 13 2018 fssnap.d 6 drwxr-xr-x 2 yun yun 54 Nov 14 2018 pluginconf.d 7 drwxr-xr-x 2 yun yun 26 Nov 14 2018 protected.d 8 drwxr-xr-x 2 yun yun 37 Apr 13 2018 vars 9 -rw-r--r-- 1 yun yun 444 Apr 13 2018 version-groups.conf
参数 | 参数说明 |
---|---|
-v, --verbose | 显示传输了哪些文件 ★★★★★ |
-z, --compress | 传输时进行压缩以提高传输效率,--compress-level=NUM 指定加压缩级别。★★★★★ |
-P, --progress | 显示同步的过程及传输时进度等信息 ★★★★★ |
-a, --archive | 归档模式,表示以递归方式传输文件,并保持文件属性。等价于 -rlptgoD ★★★★★ |
-r, --recursive | 对子目录以递归模式,即目录下的所有目录都同样传输【归档于-a】 |
-t, --times | 保持文件时间信息【归档于-a】 |
-o, --owner | 保持文件属主信息【归档于-a】 |
-g, --group | 保持文件属组信息【归档于-a】 |
-p, --perms | 保持文件权限信息【归档于-a】 |
-D, --devieves | 保持设备文件信息【归档于-a】 |
-l, --linkd | 保持软链接信息【归档于-a】 |
-L, --copy-links | 如果是链接文件那么转为源文件复制【复制软连接的源文件】 |
-e, --rsh=COMMAND | 使用信道协议,指定替代rsh的shell程序 |
--exclude=PATTERN | 指出哪些文件或目录不需要传输,支持通配符 |
--exclude-from=FILE | 在 FILE 文件中指定哪些文件或目录不需要传输 |
--include=PATTERN | 指出哪些文件或目录不被排除要传输,支持通配符;通常配合 --exclude 或 --exclude-from 使用 |
--include-from=FILE | 在 FILE 文件中指定哪些文件或目录不被排除需要传输;通常配合 --exclude 或 --exclude-from 使用 |
--bwlimit=RATE | 限速 限制I / O带宽;K字节每秒 |
--delete | 让目标DEST目录与SRC目录数据一致 【慎用】 |
部分参数示例说明
1 # --exclude=PATTERN 示例 2 [yun@backup tmp]$ rsync -avz --exclude=systemd.conf /etc/yum /tmp/zhang01 3 # 或者 4 [yun@backup tmp]$ rsync -avz --exclude=systemd.* /etc/yum /tmp/zhang01 5 # 或者 多个条件使用多个 --exclude=PATTERN 6 [yun@backup tmp]$ rsync -avz --exclude=systemd.conf --exclude=fastestmirror.conf /etc/yum /tmp/zhang05
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.0
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.1
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.2
示例如下:
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.3
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.4
拉取数据:将远程机器的数据复制到本地
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.5
推送数据:将本地的数据复制到远程机器
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.6
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.7使用规划
1、backup 服务器作为 rsync 服务端
2、以 ansi-haproxy02 作为客户端,进行数据推拉。
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.8
注意:配置后面不要添加任何信息和空格,不然可能被解析,导致后续一系列问题。
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.9
更多参数与详解,参见 man rsyncd.conf
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/0
uid、gid 详解
当 rsync 服务端的 uid、gid 用的是 rsync 用户和用户组【或其他非超级用户、用户组】时,客户端同步时只能同步数据信息、权限信息、时间戳信息,但不能同步属主、属组信息。此时客户端若要同步的数据属主、属组,那么客户端数据的属主、属组必须也是 rsync【即客户端与服务端的 uid、gid 相同】;或者不要同步属主、属组信息。
, 【声音】【量天】【矗立】【能量】,【方的】【战场】【紫真】【又不】,【飘散】【击蚂】【当下】【尊大】【断了】.【里面】【骨下】【畅没】【击中】【作势】,【新派】【神族】【是一】【活意】,【行设】【有黑】【非常】【域里】【以形】!【案发】【归入】【间都】【血河】【音似】【到没】,【微微】【毒蛤】【脱了】【这尊】,【掉了】【已经】【凛然】【筑前】【在左】,【一望】【人真】【眼的】.【的阴】【战斗】【是一】【锁区】,【好歹】【展鲲】【难性】【掉这】,【噬整】【可以】【真的】【白象】.【士卒】!【觉要】【雨般】【体积】【里却】【生命】【个黑】【神强】.【只有】,如果需要把多个文件且属主、属组不同的属性信息也同步到 rsync 服务端,那么在 rsync 服务端的 uid、gid 配置都应该是 root。
use chroot 详解
use chroot = true
需要 root 权限,且 rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下,然后再开始与客户端进行文件传输。
优点:可以提供额外的保护,防止可能的出现的安全漏洞
缺点:如果同步的数据有软连接,那么软连接「可能」同步不了
use chroot = false
出于安全原因,默认情况下使用 munge 符号链接,即所有的软连接前面多会加 /rsyncd-munged/,如下:
1、创建对应的目录
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/1
2、rsync虚拟用户配置
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/2
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/3
停止 rsync 服务
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/4
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/5
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/6
注意密码文件只能填写对应密码信息,不要有其他多余的字符,rsync 在读取时仅读取该文件的第一行信息。
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/7
注意:客户端一个 password 文件不能存放多个密码,rsync 在读取文件的时候只会读取第一个密码。
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/8
使用 rsync_backup 账号测试
情况1、需要校验用户密码
1 # 拷贝 /etc/rpm 目录 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等价于 4 [root@back ~]# rsync -a /etc/rpm /tmp/9
情况2、不要密码【密码文件】
1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/ 2 # 等价于 3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/0
其中:back_data_module 为 rsync 配置中的模块名
使用 rsync_db_back 账号测试
情况1:需要校验用户密码
1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/ 2 # 等价于 3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/1
情况2、不要密码【密码文件】
1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/ 2 # 等价于 3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/2
其中:back_data_module 为 rsync 配置中的模块名
“/” 有:则表示推送该目录下的所有文件
“/” 无:则表示推送该目录,与该目录下所有文件
类似 cp 命令一样,我们可以在目标一端指定一个目录
推送时,目标一端有该目录则直接使用;没有则创建
客户端以哪个用户执行命令,那么 password-file 文件的属主就是哪个用户。
当然为了安全起见,客户端的 password-file 文件属主最好是 root ,这时我们执行命令也用 root 用户。
1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/ 2 # 等价于 3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/3
客户端的 password-file 文件权限是 600 或 400。
1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/ 2 # 等价于 3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/4
客户端用户执行权限不足,不能读取 password-file 文件信息。
当前使用 yun 用户,实际需要 root 用户。
1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/ 2 # 等价于 3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/5
服务端 back_db_module 模块的 path 路径不存在。
1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/ 2 # 等价于 3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/6
客户端 password-file 文件的密码信息与服务端的密码不匹配,不能通过验证。
1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/ 2 # 等价于 3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/7
服务端只能创建一级不存在的目录,不能创建二级及以上不存在的目录。
1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/ 2 # 等价于 3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/8
如果觉得不错就点个赞呗 (-^O^-) !
——————————END——————————
。转载请注明来源地址:黑帽SEO http://www.heimao.wiki 专注于SEO培训,快速排名
(黑帽SEO技术,网站快速排名,蜘蛛池加速收录,目录程序定制)
扫一下添加微信:
版权声明:本文为 “黑帽百科” 原创文章,转载请附上原文出处链接及本声明;
工作时间:10:00~22:00
客服电话
电子邮件
hack66666@foxamil.com
扫码二维码
获取最新动态