备份服务器 Rsync
发布时间:2022-10-22 15:17:38 所属栏目:系统 来源:
导读: 本地备份工具:cp
远程备份工具:scp(全量备份)、Rsync(增量备份)
scp 命令:将文件全量上传或下载
上传格式:scp [参数] [本机文件的路径] [用户]@[ip]:[远程主机的路径]
远程备份工具:scp(全量备份)、Rsync(增量备份)
scp 命令:将文件全量上传或下载
上传格式:scp [参数] [本机文件的路径] [用户]@[ip]:[远程主机的路径]
|
本地备份工具:cp 远程备份工具:scp(全量备份)、Rsync(增量备份) scp 命令:将文件全量上传或下载 上传格式:scp [参数] [本机文件的路径] [用户]@[ip]:[远程主机的路径] 下载格式:scp [参数] [用户]@[ip]:[远程主机的路径] [本机文件的路径] # 可选参数 # -p 保留原文件的修改时间,访问时间和访问权限 # -r 递归复制整个目录 ? #将文件aaa.tar.gz备份到远程服务器的/tmp/目录 [root@rsync ~]# scp -p aaa.tar.gz root@172.16.1.41:/tmp/ ? #将远程服务器的/tmp/目录复制到/mnt/目录 [root@rsync ~]# scp -r root@172.16.1.41:/tmp/ /mnt/ Rsync特性 1、支持拷贝特殊文件,如连接文件、设备等。 2、可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。 3、可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p。 4、可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。 5、可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。 6、可以通过socket(进程方式)传输文件和数据(服务端和客户端)。 7、支持匿名的活认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像。 Rsync命令和参数 安装软件yum install rsync -y rsync 命令:简称叫做远程同步服务器系统备份,可以实现不同主机之间的数据同步,还支持全量和增量 格式:rsync [可选参数] [原地址] [目标地址] # 可选参数 # -a 归档模式传输, 等于-tropgDl -t -r -o -p -g -D -l # -v 详细模式输出, 打印速率, 文件数量等 # -z 传输时进行压缩以提高效率 # -r 递归传输目录及子目录,即目录下得所有目录都同样传输。 # -t 保持文件时间信息 # -o 保持文件属主信息 # -p 保持文件权限 # -g 保持文件属组信息 # -l 保留软连接 # -P 显示同步的过程及传输时的进度等信息 # -D 保持设备文件信息 # --exclude=PATTERN 指定排除不需要传输的文件 # --exclude-from=file 排除不需要的文件 # --bwlimit=100 限速传输 # --partial 断点续传 # --delete 让目标目录和源目录数据保持一致 # --password-file=xxx 使用密码文件 ? # 本地传输模式 # 将文件aaa.tar.gz备份到/mnt/目录 [root@rsync ~]# rsync /tmp/aaa.tar.gz /mnt/ ? # 远程传输模式 # 将3.txt传输到远程服务器上的/tmp目录 [root@rsync ~]# rsync -avzP 3.txt root@172.16.1.51:/tmp/ # 从远程服务器将3.txt下载到/tmp目录 [root@rsync ~]# rsync -avzP root@172.16.1.51:/tmp/3.txt /tmp/ 部署Rsync一、环境准备主机IP角色 nfs 172.16.1.31 Rsync客户端 rsync 172.16.1.41 Rsync服务端 二、服务端(以守护进程方式) 环境:关闭防火墙和selinux,安装软件yum install -y rsync 1)创建rsync的启动用户 [root@rsync ~]# useradd rsync -r -M -s /sbin/nologin -u 996 2)编写配置文件 [root@rsync ~]# vim /etc/rsyncd.conf uid = rsync #启动服务的用户id(可以使用名称代替) gid = rsync #启动服务用户的组id port = 873 #服务默认监听端口 fake super = yes #无须使用root用户启动 use chroot = no #安全机制 max connections = 200 #最大连接数 timeout = 600 #超时时间 ignore errors #忽略错误 read only = false #只读权限 list = false #查看模块列表 auth users = rsync_backup #定义虚拟用户(rsync传输过程使用的用户) secrets file = /etc/rsync.passwd #存放密码的文件(权限必须是600,密码是明文) log file = /var/log/rsyncd.log #日志文件 ##################################### # 可设置多个模块 [backup] # 备份的模块(backup是模块的名称) comment = this is backup! # 提示语 path = /backup/ # 备份的路径 ? [web1] # 备份的模块(web1是模块的名称) comment = this is web1 backup! # 提示语 path = /backup/web1/ # 备份的路径 3)创建密码文件 [root@rsync ~]# touch /etc/rsync.passwd 4)创建用户和密码关联数据 [root@rsync ~]# echo 'rsync_backup:123456' > /etc/rsync.passwd 5)授权密码文件 [root@rsync ~]# chmod 600 /etc/rsync.passwd 6)创建备份的目录 [root@rsync ~]# mkdir -p /backup/web1 7)更改文件属主 [root@rsync ~]# chown -R rsync.rsync /backup/ 8)启动rsync服务 [root@rsync ~]# systemctl start rsyncd 三、客户端 环境:关闭防火墙和selinux,安装软件yum install -y rsync # 输入密码传输 [root@nfs ~]# rsync -avzP /tmp/3.txt rsync_backup@172.16.1.4::backup ? # 使用密码文件传输 [root@nfs ~]# echo "123456" > /etc/rsync.passwd [root@nfs ~]# chmod 600 /etc/rsync.passwd [root@nfs ~]# rsync -avzP /tmp/3.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwd ? # 使用变量进行传输 [root@nfs ~]# export RSYNC_PASSWORD=123456 [root@nfs ~]# rsync -avzP /tmp/3.txt rsync_backup@172.16.1.41::backup Rsync常见的报错 # 1、报错内容: rsync -avz 1.txt rsync_backu@172.16.1.41::backup Password: @ERROR: auth failed on module backup rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2] # 原因:1)虚拟用户的用户名或者密码错误,2)服务端密码文件权限不为600 # 2、报错内容: rsync -avz 1.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwd ERROR: password file must not be other-accessible rsync error: syntax or usage error (code 1) at authenticate.c(196) [sender=3.1.2] # 原因:客户端密码文件权限不是600 # 3、报错内容: rsync -avz 1.txt rsync_backup@172.16.1.41::backu @ERROR: Unknown module 'backu' rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2] # 原因:模块名字错误 # 4、报错内容: rsync -avz 1.txt rsync_backup@172.16.1.41::/backup ERROR: The remote path must start with a module name not a / rsync error: error starting client-server protocol (code 5) at main.c(1649) [sender=3.1.2] # 原因:双冒号后面跟的是模块名字,而不是目录名字不要加/ # 5、报错内容: rsync -avz 1.txt rsync_backup@172.16.1.41::backup rsync: failed to connect to 172.16.1.41 (172.16.1.41): No route to host (113) rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2] # 原因:防火墙开启,没有配置防火墙规则 firewall-cmd --add-port=873/tcp success # 6、报错内容: rsync -avz 1.txt rsync_backup@172.16.1.41::backup Password: sending incremental file list rewriteip.sh rsync: mkstemp ".rewriteip.sh.vx4Cry" (in backup) failed: Permission denied (13) sent 207 bytes received 128 bytes 44.67 bytes/sec total size is 194 speedup is 0.58 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2] # 原因:selinux没有关闭 # 7、报错内容: rsync -avz 1.txt rsync_backup@172.16.1.41::backup sending incremental file list rsync: delete of stat xattr failed for "rewriteip.sh" (in backup): Permission denied (13) sent 55 bytes received 114 bytes 338.00 bytes/sec total size is 194 speedup is 1.15 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2] # 原因:服务端备份目录权限不是rsync # 8、报错内容 rsync -avz 1.txt rsync_backup@172.16.1.41::backup rsync: failed to connect to 172.16.1.41 (172.16.1.41): Connection refused (111) rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2] # 原因:服务端服务没有启动 # 9、报错内容 rsync -avz 1.txt rsync_backup@10.0.0.41::backup sending incremental file list rsync: read error: Connection reset by peer (104) rsync error: error in socket IO (code 10) at io.c(785) [sender=3.1.2] # 原因:服务端配置错误,导致启动问题 Rsync + inotify 实现rsync根据目录的变化去实时同步数据 安装软件yum -y install inotify-tools inotifywait 命令:实时监控目录中文件的变化 格式:inotifywait [可选参数] -e [监控事件] [监控目录] # 可选参数 # -m 持续监控 # -r 递归 # -q 静默,仅打印时间信息 # --timefmt 指定输出时间格式 # --format 指定事件输出格式 # %Xe 事件 # %w 目录 # %f 文件 # -e 指定监控的事件 # modify 内容修改 # close_write 修改真实文件内容 # create 创建 # delete 删除 ? #监控/tmp目录 [root@nfs ~]# inotifywait -mr --format "%Xe %w %f" -e modify,close_write,create,delete /tmp 实时备份脚本 [root@nfs ~]# vim rsyn-inotify.sh #!/bin/bash DIR=/data/ USERNAME=rsync_backup IP="172.16.1.41" MODULE=backup ? inotifywait -mr --format "%Xe %w %f" -e modify,close_write,create,delete ${DIR} | while read line ;do rsync -avzP ${DIR} ${USERNAME}@${IP}::${MODULE} --password-file=/etc/rsync.passwd &>/dev/null; done sersync inotify + rsync 实现实时同步,但是无法使用守护进程方式运行 sersync = inotify + rsync + 守护进程 客户端部署 环境:关闭防火墙和selinux,安装软件yum install -y inotify-tools rsync 1)下载sersync并安装 # 下载 [root@nfs ~]# wget https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz # 解压 [root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz # 移动 [root@nfs ~]# mv GNU-Linux-x86 /usr/local/sersync 2)配置文件 [root@nfs ~]# vim /usr/local/sersync/confxml.xml version="1.0" encoding="ISO-8859-1"?> version="2.5"> hostip="localhost" port="8008"> #本机ip地址和端口 start="false"/> #是否打开调试模式 xfs="false"/> #是否支持xfs文件系统 start="false"> #是否过滤,是否排除名称中含有制定字符串的文件的同步 expression="(.*)\.svn"> expression="(.*)\.gz"> expression="^info/*"> expression="^static/*"> #inotify 监控的动作 start="true"/> #删除动作 start="true"/> #创建文件夹动作 start="true"/> #创建文件动作 start="true"/> #写入完成动作 start="true"/> #移动来自动作 start="true"/> #移动到动作 start="true"/> #属性被更改 start="true"/> #修改动作 watch="/data/web1/"> #监控的目录 ip="172.16.1.41" name="web1"/> #远端rsync服务器的地址和模块 params="-az"/> #rsync的参数 start="true" users="rsync_backup" passwordfile="/etc/rsync.passwd"/> #开启认证 #虚拟用户 #指定虚拟用户的密码文件 #如果远端rsync服务不是873端口,则开启并修改 start="false" port="874"/> #如果远端rsync服务不是873端口,则开启并修改 start="false" time="100"/> #超时时间 start="false"/> #错误日志存储路径 path="/tmp/rsync_fail_log.sh" timeToExecute="60"/> start="true" schedule="600"> #定时任务,开启后,600分钟默认全备一次 start="false"> expression="*.php"> expression="info/*"> start="false" name="command"/> name="command"> #扩展插件功能的配置举例 prefix="/bin/sh" suffix="" ignoreError="true"/> start="false"> expression="(.*)\.php"/> expression="(.*)\.sh"/> name="socket"> #扩展插件功能的配置举例 watch="/opt/tongbu"> ip="192.168.138.20" port="8009"/> name="refreshCDN"> #扩展插件功能的配置举例 watch="/data0/htdocs/cms.xoyo.com/site/"> domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/> base="http://pic.xoyo.com/cms"/> regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/> 3)创建虚拟用户密码文件 [root@nfs ~]# echo '123456' > /etc/rsync.passwd # 设置权限 [root@nfs ~]# chmod 600 /etc/rsync.passwd 4)启动sersync 格式:[执行命令] [可选参数] [配置路径] # 可选参数 # -d 启用守护进程模式 # -r 在监控前,将监控目录与远程主机用rsync命令推送一遍 # -n 指定开启守护线程的数量,默认为10个 # -o 指定配置文件,默认使用confxml.xml文件 # -m 单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块 # -m 单独启用其他模块,使用 -m socket 开启socket模块 # -m 单独启用其他模块,使用 -m http 开启http模块 # 不加-m参数,则默认执行同步程序 ? # 可启用多个备份 [root@nfs ~]# /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml [root@nfs ~]# /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml2.xml (编辑:航空爱好网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


