脚本备份数据
每天凌晨5点,将A服务器的 /mnt/nexus_storage 同步到B服务器的/mnt/nexus_backup目录下,两台都是的rocky linux9.5的系统,应该怎么操作呢?
好问题!你想要 每天凌晨5点自动同步 A 服务器的 /mnt/nexus_storage
到 B 服务器的 /mnt/nexus_backup
,这是一个非常典型的 跨机备份任务,建议使用 rsync + SSH + cron
的方式实现,稳定高效。
我来手把手教你配置,一次性搞定。
🧩 一、环境假设
项目 | A服务器(源) | B服务器(目标) |
---|---|---|
IP | 192.168.1.10 | 192.168.1.20 |
用户 | root (或其他有权限用户) | root (或其他有权限用户) |
路径 | /mnt/nexus_storage | /mnt/nexus_backup |
✅ 二、步骤总览
- 在 A 服务器上生成 SSH 密钥并推送到 B
- 测试
rsync
是否能无密码执行 - 写一个自动同步脚本
- 用
cron
设置每天凌晨 5 点执行
🛠️ 三、详细操作步骤
1. 在 A 服务器上生成 SSH 密钥
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
然后推送到 B 服务器:
ssh-copy-id root@192.168.1.20
测试:
ssh root@192.168.1.20
如果不需要密码直接登录,说明成功了。
2. 测试 rsync 同步命令(在 A 上执行)
rsync -avz --delete /mnt/nexus_storage/ root@192.168.1.20:/mnt/nexus_backup/
参数说明:
-a
:归档模式,保留权限、时间等-v
:显示详细信息-z
:压缩传输--delete
:B 上如果 A 已删除文件,也会删除(保证一致)
3. 写一个脚本(例如 /root/backup_to_b.sh
)
#!/bin/bashrsync -avz --delete /mnt/nexus_storage/ root@192.168.1.20:/mnt/nexus_backup/ >> /var/log/nexus_backup.log 2>&1
然后给它执行权限:
chmod +x /root/backup_to_b.sh
4. 加入 crontab
编辑 A 服务器的 crontab:
crontab -e
加入:
0 5 * * * /root/backup_to_b.sh
保存即可,表示每天凌晨 5 点运行脚本。
🧪 五、验证备份成功
你可以查看日志:
tail -f /var/log/nexus_backup.log
或者用定期对比 du -sh
看目录大小是否一致。
如果你希望这个脚本稍微更健壮(比如判断 ssh 是否可达、写入失败日志等),我也可以帮你升级脚本逻辑,要不要?