Photo by Unsplash
609 字
3 分钟
Linux系统关键数据备份指南
Linux 系统关键数据备份指南
系统迁移或重装前,备份关键配置能省去大量重新配置的时间。这里记录一个实用的备份命令,打包 root、home、crontab 和 systemd 服务。
一键备份命令
sudo tar -czvf /tmp/backup_full_$(date +%Y%m%d_%H%M%S).tar.gz \ /root \ /home \ /var/spool/cron \ /etc/crontab \ /etc/systemd/system参数说明:
-c- 创建归档-z- gzip 压缩-v- 显示详细过程(可去掉减少输出)-f- 指定输出文件$(date +%Y%m%d_%H%M%S)- 自动添加时间戳
备份内容详解
| 路径 | 说明 |
|---|---|
/root | root 用户的家目录 |
/home | 所有普通用户的家目录 |
/var/spool/cron | 用户级定时任务(crontab) |
/etc/crontab | 系统级定时任务 |
/etc/systemd/system | 自定义 systemd 服务文件 |
验证备份
# 查看压缩包内容(不解压)tar -tvf /tmp/backup_full_*.tar.gz | less
# 查看压缩包大小ls -lh /tmp/backup_full_*.tar.gz恢复数据
方式一:解压到临时目录(推荐)
先检查内容,再选择性恢复:
# 创建临时目录mkdir -p /tmp/restore_test
# 解压tar -xzvf /tmp/backup_full_20260314_233000.tar.gz -C /tmp/restore_test
# 查看内容ls -la /tmp/restore_test/
# 手动复制需要的文件cp -r /tmp/restore_test/root/.ssh /root/cp -r /tmp/restore_test/home/username /home/方式二:直接恢复到根目录(慎用)
sudo tar -xzvf /tmp/backup_full_20260314_233000.tar.gz -C /风险提示直接恢复到根目录会覆盖现有文件,确保你知道自己在做什么。
自动备份脚本
创建自动备份脚本并加入定时任务:
#!/bin/bash
# 备份文件名BACKUP_FILE="/backup/system_$(date +%Y%m%d_%H%M%S).tar.gz"
# 创建备份目录mkdir -p /backup
# 执行备份tar -czf "$BACKUP_FILE" \ /root \ /home \ /var/spool/cron \ /etc/crontab \ /etc/systemd/system \ /etc/nginx \ /etc/ssh 2>/dev/null
# 删除7天前的旧备份find /backup -name "system_*.tar.gz" -mtime +7 -delete
echo "Backup completed: $BACKUP_FILE"添加执行权限:
chmod +x /usr/local/bin/backup.sh加入定时任务(每天凌晨3点):
sudo crontab -e
# 添加0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1远程备份
备份到远程服务器:
# 使用 scpscp /tmp/backup_full_*.tar.gz user@remote-server:/backups/
# 使用 rsyncrsync -avz --progress /tmp/backup_full_*.tar.gz user@remote-server:/backups/排除不必要文件
某些文件不需要备份,可以用 --exclude 排除:
tar -czvf backup.tar.gz \ --exclude='*/.cache' \ --exclude='*/tmp/*' \ --exclude='*.log' \ /root /home /var/spool/cron /etc/crontab /etc/systemd/system注意事项
- /tmp 目录重启清空 - 备份完成后立即移动到安全位置
- Socket 文件警告 - 备份时提示 “socket ignored” 是正常的
- 权限问题 - 恢复后可能需要重新设置文件权限
- 数据库备份 - 如果运行数据库服务,需要单独导出数据
参考链接
Linux系统关键数据备份指南
https://im.awsl.app/posts/system-ops/046-linux-backup/