Appearance
项目3:Linux系统备份与恢复
用tar命令备份重要文件/目录
tar命令是Linux系统中最常用的备份工具之一,它可以将多个文件或目录打包成一个压缩文件,方便存储和传输。
基本语法
bash
tar [选项] [归档文件] [文件/目录...]常用选项
-c:创建新的归档文件-x:从归档文件中提取文件-v:显示详细信息-f:指定归档文件的名称-z:使用gzip压缩-j:使用bzip2压缩-J:使用xz压缩-p:保留文件权限--exclude:排除指定的文件或目录
备份示例
1. 备份单个目录
bash
# 备份/home目录到backup.tar.gz
tar -czvf backup.tar.gz /home2. 备份多个目录
bash
# 备份/home和/etc目录到backup.tar.gz
tar -czvf backup.tar.gz /home /etc3. 排除特定文件或目录
bash
# 备份/home目录,排除node_modules和tmp目录
tar -czvf backup.tar.gz --exclude=node_modules --exclude=tmp /home4. 备份系统重要文件
bash
# 备份系统配置文件
tar -czvf system_config_backup.tar.gz /etc /boot /usr/local5. 定时备份
创建一个备份脚本:
bash
#!/bin/bash
# 设置备份目录
BACKUP_DIR="/backup"
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 设置备份文件名
BACKUP_FILE="$BACKUP_DIR/system_backup_$(date +%Y%m%d).tar.gz"
# 备份系统重要文件
tar -czvf $BACKUP_FILE /etc /boot /usr/local /var/www
# 清理30天前的备份文件
find $BACKUP_DIR -name "system_backup_*.tar.gz" -mtime +30 -delete
echo "备份完成:$BACKUP_FILE"添加执行权限并运行:
bash
chmod +x backup_script.sh
./backup_script.sh实现备份文件的压缩与解压
压缩格式
Linux系统支持多种压缩格式,常见的有:
.tar.gz:使用gzip压缩,最常用.tar.bz2:使用bzip2压缩,压缩率更高.tar.xz:使用xz压缩,压缩率最高
压缩示例
bash
# 使用gzip压缩
tar -czvf backup.tar.gz /home
# 使用bzip2压缩
tar -cjvf backup.tar.bz2 /home
# 使用xz压缩
tar -cJvf backup.tar.xz /home解压示例
bash
# 解压gzip压缩文件
tar -xzvf backup.tar.gz
# 解压bzip2压缩文件
tar -xjvf backup.tar.bz2
# 解压xz压缩文件
tar -xJvf backup.tar.xz
# 解压到指定目录
tar -xzvf backup.tar.gz -C /target/directory查看压缩文件内容
bash
# 查看tar.gz文件内容
tar -tzvf backup.tar.gz
# 查看tar.bz2文件内容
tar -tjvf backup.tar.bz2
# 查看tar.xz文件内容
tar -tJvf backup.tar.xz恢复备份文件,验证备份效果
恢复示例
1. 恢复整个备份
bash
# 恢复备份到当前目录
tar -xzvf backup.tar.gz
# 恢复备份到指定目录
tar -xzvf backup.tar.gz -C /target/directory2. 恢复单个文件
bash
# 从备份中提取单个文件
tar -xzvf backup.tar.gz path/to/file3. 恢复多个文件
bash
# 从备份中提取多个文件
tar -xzvf backup.tar.gz path/to/file1 path/to/file2验证备份效果
1. 检查备份文件大小
bash
du -h backup.tar.gz2. 检查备份文件内容
bash
tar -tzvf backup.tar.gz | head -203. 测试恢复
bash
# 创建测试目录
mkdir test_restore
# 恢复备份到测试目录
tar -xzvf backup.tar.gz -C test_restore
# 检查恢复的文件
ls -la test_restore/4. 验证文件完整性
使用md5sum或sha256sum命令验证文件完整性:
bash
# 计算原文件的哈希值
md5sum /path/to/original/file > original.md5
# 恢复文件后计算哈希值
md5sum /path/to/restored/file > restored.md5
# 比较哈希值
diff original.md5 restored.md5备份策略建议
- 定期备份:设置定时任务,定期执行备份
- 增量备份:只备份变化的文件,减少备份时间和空间
- 异地备份:将备份文件存储到不同的物理位置,防止数据丢失
- 多版本备份:保留多个版本的备份,以便恢复到不同的时间点
- 测试恢复:定期测试备份的恢复过程,确保备份有效
增量备份示例
创建增量备份脚本:
bash
#!/bin/bash
# 设置备份目录
BACKUP_DIR="/backup"
mkdir -p $BACKUP_DIR
# 设置全量备份文件名
FULL_BACKUP="$BACKUP_DIR/full_backup_$(date +%Y%m%d).tar.gz"
# 设置增量备份文件名
INCREMENTAL_BACKUP="$BACKUP_DIR/incremental_backup_$(date +%Y%m%d).tar.gz"
# 检查是否需要全量备份
if [ ! -f "$BACKUP_DIR/full_backup_*.tar.gz" ] || [ $(find "$BACKUP_DIR" -name "full_backup_*.tar.gz" -mtime +7 | wc -l) -gt 0 ]; then
# 执行全量备份
echo "执行全量备份..."
tar -czvf $FULL_BACKUP /home /etc
echo "全量备份完成:$FULL_BACKUP"
else
# 执行增量备份
echo "执行增量备份..."
# 找到最近的全量备份
LATEST_FULL_BACKUP=$(ls -t "$BACKUP_DIR"/full_backup_*.tar.gz | head -1)
# 获取全量备份的时间戳
FULL_BACKUP_TIME=$(stat -c %Y "$LATEST_FULL_BACKUP")
# 执行增量备份
find /home /etc -type f -newerct "@$FULL_BACKUP_TIME" -print0 | tar -czvf $INCREMENTAL_BACKUP --null -T -
echo "增量备份完成:$INCREMENTAL_BACKUP"
fi
# 清理过期备份
find "$BACKUP_DIR" -name "full_backup_*.tar.gz" -mtime +30 -delete
find "$BACKUP_DIR" -name "incremental_backup_*.tar.gz" -mtime +14 -delete
echo "备份任务完成"灾难恢复计划
- 准备恢复介质:确保有可用的安装介质或恢复环境
- 建立恢复流程:记录详细的恢复步骤
- 测试恢复流程:定期测试恢复流程,确保其有效性
- 文档化:将备份和恢复过程文档化,方便团队成员参考
通过以上步骤,我们学习了如何使用tar命令进行系统备份,如何压缩和解压备份文件,以及如何验证备份效果和执行恢复操作。这些技能对于保障系统数据安全非常重要。
