UOS下Rsync定时增量备份并同步到服务端

 

增量备份之rsync

rsync(remote synchronize) 是一个远程数据同步工具,可以使用“rsync算法”同步本地和远程主机之间的文件。rsync的好处是只同步两个文件不同的部分,相同的部分不在传递。类似于增量备份,这使的在服务器传递备份文件或者同步文件,比起scp工具要省时间,带宽。

 

uos默认没有安装rsync,需要安装系统的时候选择全包安装,或者挂在镜像作为本地源可以apt 进行安装;
安装及启动:

sudo vim /etc/default/rsync


将RSYNC_ENABLE=false改为true

RSYNC_ENABLE=true 
sudo cp /usr/share/doc/rsync/examples/rsyncd.conf  /etc
sudo vim /etc/rsyncd.conf


修改path路径,path路径要改成server端要同步的目录地址  ;

然后启动

systemctl start rsync.service

 

修改rsync配置启动

rsync进行MySQL增量备份 rsync定时增量备份_rsync进行MySQL增量备份

 

配置文件配置:vim  /etc/rsync.conf

rsync进行MySQL增量备份 rsync定时增量备份_rsync进行MySQL增量备份_02

 

  

 

 配置文件参数说明(rsyncd.conf):

# sample rsyncd.conf configuration file

# GLOBAL OPTIONS

#motd file=/etc/motd #登录欢迎信息
#log file=/var/log/rsyncd #日志文件
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid

#指定rsync发送日志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默认值是daemon。
#syslog facility=daemon

#自定义tcp选项,默认是关闭的
#socket options=

#以下是模块信息,我们可以创建多个模块
# MODULE OPTIONS

[ftp]   #rsync方式备份时的参数,可以修改为别的名字,后边命令同步的时候 用到的 “ ::ftp "

comment = public archive #模块描述
path = /var/www/pub #需要同步的路径
use chroot = yes #默认是yes|true,如果为true,那么在rsync在传输文件以前首先chroot到path参数指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要root权限,并且不能备份指向外部的符号连接指向的目录文件。
# max connections=10 #最大连接数
lock file = /var/lock/rsyncd #指定支持max connections参数的锁文件。
# the default for read only is yes...
read only = yes #只读选项,默认为yes,只可以进行下行同步,若要进行上行同步需要改为no
list = yes #客户请求时可用模块时是否列出该模块
uid = nobody #设定该模块传输文件时守护进程应该具有的uid
gid = nogroup #设定该模块传输文件时守护进程应具有的gid,此项与uid配合可以确定文件的访问权限
# exclude = #用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用"-"和"+"来指定是exclude还是include #这个我的理解是排除目录中不需同步的文件
# exclude from = #可以指定一个包含exclude模式定义的文件名
# include = #与exclude相似
# include from = #可以指定一个包含include模式定义的文件名
# auth users = #该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的 challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)
# secrets file = /etc/rsyncd.secrets #该文件每行包含一个username:password对,以明文方式存储,只有在auth users被定义时,此选项才生效。同时我们需要将此文件权限设置为0600
strict modes = yes #该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true
# hosts allow = #允许的主机
# hosts deny = #拒绝访问的主机
ignore errors = no #设定rsync服务器在运行delete操作时是否忽略I/O错误
ignore nonreadable = yes #设定rysnc服务器忽略那些没有访问文件权限的用户
transfer logging = no #使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中
# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. #设定日志格式
timeout = 600 #超时设置(秒)
refuse options = checksum dry-run #定义一些不允许客户对该模块使用的命令选项列表
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz #告诉rysnc那些文件在传输前不用压缩,默认已设定压缩包不再进行压缩

 

基本命令:

启动:systemctl  start  rsync 

重启:systemctl  restart  rsync 

关闭:systemctl  stop   rsync 

查看状态:systemctl  status  rsync 

rsync进行MySQL增量备份 rsync定时增量备份_服务器_03

 

 

上传下载:rsync [选项] 原始位置 目标位置

参数:

-a 归档模式,递归并保留对象属性,等同于 -rlptgoD
-v 显示同步过程的详细(verbose)信息
-z 在传输文件时进行压缩(compress)
-H 保留硬链接文件
-A 保留ACL属性
--delete 删除目标位置有而原始位置没有的文件
-r 递归模式,包含目录及子目录中所有文件
-l 对于软链接文件仍然复制为软链接文件
-p 保留文件的权限标记
-t 保留文件的时间标记
-g 保留文件的属组标记(仅超级用户使用)
-o 保留文件的属主标记(仅超级用户使用)
-D 保留设备文件及其他特殊文件

 

 

同步方式:

rsync支持两种同步源,一种是基于SSH的同步源,另一种是基于rsync的同步源。SSH方式类似于scp操作,无需开启rsync服务,rsync方式需要在服务端开启rsync服务。

使用上行同步的方式,要将配置文件rsyncd.conf中,设置read only = no。

下面同步命令中username去掉也可以同步。

下行同步:客户端操作,将服务端的文件下载到客户端

上行同步:客户端操作,将客户端的文件上传到服务端

SSH方式同步:

下行同步:rsync -avz 用户名@服务器地址:/服务器目录 /本地目录

rsync  -avz  username@192.168.0.68:/srv/ftp/pub/*  ./

 

上行同步:rsync -avz /本地目录 用户名@服务器地址:/服务器目录

rsync  -avz  ./1.txt  username@192.168.0.68:/srv/ftp/pub/

 

rsync方式同步:

下行同步:rsync -avz 用户名@服务器地址::ftp  /本地目录 

rsync  -avz  --progress  --delete  username@192.168.0.68::ftp  ./

 

上行同步:rsync -avz /本地目录 用户名@服务器地址::ftp 

rsync  -avz  --progress  --delete  ./1.txt  username@192.168.0.68::ftp

 

 

客户端也要安装rsync的包,不需要配置;

锁好免密登录,然后可以直接命令行就可以同步数据:

rsync进行MySQL增量备份 rsync定时增量备份_服务端_04

 

 

 

 测试服务端删除文件,客户端也要一起删除的参数 --delete 

rsync进行MySQL增量备份 rsync定时增量备份_服务器_05

 加上--delete参数后,服务端文件删除,客户端的文件自定识别服务端文件删除,客户端也会自动删除;

rsync进行MySQL增量备份 rsync定时增量备份_客户端_06

 

 

定时任务实现自动化同步数据:

rsync进行MySQL增量备份 rsync定时增量备份_服务器_07

 

 

参数进一步说明:

-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 检验算法使用的块尺寸,默认是700字节。
-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 显示帮助信息。