rsync备份

Posted 椰子皮0oo0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync备份相关的知识,希望对你有一定的参考价值。

Linux中的备份方式

    ① cp (本机备份)

    ② scp(远程备份)

    ③ rsync (远程备份)

   scp与rsync的区别

      相同点:srp与rsync都支持将文件上传到远程服务器和在远程服务器下载文件

      不同点:srp只支持全量复制(每次备份文件都得将整个文件内容重新上传或下载,不支持拷贝特殊文件,如链接文件、设备等        

          rsync支持全量复制和增量复制(每次备份文件时校验文件,只下载新增的文件内容,支持拷贝特殊文件,如链接文件、设备等

 

 

 

         

rsync简介  

    rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。

    rsync官方地址:https://rsync.samba.org/
    rsync监听端口:873
    rsync运行模式:C/S client/server

    rsync简称叫做远程同步,可以实现不同主机之间的数据同步,还支持全量和增量

rsync使用

    语法格式

      rsync [参数] [需要备份的文件] [上传的服务器ip]:[存放的目录]

    参数

      -v  (显示上传的速率和文件数量等)

 

 

       -z(传输时进行压缩提高传输速度)

       -r(递归传输目录以及目录下的子目录和文件)

       -t (保持文件时间信息)

       -o(保持文件属主信息)

       -g(保持文件属组信息)

       -p(保持文件权限信息)

       -l (保持文件软连接)

       -D(保持文件设备信息)

      -a (归档模式传输,等于-trogplD这七个参数的集合)

 

 

 

 

 

      -P(显示同步过程中的进度)

 

 

       -L(保留软连接指向的文件)

       -e(使用的信道协议,指定替代rsh的shell程序)

       --append(指定文件在上一次传输中断掉的地方继续上传)

      --append-verify(和append参数一样,会多一步验证同步的文件和原文件是否一样,如果和原来文件不同则会修复)

       

      -exclude(同步时排除某个文件)

 

 

 

      -exclude-from=file(按照文件指定的内容排除同步)

        在/tmp/exclude.txt文件里面写入1.txt与2.txt,执行该参数命令

 

      --bwlimit=100(限制同步的速率 100MB/s)

      --delete(让目标目录与源目录数据保持一致)

      --passwd-file=密码文件名(使用密码文件)

      --port(指定端口传输)

 

 

rsync守护进程模式

    在服务端操作

        ① 关闭防火墙与selinux服务

          [root@backup opt]# systemctl disabel --now firewalld

          [root@backup opt]# setenforce 0

        ② 检查是否安装了rsync,如果没有则下载

          [root@backup opt]# rpm -q rsync

          [root@backup opt]# yum install rsync

        ③ 修改配置文件 /ect/rsyncd.conf

          将配置文件修改成以下内容

          [root@m01 ~]# vim /etc/rsyncd.conf            

          uid = rsync  # 用户
          gid = rsync  # 用户组
          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  # 定义虚拟用户的密码
          log file = /var/log/rsyncd.log  # 日志文件
          #####################################
          [backup]  # 模块
          comment = welcome to backup!  # 模块的备注 
          path = /backup  # 服务器真实的路径
          [linux]
          comment = welcome to linux!
          path=/tmp/linux

          

      ④ 创建系统用户

        [root@backup opt]# groupadd rsync -g 333

        [root@backup opt]# useradd rsync -u 333 -g 333 -M -s /sbin/nologin -r

      ⑤ 创建密码文件

        [root@backup opt]# echo "rsync_backup:1" > /etc/rsync.passwd 

 

 

 

      ⑥ 给予密码文件权限

        [root@backup opt]# chmod 600 /etc/rsync.passwd 

      ⑦ 创建备份的目录

        [root@backup opt]# mkdir /backup
        [root@backup opt]# mkdir /tmp/linux

      ⑧ 给与目录rsync的权限

        [root@backup opt]# chown rsync.rsync /backup/
        [root@backup opt]# chown rsync.rsync /tmp/linux/

      ⑨ 启动rsyncd服务

        [root@backup opt]# systemctl start rsyncd

 

    在客户端操作

      ① 连接服务端

        方式1 : 自己输入密码登录

          [root@m01 ~]# rsync -avzP ./* rsync_backup@172.16.1.41::backup

 

 

         

        方式2:创建密码文件(无需输入密码,该密码必须和服务端设置的密码一致)

           [root@m01 ~]# echo "1" > /etc/rsync.passwd

          给密码文件授权

          [root@m01 ~]# chmod 600 /etc//rsync.passwd 

          连接服务端

          [root@m01 ~]# rsync -avzP --password-file=/etc/rsync.passwd ./* rsync_backup@172.16.1.41::backup

 

 

 

          方式3:将密码添加到环境变量中

            定义环境变量

             [root@m01 ~]# export RSYNC_PASSWORD=\'1\'

            连接服务器

               [root@m01 ~]# rsync -azvP ./* rsync_backup@172.16.1.41::linux

 

 

 

 

    rsync实时同步

      rsync自己是没有实时监控文件的功能的,它只有同步的功能,如果我们想要实现实时同步的功能,必须要用到实时监控文件变化的软件inotify

      rsync监控命令:/usr/bin/inotifywait [参数] -e [监控的事件] [监控的文件目录]

        参数:

          -m(持续监控)

          -r (递归)

          -q (静默输出,仅显示时间信息)

          --timefmt(指定输出的时间格式)

          --format(指定时间输出格式)

            %Xe(事件)

            %w (目录)

            %f (文件)

          -e (指定监控的事件)

            access(访问)

            modify(内容修改)

            attrib(属性修改)

            close_write (修改真实文件内容)

            open (打开)

            create(创建)

            delete(删除)

            umount (卸载)

      ① 安装inotify(安装在客户端,因为要监控客户端软件变化并同步到服务端)

        [root@m01 ~]# yum install inotify-tools -y

      ②实时监控并同步

        [root@m01 ~]# /usr/bin/inotifywait -mrq --format \'%Xe %w %f\' -e create,modify,delete,attrib,close_write /root | while read line;do
               cd /root
               rsync -avzP --delete --password-file=/etc/rsyncd.passwd ./* rsync_backup@172.16.1.41::backup
               done

 

 

        

以上是关于rsync备份的主要内容,如果未能解决你的问题,请参考以下文章

Rsync

rsync备份

使用 rsync 备份文件

RSYNC备份服务

Rsync+shell脚本完成自动化备份

rsync+inotify实现数据实时备份