简介

命令文档:https://wangchujiang.com/linux-command/c/rsync.html

rsync全称是 remote sync

字面意思是做远程同步的,但是 rsync 能做的不只是远程同步

还能做:

  • 文件拷贝
  • 系统备份
  • 远程文件传输

rsync 最大的的用途是可以做增量备份

即 rsync 在第一次执行备份时,是全量备份(将所有的文件都备份)

后面再重新备份时,只会备份哪些修改过的文件

场景预设

A服务器:10.20.30.40

B服务器:10.20.30.50

将A中/opt/backup/文件夹下所有文件备份到B中/opt/backup/下

使用

安装 rsync

确保两个服务器已安装rsync,安装命令:

# 对于 Debian/Ubuntu 系统
sudo apt update
sudo apt install rsync

# 对于 CentOS/RHEL 系统
sudo yum install rsync

配置 SSH 免密登录

为了使 rsync 可以在 A 服务器上无密码地访问 B 服务器,需要设置 SSH 免密登录:

在 A 服务器上生成 SSH 密钥(如果尚未生成)

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):  # 直接按回车
Enter passphrase (empty for no passphrase):  # 直接按回车
Enter same passphrase again:  # 直接按回车

注意事项

  • 如果你在非 root 用户下操作,确保你有权限在相应的 .ssh 目录中创建文件(通常是用户的home目录下的 .ssh)。
  • 如果 .ssh 目录不存在,可以手动创建:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh

将公钥复制到 B 服务器

ssh-copy-id root@10.20.30.50

其中 user 是 B 服务器的用户名。

测试 SSH 连接

在 A 服务器上测试 SSH 连接到 B 服务器,确保不需要输入密码:

ssh root@10.20.30.50

注意事项

  • 第一次登录可能需要B的密码

编写 rsync 命令

rsync -avz /opt/backup/ root@10.20.30.50:/opt/backup/

设置 cron 任务

打开 cron 编辑器

crontab -e

添加同步任务

在打开的文件中添加以下行,表示每天 2 点执行同步命令:

0 2 * * * rsync -avz /opt/backup/ root@10.20.30.50:/opt/backup/
  • 0 2 * 表示每天 2 点 0 分。
  • /opt/backup/ 是源目录。
  • root@10.20.30.50:/opt/backup/ 是目标目录。

保持并退出

确认 cron 任务

可以使用以下命令查看已设置的 cron 任务

crontab -l
  • 确保 B 服务器上的 /opt/resource/c/ 目录存在且具有适当的权限,以便 A 服务器的用户能够写入。
  • 根据需要调整 rsync 参数,例如使用 --delete 选项以在目标目录中删除源目录中不存在的文件。
最后修改:2024 年 10 月 28 日
如果觉得我的文章对你有用,请随意赞赏