简介
命令文档: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 选项以在目标目录中删除源目录中不存在的文件。
此处评论已关闭