609 字
3 分钟
Linux系统关键数据备份指南

Linux 系统关键数据备份指南#

系统迁移或重装前,备份关键配置能省去大量重新配置的时间。这里记录一个实用的备份命令,打包 root、home、crontab 和 systemd 服务。

一键备份命令#

Terminal window
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) - 自动添加时间戳

备份内容详解#

路径说明
/rootroot 用户的家目录
/home所有普通用户的家目录
/var/spool/cron用户级定时任务(crontab)
/etc/crontab系统级定时任务
/etc/systemd/system自定义 systemd 服务文件

验证备份#

Terminal window
# 查看压缩包内容(不解压)
tar -tvf /tmp/backup_full_*.tar.gz | less
# 查看压缩包大小
ls -lh /tmp/backup_full_*.tar.gz

恢复数据#

方式一:解压到临时目录(推荐)#

先检查内容,再选择性恢复:

Terminal window
# 创建临时目录
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/

方式二:直接恢复到根目录(慎用)#

Terminal window
sudo tar -xzvf /tmp/backup_full_20260314_233000.tar.gz -C /
风险提示

直接恢复到根目录会覆盖现有文件,确保你知道自己在做什么。

自动备份脚本#

创建自动备份脚本并加入定时任务:

/usr/local/bin/backup.sh
#!/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"

添加执行权限:

Terminal window
chmod +x /usr/local/bin/backup.sh

加入定时任务(每天凌晨3点):

Terminal window
sudo crontab -e
# 添加
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

远程备份#

备份到远程服务器:

Terminal window
# 使用 scp
scp /tmp/backup_full_*.tar.gz user@remote-server:/backups/
# 使用 rsync
rsync -avz --progress /tmp/backup_full_*.tar.gz user@remote-server:/backups/

排除不必要文件#

某些文件不需要备份,可以用 --exclude 排除:

Terminal window
tar -czvf backup.tar.gz \
--exclude='*/.cache' \
--exclude='*/tmp/*' \
--exclude='*.log' \
/root /home /var/spool/cron /etc/crontab /etc/systemd/system

注意事项#

  1. /tmp 目录重启清空 - 备份完成后立即移动到安全位置
  2. Socket 文件警告 - 备份时提示 “socket ignored” 是正常的
  3. 权限问题 - 恢复后可能需要重新设置文件权限
  4. 数据库备份 - 如果运行数据库服务,需要单独导出数据

参考链接#

Linux系统关键数据备份指南
https://im.awsl.app/posts/system-ops/046-linux-backup/
作者
uu
发布于
2025-05-20
许可协议
CC0 1.0