使用rsync命令同步两台服务器之间的文件

rsync 是一种非常常用的文件同步工具,能够在两台服务器之间高效地同步文件和目录。它支持增量传输,只同步发生了变化的文件部分,极大提升了传输效率。以下是使用 rsync 命令同步两台服务器之间文件的步骤与详细示例。

前提条件

  1. 两台服务器,假设它们的 IP 分别为 ServerA: 192.168.1.100ServerB: 192.168.1.101
  2. SSH 访问权限rsync 默认通过 SSH 进行安全连接,因此需要确保可以通过 SSH 从 ServerA 连接到 ServerB
  3. 安装 rsync:确保两台服务器上都已安装 rsync

rsync 命令基本格式

rsync [选项] 源文件路径 目标文件路径

常用选项

  • -a:归档模式,表示递归传输文件并保持文件属性(相当于 -rlptgoD)。
  • -v:显示传输过程中的详细信息。
  • -z:在传输过程中压缩文件。
  • -P:显示传输进度,并在中断后可以继续传输。
  • -e:指定远程 shell 程序(如 ssh)。
  • --delete:删除目标目录中源文件已删除的文件,使两端完全同步。

1. 从本地服务器同步到远程服务器

假设我们在 ServerA 上执行 rsync,同步文件到 ServerB

例子:将本地目录 /var/www/ 同步到 ServerB 上的 /backup/www/
rsync -avzP -e ssh /var/www/ user@192.168.1.101:/backup/www/

解释:

  • -a:归档模式,保留文件属性。
  • -v:显示详细信息。
  • -z:传输时压缩文件。
  • -P:显示进度并支持断点续传。
  • -e ssh:使用 SSH 连接到远程服务器。
  • user@192.168.1.101:远程服务器的 SSH 用户名和 IP 地址。
  • /backup/www/:远程服务器的目标目录。
带有 --delete 参数的同步

如果需要目标目录与源目录完全同步(包括删除目标中不存在的文件),可以使用 --delete 选项。

rsync -avzP --delete -e ssh /var/www/ user@192.168.1.101:/backup/www/

2. 从远程服务器同步到本地服务器

如果我们想从 ServerB 上的 /backup/www/ 目录同步到本地 ServerA/var/www/ 目录,可以执行以下命令:

rsync -avzP -e ssh user@192.168.1.101:/backup/www/ /var/www/

3. 使用免密码的 SSH 登录

为了避免每次执行 rsync 时输入密码,可以配置 SSH 密钥认证

步骤:
  1. 生成 SSH 密钥对(如果还没有):

    ssh-keygen -t rsa
    

    按提示生成公钥和私钥(一般位于 ~/.ssh/id_rsa~/.ssh/id_rsa.pub)。

  2. 将公钥复制到远程服务器

    ssh-copy-id user@192.168.1.101
    

    这会将公钥添加到远程服务器 ~/.ssh/authorized_keys 文件中。

  3. 测试免密登录

    ssh user@192.168.1.101
    

    如果无需输入密码即可登录,SSH 免密码认证配置成功。

  4. 再次使用 rsync
    现在可以使用 rsync 进行同步,而不需要输入密码:

    rsync -avzP /var/www/ user@192.168.1.101:/backup/www/
    

4. 在 crontab 中自动执行 rsync

你可以将 rsync 命令添加到 crontab 中,以实现定时自动同步。

步骤:
  1. 编辑 crontab

    crontab -e
    
  2. 添加定时任务,例如每天凌晨 2 点同步:

    0 2 * * * rsync -avzP /var/www/ user@192.168.1.101:/backup/www/
    

    这会每天凌晨 2 点自动执行 rsync 同步。

5. 使用排除文件

有时候,你不想同步某些文件或目录,可以使用 --exclude 选项。

例子:排除 .git 目录和日志文件:
rsync -avzP --exclude='.git/' --exclude='*.log' /var/www/ user@192.168.1.101:/backup/www/

总结

  • rsync 是一个高效的文件同步工具,特别适合大文件和远程服务器之间的增量同步。
  • 结合 SSH 免密登录和 crontab,可以实现自动化、无干预的文件备份和同步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iangyu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值