VPS没有快照功能?教你如何完整导出所有数据
VPS没有快照功能?教你如何完整导出所有数据
数据备份是保护数据安全的重要手段
最近看到有朋友在问:手里的VPS不支持快照功能,万一想换个地方或者重装系统,怎么才能把所有数据都导出来?确实,对于玩折腾的朋友来说,快照虽然方便,但不是每家云厂商都标配的。特别是那些主打“性价比”的便宜鸡,省成本往往就省在了这些高级功能上。
今天就来细说一下,在没有快照的情况下,我们如何通过老手的方式来“打包带走”所有数据。无论是博客数据、代码仓库还是配置文件,都能稳稳落地。
一、 最基础的方案:文件打包传输
如果没有快照,最原始但也最通用的办法,就是把数据打包后传出来。虽然听起来笨拙,但这是所有备份的基石。
使用命令行进行文件打包
1. 打包网站目录
如果你的VPS上跑的是Web环境(比如LNMP or LAMP),核心数据通常都在 /www/wwwroot 或者 /var/www/html 下。
使用 tar 命令打包是首选,因为它能保留权限信息,这对于之后恢复运行至关重要。
tar -czvf website_backup_$(date +%Y%m%d).tar.gz /var/www/html
这里加个日期后缀是个好习惯,防止搞混。
2. 压缩并传输
打包好后,怎么拿下来?如果文件不大,直接 scp 或者本地开个 SFTP 软件拖下来就行。但如果文件有好几个G,直接传可能会卡死。
方案A:直接 SCP
scp root@your_vps_ip:/root/website_backup.tar.gz .
方案B:先压缩再传(针对大文件)
如果觉得传输过程中断很烦人,可以用 rsync,它支持断点续传。
rsync -avzP --progress root@your_vps_ip:/root/website_backup.tar.gz ./
二、 别忘了数据库!单独备份
网站文件能打包,但数据库里的内容可不在文件系统里。很多人备份完文件才发现忘了备库,欲哭无泪。
1. 使用 mysqldump 导出
最稳妥的方法是用 mysqldump 导出为 .sql 文件。
mysqldump -u root -p your_database_name > backup_database_$(date +%Y%m%d).sql
如果想一次性备份所有数据库,加上 --all-databases 参数:
mysqldump -u root -p --all-databases > all_databases_$(date +%Y%m%d).sql
2. 导出的文件别忘了压缩
SQL文件如果是文本,有时候体积惊人,记得再打个包:
gzip backup_database_20260520.sql
三、 进阶方案:系统级打包镜像
如果你不仅想导出数据,还想把现在的环境(包括安装的软件、系统配置等)原封不动地搬走,那简单的打包文件就不行了,你需要打包整个根文件系统。
1. 排除不必要的目录
在打包根目录 / 时,千万不能把 proc、sys、dev 等虚拟文件系统打进去,否则解压会报错或者把新机器搞挂。/tmp 和 /var/tmp 也建议排除。
tar -czpvf backup_full_system.tar.gz \
--exclude=/proc \
--exclude=/sys \
--exclude=/dev \
--exclude=/run \
--exclude=/mnt \
--exclude=/media \
--exclude=/lost+found \
--exclude=/tmp \
--exclude=/var/tmp \
/
2. 解压与恢复
拿到新机器上,解压到根目录即可。不过要注意,这套方法主要用于同版本操作系统的迁移。如果是 CentOS 搬到 Ubuntu,虽然文件能搬过去,但服务启动命令、依赖库全都不一样,大概率起不来。这时候就更推荐Docker化你的应用,把容器导出(docker export),换环境跑起来更容易。
四、 偷懒且稳健的自动化方案
如果你觉得每次手动敲命令太累,或者怕忘记,可以上一些自动化的脚本或第三方工具。
1. 编写简单的备份脚本
写个简单的 Shell 脚本,放进 crontab 里每天跑一次。脚本逻辑就是:备份数据库 -> 打包文件 -> 删除3天前的旧备份。
2. Rclone 配合网盘
很多便宜的VPS带宽虽然足,但本地硬盘小。你可以把备份好的文件,直接用 rclone 传到 Google Drive、OneDrive 或者 S3 兼容的对象存储里。这样即使VPS跑路了(你知道我在说哪家),数据还在云端躺着。
五、 总结与建议
没有快照并不代表数据就裸奔了。“快照是懒人的福音,但手动备份是老王的护身符。”
- 日常备份:养成定期备份数据库和核心代码的习惯。
- 迁移前:先用
tar打包测试,确保能在本地解压。 - 大文件:善用
rsync的断点续传。 - 数据异地化:重要数据务必传到本地或其他的云存储,不要只存在VPS里。
希望这几个方法能帮到那些手里拿着“毛坯房”VPS的朋友们。你们平时都是怎么备份数据的?有没有什么独门秘籍?欢迎在评论区交流!

评论已关闭