Linux 备份与恢复基础
备份不是等系统出问题时才想起来的事。真正有用的备份,必须能恢复。Linux 初学者至少要理解哪些文件该备份、怎么备份、怎么验证。
先区分数据和系统
通常最重要的是数据,而不是系统本身。
常见需要备份:
- 用户家目录中的文档和项目。
- 服务配置文件。
- 数据库数据或数据库导出。
- 网站上传文件。
- 脚本和自动化任务。
- SSH 密钥和证书,但要妥善加密保存。
通常不需要完整备份:
- 软件包缓存。
- 临时文件。
- 构建产物。
- 可以重新安装的软件。
使用 tar 备份目录
备份一个目录:
tar -czf project-backup.tar.gz project
查看归档内容:
tar -tzf project-backup.tar.gz | head
恢复到当前目录:
tar -xzf project-backup.tar.gz
恢复到指定目录:
mkdir restore-test
tar -xzf project-backup.tar.gz -C restore-test
使用 rsync 同步备份
同步目录到备份目录:
rsync -av project/ backup/project/
演练模式:
rsync -av --dry-run project/ backup/project/
删除目标端多余文件,让目标和源保持一致:
rsync -av --delete project/ backup/project/
注意
使用 --delete 前先加 --dry-run。路径写错会删除目标端文件。
数据库不能只复制目录
数据库通常不能简单复制数据目录当作备份,尤其是在数据库运行时。
更稳妥的做法是使用数据库自己的导出工具,例如:
- MySQL/MariaDB:
mysqldump或物理备份工具。 - PostgreSQL:
pg_dump、pg_dumpall或物理备份方案。 - SQLite:可以复制数据库文件,但也要注意写入中的一致性。
具体命令要参考数据库教程或官方文档。
备份配置文件
修改系统配置前先备份:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
如果改坏了,可以恢复:
sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
然后重新加载或重启服务。
验证备份
备份完成不代表安全。你需要定期验证:
- 备份文件是否存在。
- 文件大小是否合理。
- 能否列出归档内容。
- 能否恢复到临时目录。
- 恢复后的服务或数据是否可用。
一个没有测试过的备份,只能叫“希望”。
备份原则
常见原则是保留多份副本:
- 本机一份。
- 外部磁盘或 NAS 一份。
- 异地或云端一份。
重要数据还要考虑:
- 加密。
- 权限。
- 自动化。
- 保留周期。
- 恢复演练。
小结
入门阶段你至少应该掌握:
- 用
tar打包备份。 - 用
rsync同步备份。 - 修改配置前先复制
.bak。 - 数据库要用专门方式备份。
- 备份必须测试恢复。
备份不是高级运维才需要的东西。你越早养成习惯,未来越少后悔。