找回密码
 立即注册

快捷登录

查看: 360|回复: 0

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

[复制链接]

1051

主题

0

回帖

3855

积分

管理员

积分
3855
发表于 2025-2-6 16:13:18 | 显示全部楼层 |阅读模式
rsync 是一种非常常用的文件同步工具,能够在两台服务器之间**地同步文件和目录。它支持增量传输,只同步发生了变化的文件部分,极大提升了传输效率。以下是使用 rsync 命令同步两台服务器之间文件的步骤与详细示例。
前提条件

    两台服务器,假设它们的 IP 分别为 ServerA: 192.168.1.100 和 ServerB: 192.168.1.101。
    SSH 访问权限:rsync 默认通过 SSH 进行**连接,因此需要确保可以通过 SSH 从 ServerA 连接到 ServerB。
    安装 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 密钥认证。
步骤:

    生成 SSH 密钥对(如果还没有):

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

    将公钥**到远程服务器:

    ssh-copy-id user@192.168.1.101

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

    测试免密登录:

    ssh user@192.168.1.101

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

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

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

4. 在 crontab 中自动执行 rsync

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

    编辑 crontab:

    crontab -e

    添加定时任务,例如每天凌晨 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,可以实现自动化、无干预的文件备份和同步。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|瑞社区 ( 滇ICP备2020010258号-3 )

滇公网安备 53082802000012号

GMT+8, 2025-4-5 17:39 , Processed in 0.231332 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表