关于我
~一个热爱火影的业余小提琴玩家~
Joynaruto

Rsync的日常使用

前言

什么是Rsync?先贴上一段官方介绍:

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。

相比较其他类似scpcp以及rm之类的命令,Rsync最大的好处就是当你想传输或同步大量文件的时候,她可以通过其独有的quick check算法,做到仅修改最后变动部分,也就是所谓的”增量改变”,如果遇到数据量大的话就可以节省大把的空间,时间以及流量

基础参数

通过rsync --help能查看所有关于rsync的参数,这里说几个我用的比较多的

  1. 参数-a
    这个参数起到了递归的作用,相当与文件夹移动的-R
  2. 参数-v
    显示具体传输过程日志
  3. 参数-h
    以比较友好的方式把传输过程显示出来
  4. 参数-z
    在传输过程进行压缩,能够节省流量
  5. 参数--progress
    加了这个参数后能够显示传输进度,更直观
  6. 参数--delete
    这个参数可以将源文件夹删除的文件同步删除,默认原则是”只增不减”
  7. 参数-e
    主要用在远程来定义远端服务器的非标ssh端口

我的使用场景

传输同步

  1. 日常本地传输文件/文件夹
    #从/root/1/ 传输到 /var/www/2/
    rsync -avhz --progress /root/1/ /var/www/2/
  2. 日常远程传输文件/文件夹
    #从A服务器传输到B服务器
    rsync -avhz --progress --delete /root/1/ -e 'ssh -p 端口号' root@B服务器域名:/var/www/3/
  3. 配合cron同步两个文件夹
    #编辑crontab
    crontab -e
    #最后加入要执行的脚本,以下表示每分钟同步1文件夹到2文件夹
    * * * * * rsync -avhz /root/1/ /var/www/2/

增量备份

这里使用场景是通过建立一个rsync服务器来备份我的主服务器,由于是增量备份,备份的速度和硬盘的节省上都是很友好的 :idea:

服务端建立

  1. 把默认的rsync配置文件复制到/etc
    cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/
  2. 编辑/etc/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.
    # The init.d script does its own pid file handling,
    # so omit the "pid file" line completely in that case.
    # pid file=/var/run/rsyncd.pid
    port = xxx               //自定义端口
    syslog facility=local3   //日志级别
    #socket options=
    
    # MODULE OPTIONS
    
    [2233]   //模块名字
    
            comment = public archive
            path = /home/bak    //备份存放路径
            use chroot = yes
            max connections=10   //最大连接数
            lock file = /var/lock/rsyncd
    # the default for read only is yes...
            read only = no
            list = yes
            uid = root
            gid = root
    #       exclude =
    #       exclude from =
    #       include =
    #       include from =
    #       auth users = 2233                   //授权用户名
    #       secrets file = /etc/rsyncd.secrets  //授权文件放置处
            strict modes = yes
    #       hosts allow =
    #       hosts deny =
            ignore errors = yes
            ignore nonreadable = yes
            transfer logging = yes
    #       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
  3. 编辑授权文件
    vim /etc/rsyncd/rsyncd.secrets  //用户名称与密码以冒号分隔,多个用户名和密码可以多行
    #例如:
    joy:123
  4. 编辑登录公告
    vim /etc/rsyncd/rsyncd.mot
    #例如:
    ++++++++++++++++++++++++++++++
               welcome
    ++++++++++++++++++++++++++++++
  5. 启动rsync服务器
    #有两种方式
    #第一种:
    sudo /etc/init.d/rsync start
    #第二种:
    service rsync start
    
  6. 查看rsync服务状态
    service rsync status

客户端连接

这里我使用的是群晖作为我的客户端,通过hyper backup套件来使用上述建立的rsync服务器来实现增量备份。设置如下图:

实测增量备份恢复以及多版本查看都是可以的,增量备份服务器达成!

一些后话

Rsync的用法其实还有很多,这里只是讲下我自己实际使用的场景。另外我看网上有说要通过xinetd来守护启动rsync,并且接管rsync的端口号,我这里测试下来失败,具体表现为如果先启动xinetd,则rsync启动失败,报错原因是监听端口被xinetd占用;反之如果先启动rsync,则xinetd启动失败,报错原因相同,不过我实际使用下来,rsync是能够一直在线,且服务器重启后也是可以自动启动的,所以这块也就没啥影响了。

发表回复

textsms
account_circle
email

Joynaruto

Rsync的日常使用
前言 什么是Rsync?先贴上一段官方介绍: Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作…
扫描二维码继续阅读
2020-03-12