Linux 备份实战:tar 与 gzip 组合 3 种高效用法与脚本示例 Linux 备份实战tar 与 gzip 组合 3 种高效用法与脚本示例在 Linux 系统管理中数据备份是每个运维工程师的必修课。面对海量日志、配置文件和应用数据如何高效地进行压缩备份既节省存储空间又便于管理本文将深入探讨 tar 和 gzip 这对黄金组合的三种实战用法并提供可直接投入生产的 Shell 脚本示例。1. 基础原理为什么选择 tar gzip在开始实战前我们需要理解这两个工具的核心特性tarTape Archive专为目录和文件集合设计保留完整的文件属性权限、时间戳等支持增量备份--listed-incremental不提供压缩功能仅实现归档gzip基于 DEFLATE 算法的高效压缩压缩率通常在60%-70%文本文件单文件处理模式无法直接操作目录支持1-9级压缩-1最快/-9最佳组合优势对比表工具组合目录支持压缩率保留属性适用场景纯gzip❌★★★❌单文件快速压缩纯tar✔️-✔️目录归档不压缩targzip✔️★★★★✔️生产环境备份提示在需要更高压缩比的场景可考虑将gzip替换为bzip2.tar.bz2或xz.tar.xz但会显著增加CPU消耗2. 实战方案一带时间戳的全量备份这是最基本的备份策略适合中小型项目的定期全量备份。以下脚本实现了自动添加备份时间戳显示实时压缩进度保留原始文件权限#!/bin/bash # 全量备份脚本 full_backup.sh BACKUP_SRC/var/www /etc/nginx # 需要备份的目录 BACKUP_DEST/backups # 备份存储位置 PREFIXfull_backup # 备份文件前缀 TIMESTAMP$(date %Y%m%d_%H%M%S) BACKUP_FILE${BACKUP_DEST}/${PREFIX}_${TIMESTAMP}.tar.gz echo 开始全量备份: $(date) tar -czvf ${BACKUP_FILE} \ --absolute-names \ --warningno-file-changed \ ${BACKUP_SRC} 21 | while read line; do echo -n . done echo -e \n备份完成: ${BACKUP_FILE} ls -lh ${BACKUP_FILE}关键参数解析-c创建新归档-z使用gzip压缩-v显示处理文件通过管道实现进度点显示--absolute-names保留绝对路径谨慎使用--warningno-file-changed忽略备份期间文件变化的警告典型输出开始全量备份: Mon Jul 15 14:30:22 CST 2023 ......... 备份完成: /backups/full_backup_20230715_143022.tar.gz -rw-r--r-- 1 root root 1.2G Jul 15 14:31 /backups/full_backup_20230715_143022.tar.gz3. 实战方案二排除特定文件类型的智能压缩实际备份时我们经常需要排除临时文件、日志或缓存等非必要内容。这个脚本展示了如何通过模式匹配排除文件自动清理旧备份记录备份日志#!/bin/bash # 排除型备份脚本 exclude_backup.sh CONFIG_FILE/etc/backup_exclude.conf # 排除规则配置文件 LOG_FILE/var/log/backup.log { echo 备份开始 $(date) # 读取排除规则每行一个模式 if [ -f ${CONFIG_FILE} ]; then EXCLUDE_FROM--exclude-from${CONFIG_FILE} else cat ${CONFIG_FILE} EOF *.tmp *.log *.cache /tmp/* /var/cache/* EOF echo 生成默认排除配置文件: ${CONFIG_FILE} fi # 生成备份文件名 BACKUP_FILE/backups/exclude_$(hostname)_$(date %Y%m%d).tar.gz # 执行备份 tar -czf ${BACKUP_FILE} \ ${EXCLUDE_FROM} \ --exclude*.tar.gz \ --exclude*.iso \ / 2/dev/null # 清理7天前的备份 find /backups -name exclude_*.tar.gz -mtime 7 -delete echo 生成备份: ${BACKUP_FILE} echo 磁盘使用: $(df -h ${BACKUP_FILE%/*}) echo 备份完成 $(date) } ${LOG_FILE} 21排除规则配置示例# 注释行以#开头 *.swp *.bak ~$* .DS_Store .thumbnails/注意排除规则支持通配符和完整路径匹配规则文件需每行一个模式4. 实战方案三基于find的增量备份策略对于大型系统全量备份效率低下。这个方案利用find命令实现按时间筛选新增/修改文件多线程压缩加速处理自动验证备份完整性#!/bin/bash # 增量备份脚本 incremental_backup.sh LAST_BACKUP_TIME_FILE/var/last_backup.time MIN_FILE_SIZE10M # 不压缩小文件 THREADS$(nproc) # 使用全部CPU核心 # 获取上次备份时间 if [ -f ${LAST_BACKUP_TIME_FILE} ]; then SINCE_TIME-newermt $(cat ${LAST_BACKUP_TIME_FILE}) else echo 首次运行将执行全量备份 SINCE_TIME fi # 生成文件列表 FILE_LIST$(mktemp) find /data \ -type f \ ${SINCE_TIME} \ -size ${MIN_FILE_SIZE} \ -not -name *.gz \ -print0 ${FILE_LIST} # 多线程压缩 echo 发现 $(wc -l ${FILE_LIST}) 个待处理文件 cat ${FILE_LIST} | xargs -0 -P ${THREADS} -I {} sh -c gzip -k -9 {} echo 压缩完成: {} # 更新备份时间 date %Y-%m-%d %H:%M:%S ${LAST_BACKUP_TIME_FILE} rm -f ${FILE_LIST} echo 增量备份完成于: $(cat ${LAST_BACKUP_TIME_FILE})性能优化技巧使用-P参数实现并行处理通过-size过滤小文件避免压缩负收益-print0配合-0处理含空格文件名记录时间戳实现真正的增量5. 高级技巧与故障处理5.1 备份完整性验证在关键任务备份后务必验证归档文件# 检查tar.gz完整性 check_archive() { if gzip -t $1 tar -tzf $1 /dev/null; then echo 验证通过: $1 return 0 else echo 损坏的归档: $1 2 return 1 fi } # 示例用法 check_archive /backups/full_backup_20230715.tar.gz5.2 网络传输优化当需要传输备份文件时使用管道避免临时文件# 边压缩边传输到远程服务器 tar -czf - /data | ssh userbackup-server cat /backups/remote_$(date %Y%m%d).tar.gz # 带进度显示版本 pv /data | tar -czf - | ssh userbackup-server cat /backups/remote.tar.gz5.3 异常处理模板在自动化备份脚本中加入错误处理#!/bin/bash # 带错误处理的备份脚本 set -euo pipefail # 严格模式 trap cleanup $? EXIT cleanup() { if [ $1 -ne 0 ]; then echo 备份失败错误码: $1 2 # 发送警报 send_alert Backup failed with code $1 fi rm -f ${TEMP_FILE:-/tmp/nonexistent} } send_alert() { # 实现邮件/短信报警 echo $1 | mail -s 备份警报 adminexample.com } main() { local temp_file$(mktemp) # 备份操作... } main6. 恢复策略与最佳实践6.1 典型恢复操作# 解压到原位置保留权限 tar -xzvf backup.tar.gz -C / # 仅提取特定文件 tar -tzvf backup.tar.gz | grep important_file tar -xzvf backup.tar.gz path/to/file6.2 备份策略建议3-2-1规则至少3份副本2种不同介质1份异地备份生命周期管理# 自动清理旧备份 find /backups -name *.tar.gz -type f -mtime 30 -delete监控关键指标# 检查备份文件大小变化 watch -n 3600 du -sh /backups/*.tar.gz在实际运维中我曾遇到过一个典型案例某服务器因存储故障导致数据丢失但由于实施了本文介绍的增量备份方案最终仅丢失了15分钟内的数据远优于传统的每日全备方案。这印证了选择合适的备份策略对业务连续性的重要性。

相关新闻

最新新闻

YOLO模型训练实战:从数据标注到本地部署的完整指南

YOLO模型训练实战:从数据标注到本地部署的完整指南

想自己动手训练一个能识别特定物体的AI模型,却总被繁琐的环境配置、数据准备和复杂的训练参数劝退?看着别人分享的YOLO模型效果很酷,但自己从零开始却不知如何下手?本文将为你提供一份从数据采集到本地部署的完整YOLO模型训练实战…

2026/7/5 12:48:08
零基础一天搞定YOLO目标检测:从数据采集到本地部署全流程实战

零基础一天搞定YOLO目标检测:从数据采集到本地部署全流程实战

想用AI识别自家猫主子、检测工厂零件瑕疵,或者做个智能安防摄像头,但一看到“目标检测”、“模型训练”、“本地部署”这些词就头大?觉得这是算法工程师的专属领域,自己没基础、没数据、没算力,只能望而却步&#xff1…

2026/7/5 12:48:08
Playwright+Allure自动化测试:构建CI/CD智能质量门禁的实践指南

Playwright+Allure自动化测试:构建CI/CD智能质量门禁的实践指南

1. 项目概述:当自动化测试遇见质量门禁在软件交付的战场上,速度和质量常常被置于天平的两端。开发团队追求快速迭代,而质量保障团队则必须守住底线,防止有缺陷的代码流入生产环境。传统的质量门禁,比如手动回归测试或简…

2026/7/5 12:48:08
告别Android驱动安装烦恼:Windows平台一键安装最新ADB驱动完整指南

告别Android驱动安装烦恼:Windows平台一键安装最新ADB驱动完整指南

告别Android驱动安装烦恼:Windows平台一键安装最新ADB驱动完整指南 【免费下载链接】Latest-adb-fastboot-installer-for-windows A Simple Android Driver installer tool for windows (Always installs the latest version) 项目地址: https://gitcode.com/gh_m…

2026/7/5 12:48:08
JEPA框架在发动机瞬态排放建模中的创新应用

JEPA框架在发动机瞬态排放建模中的创新应用

1. JEPA框架在瞬态发动机排放建模中的创新应用 作为一名长期从事汽车动力系统研究的工程师,我见证了排放建模技术从传统物理模型到数据驱动方法的演进过程。近年来,深度学习在发动机排放预测领域展现出巨大潜力,但传统架构如LSTM在实际应用中…

2026/7/5 12:48:07
别再用随机延时假装真人了:AI级浏览行为模拟,封号概率直降90%

别再用随机延时假装真人了:AI级浏览行为模拟,封号概率直降90%

做工业数据采集的同行应该都踩过这个坑:请求头改得一模一样,代理IP天天换,随机延时也加了,结果还是批量触发风控,IP封完封账号,跑不了半天就全军覆没。 很多人以为反反爬的核心是请求头和代理,其…

2026/7/5 12:43:06

月新闻