加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.ikongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

备份服务器 Rsync

发布时间:2022-10-22 15:17:38 所属栏目:系统 来源:
导读:  本地备份工具:cp

  远程备份工具: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
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!