rsync 可实现全量及增量的本地或远程数据镜像同步备份的优秀工具
rsync官方详细说明:http://www.samba.org/ftp/rsync/rsync.html
rsync学习视频:https://blog.51cto.com/oldboy/1216457html
rsync学习整理笔记
1.1 rsync 一种快速、通用、远程(和本地)文件复制工具
rsync特性:
1.支持拷贝特殊文件如连接、设备等;
2.能够有排除指定文件或目录的同步功能,至关于打包命令tar的排除功能;
3.能够作到保持原文件或目录的权限、时间、软硬连接、属主、组等全部属性均不改变;
4.可实现增量同步,既只同步发生变化的数据,所以数据传输效率很高;
5.可使用rcp.rsh.ssh等方式来配合传输文件,也能够直接经过socket(进程方式)传输;
6.支持匿名的或认证的进程模式传输,可实现方便安全的进行数据备份及镜像。
7.不须要超级用户权限linux
1.2 rsync 工做方式:
1.主机本地间的数据传输;
2.借助rcp、ssh等通道来传输数据(相似scp命令);
3.以守护进程socket的方式传输数据(这个是rsync重要功能)。web
1.2.1 本地数据传输模式 local-only model
rsync本地传输模式语法:
rsync [OPTION...] SRC... [DEST]
语法说明:
1.rsync 为同步命令
2.[OPTION]为同步时的参数选项
3.SRC为源,即待拷贝的分区、文件或目录等
4.[DEST]为目的分区、文件或目录等shell
示例1:把系统的hosts文件同步到opt目录vim
[root@root /]# rsync /etc/hosts /opt/ <== cp -p /etc/hosts /opt/
示例2:把opt目录拷贝到mnt目录下windows
[root@root /]# rsync -avz /opt/ /mnt/ <== cp -ap /opt/ /mnt/
1.2.2 经过远程shell进行数据传输remote shell model
经过远程shell访问:
拉取Pull:rsync [OPTION...] [USER @]HOST:SRC ... [DEST]
推送Push:rsync [OPTION...] SRC ... [USER @] HOST:DEST
语法说明:
1.rsync 为同步命令;
2.[OPTION...]为同步时的参数选项;
3.[USER @]HOST: 为Rsync同步的远程地链接用户和主机地址;
4.SRC为源;
5.DEST为目的
拉取(get),表示从远端主机把数据同步到执行命令的本地主机相应目录;
推送(put),表示从本地主机执行命令把本地的数据同步到远端主机指定的目录下。安全
拉取示例语法:远端opt目录抓取到本地tmp目录
rsync -vartopgP -e '-ssh -p 22' root@192.168.119.119:/opt/ /tmp/
推送实用语法:本地hosts文件推送到远端家目录
rsync -avz /etc/hosts -e 'ssh -p 22' root@192.168.119.119:~
关键语法说明:服务器
1.2.3 使用守护进程的方式数据传输 daemon mode
经过守护进程方式传输一样分为两种状况,每种状况又有两种语法写法。分别以下:
经过rsync守护进程访问:
拉取:Pull
rsync [OPTION ...] [USER @] HOST :: SRC ... [DEST]
rsync [OPTION ...] rsync: // [USER @] HOST [:PORT] / SRC ... [DEST]
推送:Push
rsync [OPTION ...] SRC ... [USER @] HOST :: DEST
rsync [OPTION ...] SRC .. . rsync:// [USER @] HOST [:PORT] / DEST
特别值得注意的是,与远程shell方式的命令不一样的是,第一种语法格式,本节命令[USER @] HOST :: DEST 结尾处,均为双冒号链接SRC与DEST,另外,这个SRC或DEST也不在是路径了,而是守护进程中配置的模块名称,下文会有例子详细说明。
拉取实践命令:架构
>>>rsync -vzrtopgP rsync://rsync_backup@192.168.1.1:/tmp/ /opt/ \ --password-file=/etc/rsync.password #自动读取密码文件中的密码,免密登陆
推送实践命令:并发
>>>rsync -vzrtopgP /test/ rsync://rsync_backup@192.168.1.1:/tmp/ \ --password-file=/etc/rsync.password #自动读取密码文件中的密码,免密登陆
特别说明:以上的用法是个不错的方法,他在拉取和推送时的写法极其相似,尤为是最后的守护进程服务时,第一种方法经过双冒号家加模块名的方法不利于记忆。因此对于初学者,建议你们也能够记忆这个语法格式。
1.3 rsync 命令同步参数选项
rsync [IPTION...] SRC... [DEST]
经常使用参数选项说明:
-v, --verbose 详细模式输出,传输时的进度等信息;
-z, --compress 传输时进行压缩以提升传输效率, --compress-level=NUM可按级别压缩;
-r, --recursive 对子目录以递归模式,即目录下的全部目录都一样传输,注意小写r;
-t, --times 保持文件时间信息;
-o, --owner 保持文件属主信息;
-p, --perns 保持文件权限;
-g, --group 保持文件属组信息;
-P, --progress 显示同步的过程及传输时的进度等信息;
-a, --archive 归档模式(archive mode),表示以递归的方式传输文件,并保持全部文件属性,等于 -rtopgDl;
-D, --devices 保持设备文件信息;
-l, --links 保留软连接;
-e, --rsh=COMMAND 使用的信道协议,指定代替rsh的shell程序。例如:ssh --exclude=PATTERN 指定排除不须要传输的文件模式
保持同步目录及文件属性:
这里的-avzP 至关于 -vzrtopDlP (还多了个Dl功能),生产环境经常使用的参数选项为-avzP或者-vzrtopgP若是是放在加入脚本中,也能够把-v和-pqudiao 。这里的--progress 能够用-P代替。
特别提示:请注意一下两个命令的差异:
a. rsync -avz /opt/ /tmp/
b. rsync -avz /opt /tmp/
1.中/opt/意思是,仅把opt目录里面的内容同步过来,opt目录自己并不一样步,然后者b中/opt表示把opt自己及其内容所有同步到/tmp/下,仅一个/(斜杠之差),意义就大不相同,请注意使用的差异。
2.后面要说的经过远程shell进行数据传输的内容也会有相似的问题,请牢记。
1.4 借助ssh通道在不一样主机间传输数据
借助ssh通道从远端主机拉取数据例子实践:
1.4.1 拉取实践:
[root@root ~]# rsync -avzP -e 'ssh -p 22' root@10.0.0.1:/opt /tmp
关键语法说明:
[root@root ~]# rsync -avzP -e 'ssh -p 22' root@10.0.0.11:/opt /tmp
1.4.2 借助ssh key密钥实现数据免密登陆验证加密传输
说明:若是事先设置了ssh key密钥免登陆验证,便可用rsync经过ssh方式免登陆验证同步传输数据,这是生产场景经常使用的方法之一。
配置ssh key密钥实现数据免登陆验证:
https://blog.51cto.com/000011211684/1693597
轻松实现远程批量拷贝文件脚本:
https://blog.51cto.com/oldboy/1205715
特别提示:本文免验证链接分发文件是基于普通用户oldboy的,若是要实现hosts文件等的推送工做,是须要root权限的,咱们应该怎么办呢?
方法大概有三:
方法一:此时能够把oldboy用户配置sudo权限用户,而后就能够实现经过sudo功能来实现普通用户推送只有root才能处理的问题了,此法为推荐的方法。
方法二:还记得前面讲的setuid权限位么?能够把全部客户端如echo、cp、scp命令,修改成setuid位,这样在推送文件时就可使用以上命令,来搞定了。不过这个方法,不推荐。
方法三:能够配置root用户的免密登陆认证,但这又会带来必定的安全问题(虽然能够防火墙封堵ssh端口),此方法比方法一稍逊一筹。
更详细的说明可见ssh key的相关章节, 分发数据免密码登陆的几点须知!
-e, - rsh = COMMAND 指定要使用的远程shell
1.5 rsync守护进程传输文件
1.5.1 rsync服务端配置
编辑rsync配置文件并启动rsync服务
[root@root ~]# vim /etc/rsyncd.conf #rsync服务端配置,没有的话须要手动生成 uid = rsync ##运行rsync守护进程的用户-rsync gid = rsync ##运行rsync守护进程的组-rysnc use chroot = no ##不实用chroot max connections = 200 ##并发设置及最大链接数 strict modes = yes ##是否检查口令文件权限 #port = 873 ##rsync服务默认端口873 timeout = 100 ##超时设置 ###安装完rsync服务后自动生成的文件,添加一下也无妨### pid file = /var/run/rsyncd.pid ##pid文件的存放位置 lock file = /var/run/rsync.lock ##锁文件的存放位置 log file = /var/log/rsyncd.log ##日志记录文件的存放位置 ###模块参数配置#### [oldboy] ##模块名,可根据实际状况设定 path = /oldboy/ ##备份路径 comment = This is a oldboy. ##这是模块注释信息,可忽略。 ignore errors ##能够忽略一些无关的IO错误 read only = false ##只读为假,可写文件 list - false ##不容许列文件 hosts allow = 192.168.120.0/24 ##容许主机 hosts deny = 0.0.0.0/32 ##禁止主机 auth users =rsync_backup #认证用户/受权用户,若是没有这行则代表是匿名,此用户与系统无关 secrets file = /etc/rsync.password #上面虚拟用户的密码文件:明文的
dos2unix /etc/rsyncd.conf (格式化,当windows文件拉入linux中时操做因为格式问题能够先格式化一下)
[root@root /]# useradd rsync -s /sbin/nologin -M #添加用户不用登录不须要家目录 [root@root /]# mkdir /oldboy [root@root /]# chown -R rsync.rsync oldboy [root@root /]# chown -R rsync.rsync oldboy
配置用于rsync同步的帐号、密码及帐号文件权限
[root@root etc]# echo "rsync_backup:oldboy" >> /etc/rsync.password [root@root etc]# cat rsync.password rsync_backup:oldboy [root@root etc]# ls -l rsync.password -rw-r--r--. 1 root root 20 12月 21 17:45 rsync.password [root@root etc]# chmod 600 /etc/rsync.password #明文密码文件权限给到最小-保密 [root@root etc]# ll rsync.password -rw-------. 1 root root 20 12月 21 17:45 rsync.password
rsync启动服务
[root@root etc]# rsync --daemon ##后台运行rsync服务 [root@root etc]# netstat -natp | grep rsync tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 9985/rsync tcp 0 0 :::873 :::* LISTEN 9985/rsync [root@root etc]# lsof -i :873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 9985 root 4u IPv4 35058 0t0 TCP *:rsync (LISTEN) rsync 9985 root 5u IPv6 35059 0t0 TCP *:rsync (LISTEN) [root@root etc]# ps -ef | grep 873 root 10005 9801 0 17:50 pts/1 00:00:00 grep 873
1.5.2 rsync客户端配置
##设定密码文件,注:客户端密码文件路径与服务端全无关系,弄得同样便于记忆 [root@root /]# echo "oldboy" > /etc/rsync.password [root@root /]# cat rsync.password oldboy [root@root etc]# ls -l rsync.password -rw-r--r--. 1 root root 20 12月 21 17:45 rsync.password #明文密码文件权限给到最小600,切莫忘记否则后续从客户端推送数据时会报错 [root@root etc]# chmod 600 /etc/rsync.password [root@root etc]# ll rsync.password -rw-------. 1 root root 20 12月 21 17:45 rsync.password
1.5.3 下面进行守护进程传输文件测试:
rsync服务端192.168.120.120
rsync客户端192.168.120.121
要求:将本地客户端的web数据打包备份后传输到服务端上
[root@root www]# man rsync ##经过man手册能够看下rsync守护进程语法格式(以前详细介绍过) rsync(1) rsync(1) NAME rsync — a fast, versatile, remote (and local) file-copying tool SYNOPSIS Local: rsync [OPTION...] SRC... [DEST] ##本地传输模式 Access via remote shell: ##经过shell传输的语法格式 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST Access via rsync daemon: ##经过守护进程传输的语法格式 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST ...省略若干...
1.5.3.1 守护进程备份操做-Pull推送(适用于数据备份)
#使用tar命令打包本地web数据,参数中的"-"符号加与不加功能同样 [root@root www]# tar -zcvf html_$(date +%F).tar.gz html html/ [root@root www]# ll 总用量 28 drwxr-xr-x. 2 root root 4096 8月 2 2013 cgi-bin drwxr-xr-x. 3 root root 4096 11月 19 22:12 error drwxr-xr-x. 2 root root 4096 8月 2 2013 html -rw-r--r--. 1 root root 109 12月 21 21:13 html_2018-12-21.tar.gz drwxr-xr-x. 3 root root 4096 11月 19 22:12 icons drwxr-xr-x. 14 root root 4096 11月 19 22:17 manual drwxr-xr-x. 2 webalizer root 4096 11月 19 22:15 usage ##客户端经过守护进程方式传输web备份数据 [root@root www]# rsync -azvp html_2018-12-21.tar.gz rsync_backup@192.168.120.120::oldboy Password: sending incremental file list html_2018-12-21.tar.gz sent 196 bytes received 27 bytes 49.56 bytes/sec total size is 109 speedup is 0.49
注意:
##使用上面rsync这条命令语句还须要填写密码,传输比较麻烦,只须要在后面加上 --password-file=/etc/rsync.password 引用密码文件就能达到免密传输的效果
>>推送1 rsync -azvp html_2018-12-21.tar.gz rsync_backup@192.168.120.120::oldboy --password-file=/etc/rsync.password >>推送2 rsync -azvp html_2018-12-21.tar.gz rsync://rsync_backup@192.168.120.120/oldboy --password-file=/etc/rsync.password
语法解释:看不懂这条命令的,请参考上面的1.2.3 使用守护进程的方式数据传输 部分。
1.5.3.2 进入rsync服务端查看客户端的备份数据
[root@root etc]# cd /oldboy/ ##进入指定的path路径 [root@root oldboy]# ll 总用量 4 -rw-r--r--. 1 rsync rsync 109 12月 21 21:13 html_2018-12-21.tar.gz
1.5.3.3 rsync使用过程当中的报错整理
错误1: rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.2]
解决:很大多是服务器端没有开启 rsync 服务,开启服务。 或者开启了防火墙指定的端口没法访问。
错误2:@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]
解决:服务器端同步目录没有权限,cwrsync默认用户是Svcwrsync。为同步目录添加用户Svcwrsync权限。
错误3:@ERROR: failed to open lock file
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]
解决:服务器端配置文件 rsyncd.conf中添加 lock file = rsyncd.lock 便可解决。
错误4:@ERROR: invalid uid nobody
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.2]
解决:在rsyncd.conf文件中添加下面两行便可解决问题 。(添加守护进程用户+组)
UID = 0
GID = 0
错误5:@ERROR: auth failed on module test2
rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=3.0.2]
解决:服务端没有指定正确的secrets file,请在 [test2]配置段添加以下配置行:
auth users = coldstar #同步使用的账号
secrets file = rsyncd.password #密码文件
错误6:password file must not be other-accessible
解决:客户端的pass文件要求权限为600, chmod 600 /etc/rsync.pass 便可。
错误7:rsync: chdir /cygdrive/c/work failed
: No such file or directory (2)
解决:服务器端同步文件夹路径或名称写错了,检查path。
错误8:No route to hosts
解决:先telnet一下,出现链接拒绝,表示被防火墙阻挡,能够关闭防火墙。
===============================================================
rsyncserver 服务启动时报错“rsyncserver服务启动后又中止了。一些服务自动中止,若是它们没有什么可作的,例如“性能日志和警报”服务。”
解决方法:将安装目录下的rsyncd.pid文件删除,再从新启动RsyncServer服务。通常是异常关机致使的。
1.5.4 备份全网服务器数据生产架构方案案例模型
上机实战考试题:
某公司里有一台web服务器,里面的数据很重要,可是若是硬盘坏了,数据就会丢失,如今领导要求你把数据在其它机器上作一个周期性定时备份。要求以下:
天天晚上0点整在web服务器A上打包备份网站程序目录并经过rsync命令推送到服务器B上备份保留(备份思路能够是先在本地按日期打包,而后在推到备份服务器上)
具体要求以下:
1.web服务器A和备份服务器B的备份目录都必须为/backup
2.web服务器站点目录嘉定为(/var/www/html)
根据 1.5 rsync守护进程传输文件 的配置作修改。其中rsync服务端=备份服务器,rsync客户端=web服务器。
1.5.4.1 web服务器A配置 192.168.120.121
[root@root etc]# mkdir -p /backup/192.168.120.121 [root@root etc]# chown -R rsync /backup/ [root@root etc]# cd /study/ [root@root study]# vim web_bak.sh ##编辑web服务器备份脚本 cd /var/www/ &&\ tar -zcvf /backup/192.168.120.121/html_$(date +%F).tar.gz ./html &&\ ##备份数据打包 cd /backup/ &&\ rsync -azvp . rsync_backup@192.168.120.120::backup --password-file=/etc/rsync.password >/dev/null 2>&1 find /backup -type f -name "*.tar.gz" -mtime +7 | xargs rm -f [root@root study]# crontab -e ##添加定时任务 00 00 * * * sh /study/web_bak.sh >/dev/null 2>&1
1.5.4.2 备份服务器B配置 192.168.120.120
[root@root ~]# cd /etc/ [root@root etc]# cp rsyncd.conf rsyncd.conf_bak [root@root etc]# vim rsyncd.conf [backup] ##该模块名,通常都弄一致便于记忆 path = /backup/ ##修改备份目录 [root@root etc]# mkdir /backup [root@root etc]# chown -R rsync /backup/ [root@root backup]# pkill rsync #杀掉rsync服务 [root@root backup]# lsof -i :873 [root@root backup]# rsync --daemon #从新启动rsync服务 [root@root backup]# lsof -i tcp:873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 16058 root 4u IPv4 50262 0t0 TCP *:rsync (LISTEN) rsync 16058 root 5u IPv6 50263 0t0 TCP *:rsync (LISTEN)
1.5.5 守护进程分发操做-Push拉取(适用于数据分发)
##web服务器上数据拉取操做## [root@root study]# rsync -azvp rsync_backup@192.168.120.120::backup /mnt --password-file=/etc/rsync.password receiving incremental file list ./ 192.168.120.121/ 192.168.120.121/html_2018-12-22.tar.gz sent 90 bytes received 341 bytes 862.00 bytes/sec total size is 111 speedup is 0.26 [root@root study]# cd /mnt/ [root@root mnt]# ll 总用量 4 drwxr-xr-x. 2 501 501 4096 12月 22 03:10 192.168.120.121
1.5.5 分发数据生产架构方案案例模型
下载、分发数据。
1.6 rsync应用拓展排除打包
首先看tar如何进行排除打包 [root@root 192.168.120.121]# cd /study/ [root@root study]# ll 总用量 20 -rw-r--r--. 1 root root 1471 12月 21 14:32 ssh_expect.sh -rw-r--r--. 1 root root 17 12月 21 14:26 ssh_host_ip.txt -rw-r--r--. 1 root root 458 12月 21 14:33 ssh_host.sh -rw-r--r--. 1 root root 1048 12月 21 14:28 ssh_host.sh_bak -rw-r--r--. 1 root root 303 12月 22 01:18 web_bak.sh ##使用 --exclude 排除web_bak.sh打包 [root@root study]# tar -zcvf a.tar.gz ./* --exclude=web_bak.sh ./ssh_expect.sh ./ssh_host_ip.txt ./ssh_host.sh ./ssh_host.sh_bak [root@root study]# tar -ztvf a.tar.gz ##查看下打包内容 -rw-r--r-- root/root 1471 2018-12-21 14:32 ./ssh_expect.sh -rw-r--r-- root/root 17 2018-12-21 14:26 ./ssh_host_ip.txt -rw-r--r-- root/root 458 2018-12-21 14:33 ./ssh_host.sh -rw-r--r-- root/root 1048 2018-12-21 14:28 ./ssh_host.sh_bak
rsync也可使用--exclude 参数进行排除传输文件
[root@root backup]# mkdir a b d c ##建立文件a、b、c、d四个文件进行排除推送测试 [root@root backup]# touch a/1 b/2 c/3 d/4 [root@root backup]# tree . ├── 192.168.120.121 │ └── html_2018-12-22.tar.gz ├── a │ └── 1 ├── b │ └── 2 ├── c │ └── 3 └── d └── 4 [root@root backup]# rsync -azvp --exclude=a/1 --exclude=b . rsync_backup@192.168.120.120::backup --password-file=/etc/rsync.password sending incremental file list ./ a/ c/ c/3 d/ d/4 sent 229 bytes received 62 bytes 582.00 bytes/sec total size is 111 speedup is 0.38
另外一种方式:修改rsync配置文件。
在/etc/rsyncd.conf配置文件中添加一行 exclude = a b/2
注意: exclude = a b/2 表示排除文件夹a 与文件夹b下面的2文件
[root@root backup]# vim /etc/rsyncd.conf
exclude = a b/2 ##添加须要排除的文件或目录
rsync客户端的排除测试-Push推送:(虽然报错,可是到rsync服务器上确实有这些文件。疑似权限问题)
[root@root backup]# rsync -azvp . rsync_backup@192.168.120.120::backup --password-file=/etc/rsync.password sending incremental file list ./ skipping daemon-excluded directory "a" *** Skipping any contents from this failed directory *** b/ skipping daemon-excluded file "b/2" c/ c/3 d/ d/4 sent 255 bytes received 63 bytes 212.00 bytes/sec total size is 111 speedup is 0.35 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
rsync客户端的排除测试-Pull拉取:
[root@root backup]# rsync -azvp rsync_backup@192.168.120.120::backup /mnt --password-file=/etc/rsync.password receiving incremental file list ./ 192.168.120.121/ 192.168.120.121/html_2018-12-22.tar.gz b/ c/ c/3 d/ d/4 sent 140 bytes received 480 bytes 1240.00 bytes/sec total size is 111 speedup is 0.18
参数说明:
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
注意:服务端的排除参数用于客户端的拉取Push
1.7 rsync应用拓展无差别同步讲解
1.7.1 本地删除--delete参数使用
要实现这种同步方式就要使用rsync的--delete参数。下面是--delete参数使用详解:
[root@root /]# mkdir /boy #建立两个临时文件夹,第一个文件夹空的,第二个有内容 [root@root /]# mv /mnt/ /girl [root@root /]# rsync -azvP --delete boy/ girl/ #因为boy文件夹内容为空,因此使用--delete参数进行无差别同步时会将girl文件夹内容删除 sending incremental file list ./ deleting d/4 deleting d/ deleting ceshi/ deleting c/3 deleting c/ deleting b/ deleting 192.168.120.121/html_2018-12-22.tar.gz deleting 192.168.120.121/ sent 29 bytes received 15 bytes 88.00 bytes/sec total size is 0 speedup is 0.00 [root@root /]# tree girl/ girl/ 0 directories, 0 files
1.7.2 无差别同步-拉取Pull
[root@root ~]# rsync -azvP --delete rsync_backup@192.168.120.120::backup /tmp --password-file=/etc/rsync.password
以上方式表示远程服务端发生变化的文件,例如删除了文件,那么若是本地要保持与服务端数据一致,就可使用这个命令。
这个命令很是危险,使用不当可能形成本地目录及文件,甚至是根本目录数据丢失,所以要特别注意当心使用。
执行--delete参数从rsync服务端往客户端拉取(Push)数据时,必定要当心,最好不用,它比从rsync客户端带--delete参数往rsync服务端推送(Pull)危险的多,客户端带--delete参数往服务端推送仅删除服务端模块下的数据,而前者有能力删除rsync客户端本地的全部数据包括根下的全部目录。
1.7.3 无差别同步-生产场景应用
通常是有须要两台服务器之间,必需要求数据一致,且时时性又不是很高的状况下,若是两台负载均衡下面web服务器之间的同步,或者高可用双击配置之间的同步等。rsync无差别同步很是危险,并且有不少的替代方案,所以,生产场景没有特殊的需求,应避免使用。
1.8 rsync应用拓展多模块同步
添加多模块配置,其实并无多大变化。只是加了一个模块名与Path路径
[root@root backup]# cat /etc/rsyncd.conf uid = rsync gid = rsync use chroot = no max connections = 200 timeout = 100 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log ignore errors read only = false list - false hosts allow = 192.168.120.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password #exclude = a b/2 [backup] path = /backup/ [oldboy] path = /oldboy/
特别说明:添加多个模块能够有多个路径(至关于多个共享)
若是须要每一个模块都有不一样的帐号和密码,就须要在每个模块里面添加帐号与密码,因为自学没那么高要求,就简单添加了一个模块名加模块路径。不在模块里面添加的配置就至关于全局变量。
1.9 rsync服务配置回顾
1.9.1 服务端配置
配置rsync的配置文件:/etc/rsyncd.conf
建立同步的本地目录/backup并根据须要受权rsync服务的用户可读写权限,/backup目录和/etc/rsync.password为配置文件中path=/backup参数配置。
帐号及密码文件配置
[root@root etc]# echo "rsync_backup:oldboy" >> /etc/rsync.password [root@root etc]# chmod 600 /etc/rsync.password #明文密码文件权限给到最小-保密
提示:
1./etc/rsync.password为配置文件中secrets file = /etc/rsync.password的参数配置
2.帐号rsync_backup为配置文件中auth users = rsync_backup的参数配置
1.9.2 客户端配置
添加密码文件与修改密码文件权限
[root@root /]# echo "oldboy" > /etc/rsync.password
[root@root etc]# chmod 600 /etc/rsync.password
提示:
客户端的密码文件路径/etc/rsync.password与服务端的免密文件路径/etc/rsync.password没有任何关系,只要和客户端rsync命令的参数--password-file=/etc/rsync.password中的路径对应便可
1.9.3 客户端操做命令细节
Pull推送
>>>rsync -avzP . rsync_backup@192.168.120.120::backup --password-file=/etc/rsync.password >>>rsync -avzP . rsync://rsync_backup@192.168.120.120/backup --password-file=/etc/rsync.password
注意:第二条推送命令的推送路径必须是服务端配置的path路径下才行
Push抓取:
>>>rsync -avzP rsync_backup@192.168.120.120::backup /mnt --password-file=/etc/rsync.password >>>rsync -avzP rsync://rsync_backup@192.168.120.120/backup /mnt --password-file=/etc/rsync.password
2.0 rsync配错思路
2.0.1 rsync服务端排错思路
1.查看rsync服务配置文件路径是否正确,正确的默认路径为:/etc/rsyncd.conf;
2.查看配置文件里面的host allow,host deny,容许的ip网段是不是容许客户端访问的ip网段;
3.查看配置文件中的path参数里面的路径是否存在,权限是否正确(正常应为配置文件中的UID参数对应的属主和组);
4.查看rsync服务是否启动。查看宁陵为ps -ef | grep rsync ,端口是否存在netstat -lnt |
grep 873(rsync默认端口为873);
5.查看iptables防火墙和selinux是否开启容许rsync服务经过,也可考虑关闭;
6.查看服务器rsync配置的密码文件是否为600的权限,密码文件格式是否正确,正确格式用户名:密码,文件路径和配置文件里的secrect files参数对应;
7.若是是推送数据,要查看下配置rsyncd.conf文件中用户是否对模块下目录有可读写的权限;
2.0.2 rsync客户端排错思路1.查看客户端rsync配置的密码文件是否为600权限,密码文件格式是否正确,注意:仅须要有密码,而且和服务端的密码一致;2.用telnet链接rsync服务器ip地址873端口,查看服务是否启动(可测试服务端防火墙是否阻挡),telnet 10.0.0.141 8733.客户端执行命令时rsync -avzP rsync_backup@192.168.120.120::backup --password-file=/etc/rsync.password此命令的细节要记清楚,尤为192.168.120.120::backup 处的双冒号及随其后的backup为模块命令。