用宝塔给远程网站做备份的土办法,不用插件也能搞定
用宝塔给远程网站做备份,其实没那么玄乎。别听那些卖课的瞎忽悠,说必须买什么高级面板。今天我就把这层窗户纸捅破,教你怎么用最笨但最稳的方法,把数据存到远程服务器或者NAS上。
说实话,刚入行那会儿,我也觉得远程备份是高大上的技术活。直到有一次,某客户的服务器被黑,数据全丢,他在电话里哭得跟啥似的。那一刻我才明白,备份这事儿,不是炫技,是保命。咱们做站7年了,见过太多因为懒得备份而后悔莫及的案例。所以,今天这篇文,不讲虚的,只讲怎么落地。
很多人问,为啥不用宝塔自带的远程备份?其实能用,但有时候网络不稳定,或者远程服务器空间不够,容易失败。我更喜欢一种更底层、更可控的方式。就是利用宝塔的计划任务,配合SSH或者FTP,把数据推送到远端。
先说SSH方案,这是我最推荐的。因为SSH加密传输,安全系数高。你只需要在宝塔后台,新建一个计划任务,类型选“Shell脚本”。脚本内容怎么写?这里有个坑,很多人直接写tar命令,结果忘了排除某些大文件,导致备份包巨大无比,传半天还失败。
我的经验是,先打包数据库,再打包网站目录。数据库用mysqldump,这个稳。网站目录用tar,但要记得加--exclude参数,把缓存文件、日志文件都排除掉。比如,你可以写这样的逻辑:先登录远程服务器,创建一个以当天日期命名的文件夹,然后把本地的打包文件传过去。
这里要注意,远程服务器得开SSH端口,而且得配置好密钥登录,不然每次都要输密码,计划任务就跑不通了。配置密钥这一步,很多新手卡住。其实很简单,在本地生成一对密钥,把公钥复制到远程服务器的authorized_keys文件里。这样以后传输就不用密码了,丝滑得很。
再说说FTP方案,适合那些不懂Linux命令的小白。宝塔计划任务里也有FTP上传选项。但我觉得FTP有个致命弱点,就是明文传输,容易被抓包。而且FTP连接经常超时,特别是跨运营商或者跨国访问的时候。我有个客户,用FTP备份,结果因为网络波动,连续失败了一周,他自己都没发现,直到真出事了才傻眼。
所以,我还是建议用SSH。虽然前期配置稍微麻烦点,但一劳永逸。你可以写个简单的脚本,比如:
ssh user@remote_server "mkdir -p /backup/$(date +%Y%m%d)"
scp /www/wwwroot/your_site.tar.gz user@remote_server:/backup/$(date +%Y%m%d)/
ssh user@remote_server "rm -rf /backup/$(date +%Y%m%d -d '7 days ago')"
这段代码的意思很直白:在远端建个文件夹,把本地打包好的文件传过去,然后删掉7天前的旧备份。这样既保证了数据安全,又不会把远端硬盘撑爆。
当然,除了技术操作,心态也很重要。别指望一次配置就万事大吉。你得定期去检查一下备份日志。我有个习惯,每周一早上打开宝塔,看一眼上周的备份状态。如果显示成功,心里就踏实了。如果有失败,赶紧排查。别等到数据丢了,才想起来去翻日志,那时候黄花菜都凉了。
还有个小细节,数据库备份的时候,如果网站数据量大,比如超过10G,mysqldump可能会比较慢。这时候可以考虑用xtrabackup,那是专业的备份工具,速度快,还能热备。不过对于大多数中小网站,mysqldump足够了。
总之,用宝塔给远程网站做备份,核心就两点:一是自动化,别让人去手动传;二是多样化,别只存一份,最好异地多活。比如你可以同时备份到阿里云OSS和家里的NAS,双重保险。
最后唠叨一句,备份不是目的,恢复才是。你最好每隔几个月,找个测试环境,试着恢复一次备份。看看数据是不是完整的,网站能不能正常跑起来。别等到真出事了,才发现备份文件是坏的,那就太尴尬了。
这事儿不难,难的是坚持。希望这篇文能帮你省下不少折腾的时间,把精力花在真正重要的地方,比如优化网站内容,提升用户体验。毕竟,站做得好,比啥都强。