Linux 运维必学(六)|文件压缩、打包与备份还原全攻略
在 Linux 运维工作中,文件压缩、打包、数据备份还原是日常高频操作。很多新手容易混淆「压缩」和「打包」:压缩是减小文件体积,打包是将多个文件/目录合并为一个文件。本文由浅入深整合 Linux 主流压缩工具、tar 打包核心命令、XFS 专属备份还原、定制光盘镜像、dd/cpio 底层备份工具,搭配通俗解读+落地实操命令,零基础也能看懂学会。
一、Linux 主流压缩工具(gzip/bzip2/xz)
Linux 三大常用压缩工具:gzip、bzip2、xz,核心共性:仅支持单文件压缩,无法直接打包目录,需配合 tar 命令实现目录压缩打包。1、gzip 压缩(.gz 格式|日常首选)
默认压缩后删除原文件,压缩速度快,兼容性最强,适合日常普通压缩场景。压缩率计算公式:压缩率=(原始大小−压缩后大小)/原始大小 ×100%① gzip 文件名 (压缩文件,生成 .gz 文件,删除原文件)② gzip -c 文件名 >> 文件名.gz (保留原文件压缩)③ zcat 文件名.gz / zmore 文件名.gz / zless 文件名.gz (不解压直接查看压缩文件内容)④ zgrep 关键词 文件名.gz (不解压检索压缩文件内容)⑤ znew 旧文件.Z (将 .Z 格式压缩文件转为 .gz 格式)2、bzip2 压缩(.bz2 格式|均衡压缩)
压缩率优于 gzip,速度稍慢,适配中小型文件压缩。① bzip2 文件名 (压缩生成 .bz2 文件,删除原文件)② bzcat 文件名.bz2 / bzmore 文件名.bz2 (不解压查看内容)③ bzgrep 关键词 文件名.bz2 (不解压检索内容)3、xz 压缩(.xz 格式|高压缩归档)
三者中压缩率最高,压缩速度最慢,适合归档、长期存储的文件。① xz 文件名 (压缩生成 .xz 文件,删除原文件)② xzcat 文件名.xz / xzmore 文件名.xz (不解压查看内容)③ xzgrep 关键词 文件名.xz (不解压检索内容)二、tar 打包命令(核心重点)
tar 是 Linux 专属打包工具,本身不压缩,仅用于合并文件/目录;搭配 z/j/J 参数,可实现「打包+压缩」一体化操作,是运维最常用的归档命令。1、核心参数互斥禁忌(必考必记)
①打包操作参数互斥:-c(创建)、-t(查看)、-x(解压)不能同时使用②压缩格式参数互斥:-z(gzip)、-j(bzip2)、-J(xz)不能同时使用③-f 参数必须紧跟打包文件名,建议单独放置,避免命令报错2、全套参数详解(基础+进阶)
① -p:保留文件原有权限、属性,适合系统配置文件备份② -P:保留文件绝对路径,允许打包文件包含根目录③ --exclude=文件名:打包时排除指定文件/目录④ --newer:打包 mtime、ctime 晚于指定时间的文件⑤ --newer-mtime:仅打包 mtime 晚于指定时间的文件3、高频实操案例(全覆盖可直接复制)
① tar -zcvf test.tar.gz test/ (gzip 打包压缩目录,生成 tar.gz 文件)② tar -jcvf test.tar.bz2 test/ (bzip2 打包压缩目录,生成 tar.bz2 文件)③ tar -Jcvf test.tar.xz test/ (xz 打包压缩目录,生成 tar.xz 文件)① tar -ztvf test.tar.gz (查看 gzip 压缩包内容)② tar -jtvf test.tar.bz2 (查看 bzip2 压缩包内容)① tar -zxvf test.tar.gz -C /tmp/ (解压到 /tmp 目录)① tar -jxvf /root/etc.tar.bz2 etc/shadow (仅解压包内 shadow 文件)① tar -zcvf etc.tar.gz /etc --exclude=/etc/yum.repos.d (打包 etc 目录,排除 yum 源目录)① tar -cvf - /etc | tar -xvf - -C /tmp/ (将 etc 目录完整迁移到 tmp 目录)① tar -cvf /dev/st0 /home /root /etc (将指定目录备份到磁带机设备)三、XFS 文件系统专属备份与还原
XFS 文件系统不支持传统 dump 备份,专属工具为 xfsdump(备份)、xfsrestore(还原),是服务器 XFS 分区备份核心工具。1、xfsdump 硬性使用限制(避坑核心)
①仅支持已挂载的 XFS 文件系统,无法备份未挂载分区③仅能备份 XFS 格式文件系统,不兼容 EXT4 等其他格式④备份文件仅可通过 xfsrestore 解析还原⑤通过 UUID 区分备份分区,不能备份两个相同 UUID 的 XFS 分区2、全量备份 & 增量备份(原理+案例+命令)
会扫描并备份当前分区内所有文件数据,无论文件是否修改、是否新增,全盘统一归档保存。优点是备份文件完整、还原简单、不易出错;缺点是备份速度慢、占用磁盘空间大。类比:每周五整理全盘文件,不管文件有没有改动,全部重新复制一份存档。首次初始化备份、系统版本更新、重大配置变更前的兜底备份,保证出问题可完整回滚。依托上一次备份记录,只备份新增、修改、变动过的文件,无变动的旧文件不会重复备份。最大优势是备份速度快、极致节省存储空间;缺点是还原依赖性强。类比:周五做了全盘备份后,周一、周二、周三只备份这几天新增/修改的文件,旧文件不再重复保存。日常高频定时备份(每日备份),大幅节省磁盘空间与备份时间。增量备份无法单独还原:恢复数据时,必须先恢复【首次全量备份】,再依次恢复【后续所有增量备份】,任意一份增量备份丢失,都会导致数据不完整。xfsdump -l 0 -L boot_full -f /srv/boot_full.dump /boot② 日常增量备份(level 1 仅备份变动数据)xfsdump -l 1 -L boot_inc -f /srv/boot_inc.dump /boot参数说明:-l 0 代表全量备份,-l 1~9 代表不同层级增量备份;-L 填写备份标签备注。3、xfsrestore 还原实操
① xfsrestore -f /srv/boot.dump -L boot_all -s grub2 /tmp/boot2 (仅还原 grub2 目录到指定路径)① xfsrestore -f /srv/boot.dump -i /tmp/boot3 (进入交互模式,手动选择需要还原的文件)四、光盘镜像制作与烧录(归档备份延伸)
日常可制作 ISO 镜像文件,用于数据归档、系统安装,核心分为「制作镜像」和「烧录光盘」两步。1、mkisofs 制作 ISO 镜像(普通数据镜像)
核心功能:将文件/目录打包为标准 ISO 镜像,默认所有文件位于镜像根目录。关键参数:-graft-point,可自定义文件在镜像内的目录结构,避免文件全部散落于镜像根目录,适配复杂镜像制作需求,或者将所有的数据预先处理到某一个目录中, 再烧录该目录即可!附上实操实例:① mkisofs -o test.iso -graft-point /testdir=/root/testdir (将宿主机 /root/testdir 目录,打包到 ISO 镜像内的 /testdir 路径,自定义镜像内部目录结构)② mkisofs -o system.iso -graft-point boot=/boot etc=/etc (批量自定义目录,将宿主机 /boot、/etc 分别对应放入镜像内 boot、etc 目录)2、wodim/cdrecord 光盘烧录
主流工具:wodim(推荐)、cdrecord,可将 ISO 镜像写入空白光盘。烧录前可执行快速擦除光盘数据,参数 blank=fast,避免旧数据残留,同时附上完整实操实例:① wodim blank=fast --dev=/dev/sr0 (快速擦除默认光驱数据)② wodim --dev=/dev/sr0 xxx.iso (指定默认光驱刻录镜像)3、进阶:制作可开机自动化 ISO 镜像(kickstart+rsync)
普通 ISO 镜像仅能存储数据,无法实现系统自动安装部署,企业运维中常需要制作可开机、自动化安装的系统镜像,核心搭配工具:kickstart + rsync,整体操作流程相对繁琐,属于定制化进阶用法。① rsync:同步原版系统镜像内所有系统文件、引导文件、依赖配置,保证新镜像具备完整开机引导能力,不丢失系统核心文件。② kickstart:生成自动化应答配置文件,预设系统分区、密码、软件包、开机配置,实现光盘开机后无人值守自动安装系统。①挂载官方原版系统 ISO 镜像,提取完整系统引导文件与内核文件②通过 rsync 精准同步所有系统文件到本地工作目录,保留引导属性与文件权限③编写 kickstart 自动安装配置文件,定义系统安装规则④将 ks.cfg 配置文件嵌入镜像目录,修改开机引导参数,指定自动加载配置⑤通过 mkisofs 重新打包,生成可开机、自动化部署的定制 ISO 镜像补充说明:该场景多用于服务器批量装机、企业标准化系统部署,步骤繁琐、参数较多,日常普通文件归档几乎不用,因此属于进阶冷门知识点。五、小众必备底层备份工具:dd & cpio(高危进阶)
1、dd 扇区级全盘备份(底层高危)
核心作用:扇区级完整备份,可备份磁盘、分区、镜像,适配所有文件系统。核心局限:默认逐扇区读写,空扇区也会占用备份空间,备份文件体积大。XFS 分区 dd 备份后注意事项:需清除原有日志信息,重新修改 UUID,否则无法正常挂载。标准修复命令(生产实操):xfs_admin -U 新 UUID /dev/sdb12、cpio 系统级全类型备份(整机救援必备)
cpio 是 Linux底层级、全类型备份工具,和 tar 相比兼容性更强。普通压缩打包工具仅能备份普通文本、目录文件,而 cpio 可以备份系统所有特殊文件,包含设备文件、链接文件、管道文件等,常用于系统整机备份、救援备份,是运维冷门但刚需的核心工具。核心工作原理:cpio 本身不会主动检索文件,依赖 find 命令筛选文件,通过管道接收 find 找到的文件列表,再完成打包备份;还原时可精准解析备份包内所有文件结构,完整还原文件属性。⑥ -d:还原时自动创建缺失目录(必加,否则层级文件还原失败)① 备份语法:find 相对路径 | cpio -ocvB > 备份文件名.cpio② 还原语法:cpio -idvc < 备份文件名.cpio① find ./etc | cpio -ocvB > etc_backup.cpio (相对路径备份,还原仅在当前目录生成etc文件夹,不会覆盖系统原文件)① find /etc | cpio -ocvB > etc_backup.cpio (带根目录绝对路径备份)如果 find 使用带 / 的绝对路径备份,备份包内会永久记录文件的绝对路径。后续执行还原操作时,cpio 会直接识别系统真实路径,强制覆盖系统原有 /etc 配置文件,直接导致系统配置错乱、服务瘫痪、系统崩溃,是生产环境绝对禁止的操作。还原使用技巧:所有 cpio 备份文件,建议统一放到临时目录执行还原,避免误操作覆盖业务数据。六、全文核心总结
1、压缩工具(gzip/bzip2/xz)仅支持单文件压缩,目录必须用 tar 打包后压缩;2、tar 命令参数严格互斥,-f 单独放置是规避报错的关键,日常归档优先 tar.gz 格式;3、XFS 分区专属 xfsdump/xfsrestore 备份,严格遵守挂载、root 权限等限制;4、dd、cpio 适合底层系统备份,操作风险高,必须提前熟悉参数禁忌;5、所有备份、解压操作,生产环境优先保留原文件,避免数据误删、覆盖。