rsync的同步拉取使用

博客介绍了Linux环境下两台机器指定目录(如/usr/local/nginx/html/)的数据同步方法。包括拉取同步(定时)和推送同步(实时)的配置流程,还提及若无需用户密码验证的处理方式,最后介绍了使用inotify - tool监控的安装及简单实验。
条件

两台机器的指定目录,这里以/usr/local/nginx/html/为例
被同步的机器(服务端):192.168.10.105
拉取数据的机器(客户端):192.168.10.106

安装
yum install -y rsync
拉取同步,定时
  • 配置105服务器并启动

    #操作配置文件
    vim /etc/rsyncd.conf
    
    # See rsyncd.conf man page for more options.
    
    # configuration example:
    
    # uid = nobody
    # gid = nobody
    # use chroot = yes
    # max connections = 4
    # pid file = /var/run/rsyncd.pid
    # exclude = lost+found/
    # transfer logging = yes
    # timeout = 900
    # ignore nonreadable = yes
    # dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
    
    #rsync安全验证
    auth users=admin
    secrets file=/etc/rsyncd.pwd
    
    #服务名
    [ftp]
    	#被监听同步的目录
      	path = /usr/local/nginx/html/
    
    #/etc/rsyncd.pwd的内容,用户名:密码
    admin:123
    
    #将/etc/rsyncd.pwd文件降权
    chmod 600 /etc/rsyncd.pwd
    #启动rsync后台进程
    rsync --daemon
    
  • 操作106同步数据

    #配置一个客户端密码文件 /etc/rsyncd.pwd.client 内容就是密码
    123456
    
    #修改密码文件权限
    chmod 600 /etc/rsyncd.pwd.client
    #查看105对应服务目录下的文件列表,不加file配置,输入密码123456
    rsync --list-only --password-file=/etc/rsyncd.pwd.client admin@192.168.10.105::ftp/
    
    #增量同步命令,输入密码123456
    rsync -avz --password-file=/etc/rsyncd.pwd.client admin@192.168.10.105::ftp/ /usr/local/nginx/html/
    #完全同步,删除了命令也会同步删除
    rsync -avz --delete --password-file=/etc/rsyncd.pwd.client admin@192.168.10.105::ftp/ /usr/local/nginx/html/
    
  • 如果不需要用户密码验证,去掉服务端和客户端中的验证相关的配置和文件即可,客户端命令变化一下

    rsync --list-only 192.168.10.105::ftp/
    
    rsync -avz 192.168.10.105::ftp/ /usr/local/nginx/html/
    
推送同步,实时
  • 106服务器接收,启动rsync后台进程

    配置流程和上面拉取同步配置105一样,些许不一样

    # See rsyncd.conf man page for more options.
    
    # configuration example:
    
    #如果使用其他用户和组得修改同步目录得权限
    uid = root
    gid = root
    # use chroot = yes
    # max connections = 4
    # pid file = /var/run/rsyncd.pid
    # exclude = lost+found/
    # transfer logging = yes
    # timeout = 900
    # ignore nonreadable = yes
    # dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
    
    #rsync安全验证
    auth users=admin
    secrets file=/etc/rsyncd.pwd
    #关掉默认只读,允许外部提交文件
    read only=no
    #服务名
    [ftp]
    	#被监听同步的目录
      	path = /usr/local/nginx/html/
    
  • 105作为客户端执行命令

    #查看106指定ftp服务目录文件列表
    rsync --list-only --password-file=/etc/rsyncd.pwd.client admin@192.168.10.106::ftp/
    #将105指定文件夹推送到ftp服务目录
    rsync -avz --password-file=/etc/rsyncd.pwd.client /usr/local/nginx/html/ admin@192.168.10.106::ftp/ 
    rsync -avz --delete --password-file=/etc/rsyncd.pwd.client /usr/local/nginx/html/ admin@192.168.10.106::ftp/ 
    
使用inotify-tool监控
  • 安装

    #先装一下自动编译工具
    yum install -y automake
    #下载安装包解压
    tar -zxvf inotify-tools-3.22.6.0.tar.gz
    #进入源文件目录,这一步依赖上面的工具
    ./autogen.sh
    #这里如果出现缺少依赖的需要自己安装一下
    ./configure --prefix=/usr/local/inotify/
    #最后,分开执行也可
    make && make install
    
  • 客户端105服务器使用脚本,简单实验

    #创建一个sh
    vim /root/inotify_auto.sh
    chmod +x /root/inotify_auto.sh
    
    #!/bin/bash
    #脚本内容
    nohup /usr/local/inotify/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move /usr/local/nginx/html/ | while read file
    do
    	rsync -avz --delete --password-file=/etc/rsyncd.pwd.client /usr/local/nginx/html/ admin@192.168.10.106::ftp/ 
    done
    
    #后台进程启动脚本,启动完之后可以在105上操作监控的目录下的文件,106的文件会自动实时同步,也可以看一下日志
    nohup /root/inotify_auto.sh >/root/inotify.log 2>&1 &
    
<think>好的,我现在需要帮助用户找到如何使用rsync同步两台服务器之间的目录的配置教程。首先,我得回忆一下rsync的基本知识。用户提到了两台服务器之间的目录同步,应该涉及到服务端和客户端的配置。根据之前看到的引用,比如引用[1]提到需要安装rsync,然后配置。还有引用[4]提到rsync是增量同步,保持文件属性,这可能对用户有帮助。 首先,步骤应该包括安装rsync,配置服务端,然后配置客户端进行同步。用户可能需要具体的命令和配置示例。记得要区分服务端和客户端的操作,因为用户可能不太清楚两者的区别。比如,服务端需要设置同步源,客户端发起同步请求。 然后,安装部分,根据引用[1],需要在两台服务器都安装rsync。不同的Linux发行版安装命令可能不同,比如Ubuntu用apt,CentOS用yum。这需要明确写出,避免用户混淆。 接下来是服务端配置。rsync的配置文件通常是/etc/rsyncd.conf,需要创建这个文件并设置参数。比如模块名称、路径、权限等。根据引用[3],同步源服务器需要配置,然后在客户机执行同步命令。这里需要给出示例配置,比如定义模块名、路径、允许的IP、用户等。注意权限问题,比如uid和gid设置为nobody,或者根据实际情况调整。 验证用户部分,服务端需要创建密码文件,并设置权限。比如/etc/rsyncd.passwd,里面是用户名和密码,然后设置600权限。这一步很重要,否则安全性可能有问题。 启动服务端,如果是CentOS 7或以上,可能需要用systemctl启动rsyncd服务,并设置开机启动。如果是其他版本,可能需要使用service命令,但用户可能更常用的是systemctl,所以需要明确说明。 然后是客户端配置,用户可能想从服务端或推送文件。需要生成密码文件,只保存密码,并设置权限。这里要提醒用户密码文件的权限必须严格,否则rsync会报错。 同步命令示例,比如使用rsync -avz命令,指定模块名和本地目录。根据引用[2],有两种格式,一种是双冒号加模块名,另一种是rsync://协议。需要给出这两种格式的例子,方便用户选择。 最后,注意事项,比如防火墙端口873是否开放,目录权限是否正确,以及定时任务配置。用户可能需要设置cron任务自动同步,这里给出crontab的示例,比如每天凌晨同步一次。 另外,引用[5]提到rsync用于服务器间的镜像或备份,所以用户的需求应该属于这种情况。需要确保步骤清晰,避免遗漏关键点,比如密码文件的权限和配置文件的正确格式。 现在需要检查步骤是否完整,是否覆盖了安装、配置服务端、配置客户端、执行同步命令,以及常见问题处理。确保所有命令正确,比如rsyncd.conf的语法,密码文件的正确位置,权限设置是否正确。可能还需要提醒用户测试同步命令是否有效,检查日志文件如果有问题。 总结起来,回答的结构应该是:安装rsync,配置服务端(编辑配置文件、创建密码文件、启动服务),配置客户端(创建密码文件),执行同步命令,以及注意事项。每一步给出具体的命令和配置示例,让用户能够直接复制使用。同时引用相关的参考资料,如引用[1]、[2]、[3]、[4]、[5],确保信息的可靠性。</think>### Rsync同步两台服务器目录的配置教程 #### 1. 安装Rsync 在两台服务器(服务端和客户端)上均需安装rsync: - **Ubuntu/Debian**: ```bash sudo apt-get update && sudo apt-get install rsync -y ``` - **CentOS/RHEL**: ```bash sudo yum install rsync -y ``` 引用[1]提到需在同步双方安装rsync[^1]。 --- #### 2. 服务端配置 **步骤1:编辑配置文件** 创建或修改服务端配置文件 `/etc/rsyncd.conf`: ```bash # 示例配置 uid = root gid = root use chroot = yes max connections = 4 pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log [data] # 模块名称(客户端需指定) path = /data # 同步的目录路径 comment = Backup Directory read only = no # 允许写入 list = yes # 允许列出模块 auth users = rsync_user # 认证用户名 secrets file = /etc/rsyncd.passwd # 密码文件路径 ``` - `[data]`为模块名,客户端通过该名称访问目录; - `auth users`和`secrets file`用于身份验证[^3]。 **步骤2:创建密码文件** 生成密码文件 `/etc/rsyncd.passwd`: ```bash echo "rsync_user:your_password" | sudo tee /etc/rsyncd.passwd sudo chmod 600 /etc/rsyncd.passwd # 必须设置严格权限 ``` **步骤3:启动服务** ```bash systemctl start rsyncd # 启动服务 systemctl enable rsyncd # 设置开机自启 ``` --- #### 3. 客户端配置 **步骤1:创建密码文件** 仅保存密码(与服务端密码对应): ```bash echo "your_password" | sudo tee /etc/rsync.passwd sudo chmod 600 /etc/rsync.passwd ``` **步骤2:执行同步命令** 从服务端目录到本地: ```bash rsync -avz --delete rsync_user@服务端IP::data /本地目录/ --password-file=/etc/rsync.passwd ``` 或推送本地目录到服务端: ```bash rsync -avz --delete /本地目录/ rsync_user@服务端IP::data --password-file=/etc/rsync.passwd ``` - `-avz`:归档模式、显示详情、压缩传输; - `--delete`:删除目标端多余文件(保持严格同步)[^2]。 --- #### 4. 验证与调试 - **检查日志**:服务端日志 `/var/log/rsyncd.log` 可排查连接问题。 - **防火墙**:确保服务端开放**873端口**: ```bash firewall-cmd --permanent --add-port=873/tcp && firewall-cmd --reload ``` --- #### 5. 定时同步(可选) 通过crontab设置每日自动同步: ```bash crontab -e # 添加以下行(示例:每天凌晨3点同步) 0 3 * * * rsync -avz --delete rsync_user@服务端IP::data /本地目录/ --password-file=/etc/rsync.passwd ``` --- ### 注意事项 1. **目录权限**:服务端目录`/data`需允许rsync用户读写。 2. **密码安全**:密码文件权限必须为`600`,避免泄露。 3. **增量同步**:rsync默认仅传输变化部分,节省带宽[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值