完全可以!我帮你整理一个从零到自动备份的完整教程,把每个步骤和执行代码都写清楚,这样你直接照着写就行。假设你有两台玩客云:
A:IP 10.27.99.4,源目录 /mnt/sda1/Share/
B:IP 10.27.30.2,目标目录 /mnt/sda1/Share-3/
安装 rsync
在两台玩客云上都要安装:
# A、B 都执行
opkg update
opkg install rsync openssh-client openssh-server
注意:玩客云可能默认已经有 rsync,确认可用:
which rsync
配置无密码 SSH
这样 A 执行 rsync 时不用每次输入密码。
2.1 生成 SSH key(在 A 上)
mkdir -p /root/.ssh
chmod 700 /root/.ssh
ssh-keygen -t ed25519 -f /root/.ssh/id_dropbear
会生成两个文件:
/root/.ssh/id_dropbear # 私钥
/root/.ssh/id_dropbear.pub # 公钥
2.2 拷贝公钥到 B
# 在 A 上执行
cat /root/.ssh/id_dropbear.pub
复制输出内容,然后登录 B:
ssh root@10.27.30.2
在 B 上:
mkdir -p /root/.ssh
chmod 700 /root/.ssh
vi /root/.ssh/authorized_keys # 粘贴公钥内容
chmod 600 /root/.ssh/authorized_keys
然后退出 B:
exit
2.3 测试无密码登录
ssh -i /root/.ssh/id_dropbear root@10.27.30.2
如果能直接登录,不需要输入密码就成功了。
测试 rsync 命令
在 A 上:
rsync -av --delete /mnt/sda1/Share/ root@10.27.30.2:/mnt/sda1/Share-3/
-a:归档模式(保留权限、时间等)
-v:显示详细信息
--delete:目标目录删除多余文件
确认 B 上的 /mnt/sda1/Share-3/ 已经同步文件。
创建日志目录
为了后续 cron 自动运行有记录:
mkdir -p /var/log
touch /var/log/rsync.log
配置 cron 定时任务
编辑 root 的 crontab:
crontab -e
#i是编辑,退出是按esc,然后保存回车退出 :wq
添加下面一行,每天凌晨 3 点自动备份:
0 3 * * * rsync -av --delete /mnt/sda1/Share/ root@10.27.30.2:/mnt/sda1/Share-3/ >> /var/log/rsync.log 2>&1
>> /var/log/rsync.log 2>&1:把输出和错误都写入日志
保存并退出。
测试 cron 是否生效
手动执行:
rsync -av --delete /mnt/sda1/Share/ root@10.27.30.2:/mnt/sda1/Share-3/
查看日志:
tail -n 20 /var/log/rsync.log
小技巧
可以在 A 上新建测试文件:
echo "test backup $(date)" > /mnt/sda1/Share/test.txt
等到 3 点(或者手动执行命令)看 B 上是否同步成功。
确保 cron 服务在 A 上运行:
ps | grep cron
# 或者
/etc/init.d/cron status
如果要备份多个目录,可以写一个脚本:
#!/bin/sh
rsync -av --delete /mnt/sda1/Share/ root@10.27.30.2:/mnt/sda1/Share-3/
rsync -av --delete /mnt/sda1/Other/ root@10.27.30.2:/mnt/sda1/Other-backup/
然后 crontab 调用脚本:
0 3 * * * /root/backup.sh >> /var/log/rsync.log 2>&1
这样,你就完成了:
无密码 SSH
rsync 文件同步
日志记录
cron 自动执行