1、什么是rsyncrsync:“远程同步”是一个本地和远程同步文件的工具。当第一次连接完成后,整个文件将传输一次,下次只传输两个文件之间的不同部分。2、rsync同步的两种方式1)直接使用rsync命令,使用SSH协议,默认22端口2)rsyncdaemon形式,使用rsync协议,默认873端口3、同步命令同步之间三种方法的commands不同的是“:”的个数,本地同步没有“:”,命令行同步有一个“:”,daemon同步有两个“:”。1)本地文件同步rsync[OPTION...]SRC...[DEST]2)本地和远程同步pull方式:rsync[OPTION...][USER@]HOST:SRC...[DEST]push方式rsync[OPTION...]SRC...[USER@]HOST:DEST3)使用rsync进程pull方法rsync[OPTION...][USER@]HOST::SRC...[DEST]rsync[OPTION...]rsync://[USER@]HOST[:PORT]/SRC...[DEST]推送方法:rsync[OPTION...]SRC...[USER@]HOST::DESTrsync[OPTION...]SRC...rsync://[USER@]HOST[:PORT]/DEST)4.详细说明remotesync是一个数据镜像备份工具。它还可以将文件从一个分区同步到本地系统上的另一个分区。如果rsync在备份过程中有数据传输中断,恢复后可以继续传输不一致的部分。rsync可以执行完整和增量备份。特点:1):可以镜像保存整个目录树和文件系统2):易于维护原始文件权限、时间、软硬连接3):无需特殊权限即可安装4):可以增量同步数据,文件传输效率高5):可以使用rcp,ssh等方式传输文件,当然也可以直接通过socket连接6):支持匿名传输5,详细参数1)常用参数-t:Synchronize源文件到目标机器的修改时间。它会在同步之前比较双方文件的时间戳和文件大小。如果一致,则认为两边的文件相同,不会更新副文件。如果目的端的文件的时间戳和大小与源端的完全一致,只是内容恰好不同,rsync就会找不到。解决方法是使用I参数-I:(大写i)逐条发起数据同步-v:获取日志信息-z:先压缩再传输-r:递归,级联同步-a:另外要递归同步,还可以同步元信息(权限,修改时间等)-n:模拟命令执行的结果,不是真正的执行命令-l(小写L):同步链接文件时-p:维护源文件的权限持久化权限-H:同步硬链接-g-o:保留组和属主-delete:删除只存在于目标目录,不存在于源目录的文件-exclude:排除一个文件-exclude-from:排除写入某个文件中的所有文件名-progress:显示传输进度信息-partial:继续传输2.所有参数的PDF版本可以下载:链接:https://pan.baidu.com/s/1Gd2HUbC_ZIL8C4N0ntpAZw密码:5dsb五、常用命令1)将源目录复制到目标目录rsync-avsource_pathdestination_pathrsync-avzhongjiang.shapt@10.0.0.128:/home/apt/-a:意思是archive-v:表示在stdout或progress上打印出详细信息2)压缩传输在网络传输时,压缩数据可以显着提高传输效率。使用rsync-z指定网络传输时数据压缩rsync-avzsourcedestination3)将目录内容同步到另一个目录rsync-av/shell/apt@10.0.0.128:/home/apt/lop4)同步目录本身To另一个目录rsync-av/shell/lllapt@10.0.0.128:/home/apt/lop5)在归档过程中排除一些文件--excludePATTERNrsync-avz/shell/lllapt@10.0.0.128:/home/apt/lllop--exclude"*.txt"6)排除文件名在文件中的文件用rsync在归档过程中排除一些文件,在文件中写入不需要的文件名--exclude-fromFILEPATHrsync-avz/shell/lllapt@10.0.0.128:/home/apt/lllop--exclude-from/shell/file7)更新rsync备份时,删除不存在的文件rsync-avz/shell/lllapt@10.0.0.128:/home/apt/lllop--delete6.Daemonmode1:daemon模式配置文件当rsync以daemon模式运行时,配置文件为rsyncd。弄清楚服务端和客户端,这和通常理解的服务端和客户端是不一样的。被同步的一方是服务器,需要同步文件到另一方的源是客户端。3:文件格式1)rsyncd.conf配置文件由模块和参数组成。模块以写在方括号中的模块名称开始,并继续到下一个模块。该模块包含“名称=值”格式的参数。2)文件以行为单位,每行代表一个模块名或参数4:启动方式必须启动daemon模式运行时,添加参数--daemonrsync--daemon5:模块配置1)Server(target,待synchronizedOneend)配置文件#/etc/rsyncd:rsyncdaemon模式的配置文件#更多选项参见rsyncd.conf手册页#配置示例:#全局配置uid=rootgid=rootusechroot=nomaxconnections=2pidfile=/var/run/rsyncd.pidlogfile=/var/log/rsyncd.loglockfile=/var/run/rsyncd.lock#模块配置[test]comment="同步nginx配置文件"path=/captain/shellreadonly=noauthusers=rsyncsecretsfile=/etc/rsyncd.secretslist=no全局配置1)uid,gid:使用非root账号时,必须保证service文件夹有写入非root账号的权限2)使用chroot=no:是否可以切换到根目录,当chroot为yes时,客户端连接模块时,首先chroot到模块参数指定的目录,必须使用root权限,端口号必须在1024,不能备份path路径外的链接文件3)maxconnections=2:表示同时连接的最大数量,即只能有两个客户端同时连接到自己,这个选项必须是结合lockfile=/var/run/rsyncd.lock一起使用,如果不指定,默认是/var/run/rsyncd.lockmodulepart每个modulepart是一个文件夹或文件rsync同步1)[modulname]:the模块名称2)path=/captain/shell:表示客户端同步数据时保存的路径3)readonly=no:如果是只读的,那么就不能写同步,所以必须关闭4)授权用户=rsync:用于同步的用户不需要是系统用户,虚拟一个即可:密码格式rsync:123456这个文件的权限必须是600,否则会报错6)list=no:表示服务器拒绝客户端请求时,是直接显示权限拒绝还是实际模块不存在,一般与hostsallow和hostsdeny一起使用。当一个被服务器拒绝的请求进来时,如果设置为list=no,则直接返回模块不存在。2.服务器账号密码文件vim/etc/rsyncd.secretsrsync:1234563,client客户端的配置文件(源端,需要同步本机的文件)只需要简单修改一下,设置路径日志文件和pid文件,然后启动rsync。pidfile=/var/run/rsyncd.pidlogfile=/var/log/rsyncd.log4,客户端密码文件vim/etc/rsyncd.passwd1234565,启动dameon,分别在服务端和客户端启动rsyncrsync--daemon6,同步命令rsync-avz--password-file=/etc/rsyncd.passwd/data/shell/rsync@192.168.1.103::test-avz:表示同步过程中显示的输出信息的格式--password-file=/etc/rsyncd.passwd:表示客户端这个密码会在服务器端进行认证,所以这个文件里面的secret就是上面服务设置的密码,只是passwd/data/shell/:表示源目录,并且该目录下的所有文件都会同步到远端注意:有没有/是有区别的:有/的时候表示同步了/data/shell/目录下的东西,没有/的时候表示同步了shell目录到过去的七。监控目录变化1.查看内核是否支持inotify机制cat/boot/config-$(uname-r)|grepCONFIG_INOTIFY_USER=y2.安装yuminstallinotify-tools3.监控某个目录变化inotifywait-rmemodify,attrib,move,close_write,create,delete,delete_self/software/mminotifywait-mqr--format'%Xe%w%f'-emodify,create,delete,attrib/data/4,monitorexcept某个目录inotifywait--exclude'^/software/mm/ll'-rmemodify,move,close_write,create,delete,delete_self/software/mm5:统计文件目录的变化次数inotifywatch-v-eaccess-emodify-t120-r/software/mm/6,监控脚本#!/bin/bash#targetIPip1=10.0.0.75rsync_passwd_file=/etc/rsync.secrets/usr/local/bin/inotifywait-mrq--format'%Xe%w%f'-e创建、移动、属性、打开、关闭、修改/测试|而读取文件做echo$filesEVENT=`echo$files|awk-F""'{print$1}'`echo$EVENTFile=`echo$files|awk-F""'{print$2}'`echo$文件如果[[$EVENT="CREATE"]]||[[$EVENT=“修改”]]||[[$EVENT="MOVED_TO"]];然后echo"创建或修改或移动到"rsync-avzcr--password-file=$rsync_passwd_file$(dirname$File)root@$ip1::mydatafiif[[$EVENT="DELETE"]]||[[$EVENT="MOVED_FROM"]];然后echo"DeleteorMoved_From"rsync-avzcr--delete--password-file=$rsync_passwd_file$(dirname$File)root@$ip1::mydatafiif[[$EVENT="ATTRIB"]];然后echo"Attribe"if[[!-d$File]];thenrsync-avzcr--password-file=$rsync_passwd_file$(dirname$File)root@$ip1::mydatafifidone8.作者简介李先生(Lemon),高级运维工程师(自称),SRE专家(target),35岁梦想买保时捷,喜欢钻研底层技术,认为底层基础为王。所有新技术都离不开操作系统(CPU、内存、磁盘)、网络等,坚持输入输出,记录自己的学习,在平凡中不断前行,总有一天会遇到不一样的自己。公众号:王运维(ID:Leeeee_Li)。
