RSYNC 简明教程

 

项目中需要用到 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. 将会提示你输入口令 

    第一条命令是把远程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 

    在服务端可以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  



    然后在客户机上执行,

    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. # 注意:上面一行写入的是你准备同步使用的账户的口令 

    同步开始,
    Shell代码 复制代码 收藏代码
    1. # /usr/bin/rsync -azh --password-file=/home/backup/sync/rsync.pas \ 
    2.   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  
       
    • 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 

      如果需要每天凌晨00:30开始自动同步,则需要把脚本加入cron计划任务中


      Shell代码 复制代码 收藏代码
      1. # crontab -e 
      2. # 把下面内容追加进去 ,注意没有前面那个 # 号哟 
      3. # 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的详细信息可以参考鸟哥的作品:
http://linux.vbird.org/linux_server/0250simple_firewall.php

 

转自:http://waiting.iteye.com/blog/643171

 

 

<think> 首先,用户的问题是:“我想获取Rsync的用法教程 请问Rsync用法教程”。这直接要求我提供关于Rsync的用法教程。 回顾系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户提供了几个引用: - [^1]: 关于rsync的建议,包括基础命令、高级参数、脚本整合、维护等。 - [^2]: 创建rsync目录和配置文件的命令。 - [^3]: rsync的基本用法,包括本地同步操作和常用选项。 - [^4]: 创建rsync虚拟账户名和密码的命令。 这些引用是关于rsync的用法,所以我需要基于用户的查询和这些引用来构建我的回答。用户上一次的问题是“我想获取Rsync的用法教程”,所以焦点是用法教程。 结构我的回答: 1. **介绍Rsync**:简要解释Rsync是什么,它的用途。 2. **基本用法**:涵盖本地同步操作,如引用[3]中提到的。 3. **常用选项**:列出并解释一些常用选项,如-v, -a, -z, --delete等,来自引用[3]。 4. **配置rsync服务器**:基于引用[2]和[^4],讨论如何设置rsync服务器,包括创建配置文件、设置密码等。 5. **高级用法和优化**:参考引用[1],讨论脚本整合(如与inotify结合)、维护等。 6. **示例命令**:提供一些实际示例,使教程更实用。 7. **结尾**:总结并生成相关问题。 确保回答真实可靠: - 基于提供的引用,但不要直接复制粘贴;用自己的话解释。 - 添加引用标识:在引用特定内容的地方添加[^1], [^2]等。 生成相关问题: - 在回答结束时,添加“§§相关问题§§”部分,列出几个相关问题,如系统级指令所示(示例中是快速排序的相关问题)。 由于是用法教程,回答应该结构化、逐步引导用户: - 从基础开始,逐步到高级。 - 使用代码块显示命令示例(如示例中的Python代码)。 - 语言用中文。 大纲回答: 1. **开头**:介绍Rsync。 2. **基本用法**:解释本地同步。 - 示例命令。 3. **常用选项**:描述选项。 4. **服务器配置**:如何设置rsyncd。 - 创建配置文件和密码文件。 5. **高级主题**:脚本整合和维护。 6. **总结**。 7. **相关问题**。 添加引用: - 当提到特定引用点时,末尾添加标识。 例如: - 在讨论基本用法时,可以参考引用[3]。 - 在配置部分,参考引用[2]和[^4]。 - 在高级用法时,参考引用[1]。 最终,生成相关问题: - 例如: 1. 如何优化rsync的性能? 2. rsync如何与inotify结合实现实时同步? 3. 如何处理rsync的错误日志? </think> ### Rsync用法教程 Rsync(Remote Synchronization)是一个高效的文件同步工具,支持本地和远程数据传输。它通过差异算法仅传输变化的文件部分,减少时间和带宽消耗,广泛用于备份和数据迁移场景。以下教程基于引用内容,逐步介绍Rsync的基本到高级用法。 #### 1. **基本用法:本地文件同步** Rsync最常见的用途是同步本地目录。基本命令格式为: ```bash rsync [选项] 源目录 目标目录 ``` - **常用选项**(参考引用[3]): - `-a`:归档模式(保留文件权限、时间戳等,相当于 `-rlptgoD`)。 - `-v`:显示详细操作信息,便于调试。 - `-z`:启用压缩传输,减少网络带宽占用。 - `--delete`:删除目标目录中多余的文件(确保源和目标完全一致)。 - `-n`:测试模式(仅模拟同步,不做实际操作)。 **示例命令**: - 同步本地目录 `/home/user/documents/` 到 `/backup/docs/`: ```bash rsync -avz /home/user/documents/ /backup/docs/ ``` 注意:源目录末尾添加 `/` 仅同步内容,不创建子目录;不加 `/` 会同步整个目录结构[^3]。 - 测试同步并删除多余文件: ```bash rsync -avn --delete /source/ /destination/ ``` 确认无误后,移除 `-n` 执行实际同步[^3]。 #### 2. **配置Rsync服务器(远程同步)** 对于跨服务器同步,需配置Rsync守护进程(daemon)。步骤如下(参考引用[2]和[^4]): **步骤1:创建配置文件和密码文件** - 创建配置文件目录和文件: ```bash mkdir /etc/rsync cd /etc/rsync touch rsyncd.conf # 主配置文件 touch rsyncd.secrets # 密码文件 touch rsyncd.motd # 登录欢迎信息(可选) sudo chmod 600 rsyncd.secrets # 设置权限,确保安全 ``` - 编辑 `rsyncd.conf`: ```bash # 示例配置 [backup] # 模块名 path = /path/to/data # 同步目录路径 comment = Backup directory read only = no # 允许写入 auth users = rsync_user # 认证用户 secrets file = /etc/rsync/rsyncd.secrets # 密码文件路径 ``` - 设置密码(参考引用[^4]): ```bash echo "rsync_user:your_password" > /etc/rsync/rsyncd.secrets ``` 替换 `your_password` 为实际密码[^4]。 **步骤2:启动Rsync守护进程** ```bash rsync --daemon --config=/etc/rsync/rsyncd.conf ``` - 验证服务:使用 `netstat -tulpn | grep rsync` 检查端口(默认873)。 **步骤3:远程同步示例** - 从客户端同步到服务器: ```bash rsync -avz /local/data/ rsync_user@服务器IP::backup ``` 其中 `backup` 是配置中的模块名。 #### 3. **高级用法与优化** - **实时同步**:结合 `inotify`(文件系统监控工具),实现自动触发同步。例如,创建脚本监控目录变化后调用Rsync[^1]。 - **日志和维护**: - 添加 `--log-file=/path/to/log` 记录同步日志。 - 定期检查日志、清理临时文件并更新 `--exclude` 规则(排除不必要的文件),确保任务稳定[^1]。 - **安全性增强**:使用SSH隧道(通过 `-e ssh` 选项)加密传输: ```bash rsync -avz -e ssh /source/ user@remote:/destination/ ``` #### 4. **最佳实践总结** - **初学者建议**:从基础命令起步,逐步添加选项(如 `-a` 或 `--delete`)。 - **配置检查**:始终用 `-n` 测试命令,避免意外数据丢失。 - **性能优化**:在带宽限制场景下启用 `-z` 压缩;对大文件使用 `--partial` 支持断点续传。 通过这些方法,Rsync可构建高效的数据同步系统,提升运维效率和数据安全性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值