服务器快照能防系统事故,但快照和数据在同一机房,机房级灾难时一起完蛋。真正的保命符是异地备份。而rclone就是异地备份的瑞士军刀——它能把你的数据自动同步到各种对象存储,便宜、可靠、可加密。本文教你配好这道最后防线。
一、为什么选对象存储做异地备份?
对象存储(S3、Cloudflare R2、Backblaze B2等)是异地备份的理想目的地:容量按用量付费、极其廉价(冷备份每月几块钱存几百G)、跨地域高可靠、与你的服务器物理隔离。相比再买一台VPS存备份,对象存储成本低得多。这一份备份,是3-2-1备份原则里最关键的”异地那一份”。
二、安装与配置rclone
curl https://rclone.org/install.sh | bash # 安装
rclone config # 交互式配置
rclone config 会引导你添加一个”远程”(remote):选择存储类型(如S3兼容的R2/B2)、填入endpoint、access key、secret key。配好后测试:
rclone lsd 远程名: # 能列出存储桶即配置成功
三、核心命令:sync vs copy(别用错!)
- rclone copy:只增不删——源有的复制到目标,目标多出来的不动。安全;
- rclone sync:镜像同步——让目标和源一模一样,会删除目标上源没有的文件。危险!用错方向能把备份删光。
备份场景强烈建议用 copy 或带版本策略,避免sync误删。基本备份命令:
rclone copy /www/backups 远程名:my-backup-bucket/$(date +%F) --progress
四、加密备份:敏感数据上锁
数据要传到第三方存储,加密很有必要。rclone的crypt功能可以在上传前自动加密文件名和内容,即使存储服务商也看不到你的数据明文。在 rclone config 中新建一个crypt类型的remote,套在你的存储remote之上即可,之后所有上传自动加密。
五、自动化:配合crontab定时备份
写一个备份脚本,先本地打包数据库和文件,再用rclone上传到对象存储:
#!/bin/bash
DATE=$(date +%F)
# 打包数据库和网站
mysqldump -u root -p'密码' --all-databases | gzip > /tmp/db_$DATE.sql.gz
# 上传到对象存储
rclone copy /tmp/db_$DATE.sql.gz 加密远程名:backup/
# 清理本地临时文件
rm /tmp/db_$DATE.sql.gz
加入crontab每日执行(参考博客的crontab教程):0 3 * * * /root/backup-remote.sh。
六、防勒索关键:权限最小化
一个高级但重要的技巧:给服务器上用于备份的存储密钥只授予”写入”权限,不给”删除”权限。这样即使服务器被勒索软件攻陷,攻击者也无法删除或加密你已上传的异地备份——你的最后防线依然完好。这是专业运维和业余的分水岭。
七、别忘了恢复演练
备份的意义在于能恢复。每季度用一台免费试用VPS做一次演练:从对象存储拉回最新备份,完整恢复站点,验证数据完整、记录恢复耗时。没演练过的备份不算数。
rclone + 对象存储 = 便宜可靠的异地备份。配好加密、用对copy、权限最小化、定期演练,你的数据就有了机房级灾难都打不垮的保险。今天就把这道防线建起来。