博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsync 简明教程
阅读量:6758 次
发布时间:2019-06-26

本文共 4423 字,大约阅读时间需要 14 分钟。

  hot3.png

项目中需要用到 rsync 进行文档同步备份。看了下网上教程弄好了,不过觉得网上教程条理不清晰容易让初学者看得云里雾里,这里写个简明教程让人立马可以上手使用。

 

  1. rsync 简介
    用于服务器同步目录及文档,功能相当强大上。不过它是把一个文档划分成多个块进行扫描对比,所以可以进行差异同步,效率高速度也快。并且备份文档能保留源文档的权限、属主、属组、时间等属性。
    其工作方式分为命令行和服务模式两种。前者就和scp命令接近,后者和samba工作模式相似。
    假设服务器为192.168.0.1,其上的文件需要备份。 客户机为192.168.0.3,保存备份文档。两个机器系统皆为CentOS5。
  2. 命令行模式
    这种方式采用SSH方式进行工作,传输的口令及文档内容全部是加密数据。远程账号(下例中的mark)是远程服务器实体账户,口令也是此实体账户的系统口 令。
    Shell代码 
    1. 注意都只有一个冒号:  
    2. # rsync -avzP  mark@192.168.0.1:/var/samba /tmp  
    3. 注意 samba后面的斜杠  
    4. # rsync -avzP  mark@192.168.0.1:/var/samba/ /tmp  
    5. 将会提示你输入口令  
    注意都只有一个冒号:# rsync -avzP  mark@192.168.0.1:/var/samba /tmp注意 samba后面的斜杠# rsync -avzP  mark@192.168.0.1:/var/samba/ /tmp将会提示你输入口令
    第一条命令是把远程01主机 上 /var/samba 这个目录同步到本地  /tmp 目录下;
    第二条命令是把远程01主机上 /var/samba 目录下的内容 同步到本地 /tmp 目录下,就是说 /tmp 中不会同步有 samba 这个目录而是直接存放 远程 samba 下的内容。
  3. 服务模式
    此模式传输口令是加密信息,但传输的文档内容是非加密的。 和Samba工作模式相似,需要设置服务提供的“模块”——一个模块包含源路径、允许使用账户、权限等信息,在Samba中称为“服务”。比如,
    rsync.conf 写道
    [sambaFile]
        path = /var/samba
        list = yes
        ignore errors=yes
        read only = yes
        auth users = admin
        secrets file = /etc/rsync/rsync.secrets
        comment = samba
        #exclude =
    [files]
        path = /var/upload
        list = yes
        ignore errors=yes
        read only = yes
        auth users = mark
        secrets file = /etc/rsync/rsync.secrets
        comment = upload files
       
     
    path:需要被备份的目录路径
    list:  是否列表显示该模块。 列表命令 rsync --list-only  192.168.0.1::
    read only: yes表示客户端无法修改,只能下载(同步)文件
    auth users:允许使用此资源(指sambaFile这个小节模块)的用户。用逗号分隔多个用户。此用户必须为系统实 体账户,这一点和Samba是一致的。
    secrets file:此文件对应auth users中账户的口令。
    secrets file文件格式为:
    rsync.secrets 写道
    admin:pass-for-admin
    mark:pass-for-mark
     每个账户一行,以冒号分隔用户名和口令。 出于安全,账户口令一定不要和实体账户的口令一致! 这和samba的要求是相同的。 并且rsync.secrets文件必须是属于root且 600,否则同步时程序会提示出错。需要执行:
    Shell代码 
    1. # chown root:root /etc/rsync/rsync.secrets  
    2. # chmod 600 /etc/rsync/rsync.secrets  
    # chown root:root /etc/rsync/rsync.secrets# chmod 600 /etc/rsync/rsync.secrets
    在服务端可以xinetd方式启动,也可以stand-alone方式启动
    Shell代码 
    1. # 直接执行方式  
    2. # /usr/bin/rsync --daemon --config=/etc/rsync/rsync.conf '   
    3.   
    4. # 写入启动脚本以便虽系统启动而启动rsync服务,注意随系统不同 rc.local 的路径可能有差异  
    5. # echo '/usr/bin/rsync --daemon --config=/etc/rsync/rsync.conf ' >> /etc/rc.local   
    # 直接执行方式# /usr/bin/rsync --daemon --config=/etc/rsync/rsync.conf ' # 写入启动脚本以便虽系统启动而启动rsync服务,注意随系统不同 rc.local 的路径可能有差异# echo '/usr/bin/rsync --daemon --config=/etc/rsync/rsync.conf ' >> /etc/rc.local
     
    然后在客户机上执行,
    Shell代码 
    1. # mkdir /home/backup/rsync  
    2. # cd /home/backup/rsync  
    3. # touch rsync.pas  
    4. # chmod 600 rsync.pas  
    5. # echo 'pass-for-admins' > rsync.pas   
    6.   
    7. # 注意:上面一行写入的是你准备同步使用的账户的口令  
    # mkdir /home/backup/rsync# cd /home/backup/rsync# touch rsync.pas# chmod 600 rsync.pas# echo 'pass-for-admins' > rsync.pas # 注意:上面一行写入的是你准备同步使用的账户的口令
    同步开始,
    Shell代码 
    1. # /usr/bin/rsync -azh --password-file=/home/backup/sync/rsync.pas \  
    2.   admins@192.68.0.1::sambaFile   /home/backup/sync/samba &  
    # /usr/bin/rsync -azh --password-file=/home/backup/sync/rsync.pas \  admins@192.68.0.1::sambaFile   /home/backup/sync/samba &
     
  4. 快速部署
    没时间研究的朋友可以直接下载附件文档,修改下内容即可投入使用
    • rsync.tar.gz 文档解压到服务器 /etc下,编辑 rsync.conf 中“模块”需要备份文档的路径。然后启动服务,命令为
      Shell代码 
      1. # tar -zxvf rsync.tar.gz -C /etc  
      2. # ...do 编辑模块  
      3.   
      4. #  /usr/bin/rsync --daemon --config=/etc/rsync/rsync.conf   
      # tar -zxvf rsync.tar.gz -C /etc# ...do 编辑模块#  /usr/bin/rsync --daemon --config=/etc/rsync/rsync.conf
       
    • rsync.cron.tar.gz 文档解压到客户机 /home/backup/rsync 下,然后开足马力拉文件吧。命令为
      Shell代码 
      1. # mkdir /home/backup/rsync -p  
      2. # tar -xzvf rsync.cron.tar.gz -C /home/backup/rsync  
      3.   
      4. # 开工啦……  
      5. # /home/backup/rsync/cron.rsync.sh  
      # mkdir /home/backup/rsync -p# tar -xzvf rsync.cron.tar.gz -C /home/backup/rsync# 开工啦……# /home/backup/rsync/cron.rsync.sh
      如果需要每天凌晨00:30开始自动同步,则需要把脚本加入cron计划任务中
      Shell代码 
      1. # crontab -e  
      2. # 把下面内容追加进去 ,注意没有前面那个 # 号哟  
      3. # 30 0 * * * /home/backup/rsync/cron.rsync.sh  1> /dev/null   
      # crontab -e# 把下面内容追加进去 ,注意没有前面那个 # 号哟# 30 0 * * * /home/backup/rsync/cron.rsync.sh  1> /dev/null 

       

    • 注意事项:
      rsync.conf 文件中 hosts allow/hosts deny 未做设置,所以任何机器都可以访问服务器rsync服务,这存在安全隐患。你应该自己修改合适的设置。
      uid/gid 都是使用 root 账户而非默认的 nobody,这是为了防止有些文件因为权限限制而在客户机上拉不不过来。
  5. 相关资料
    下面是一些关于rsync的文档资料,适合自己钻研:
    http://rsync.samba.org/ftp/rsync/rsyncd.conf.html
    http://wfyang.blog.51cto.com/65117/95826
    http://www.linuxsir.org/main/?q=node/256
    http://www.linuxsir.org/bbs/thread348137.html
    需要补充的是上面两个链接中关于防火墙iptables的命令有误,正确的如下
      
    Shell代码 
    1. # iptables -A INPUT  -p tcp --dport 873 -j ACCEPT  
    2. # iptables -nvL 查看一下防火墙是不是打开了 873端口  
    # iptables -A INPUT  -p tcp --dport 873 -j ACCEPT# iptables -nvL 查看一下防火墙是不是打开了 873端口
     关于iptables的详细信息可以参考鸟哥的作品:
    http://linux.vbird.org/linux_server/0250simple_firewall.php

转载于:https://my.oschina.net/hosir/blog/183321

你可能感兴趣的文章
什么是UAT测试?
查看>>
FireDAC 下的 Sqlite [8] - 自定义函数
查看>>
Android 驱动测试程序H-M-S <2>
查看>>
Swift语言指南(七)--语言基础之布尔值和类型别名
查看>>
Hadoop 安装记录
查看>>
hdu 5206 Four Inages Strategy 判断是否是正方形
查看>>
Linq中使用Left Join
查看>>
HDFS Safemode问题
查看>>
GDI编程小结
查看>>
(C#基础) byte[] 之初始化, 赋值,转换。(转)
查看>>
mysql设置指定ip远程访问连接实例
查看>>
从js的repeat方法谈js字符串与数组的扩展方法
查看>>
IIS中添加MIME类型
查看>>
Restful风格wcf调用2——增删改查
查看>>
Kettle定时执行(ETL工具)【转】
查看>>
SQL Server里的闩锁介绍
查看>>
ARM Linux 3.x的设备树(Device Tree)
查看>>
信用局项目总结阶段
查看>>
webbrowser自动实现登录博客园
查看>>
Javascript学习6 - 类、对象、继承
查看>>