拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Linux tar 命令完全指南:打包、压缩与解压实战手册

文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载本篇指南以 Linux 命令大全仓库中的 tar 命令文档 为主体系统讲解 tar 的核心概念、全部选项、常用压缩格式组合与经典实战案例。读完本文你将掌握从创建归档、查询归档到精准解压的完整技能并能依据场景在 gzip、bzip2、xz 等压缩算法间自由切换。tar 命令是什么tar 命令Tape Archive可以为 Linux 的文件和目录创建档案。利用 tar可以为某一特定文件创建档案备份文件也可以在档案中改变文件或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案现在用户可以在任何设备上创建档案。利用 tar 命令可以把一大堆的文件和目录全部打包成一个文件这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。在 Linux 命令大全仓库的命令分类中tar 归属于备份压缩类别与 gzip、bzip2、zip、cpio 等命令并列。打包与压缩的区别首先要弄清两个概念打包和压缩。打包指将一大堆文件或目录变成一个总的文件。压缩指将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这两个概念这源于 Linux 中很多压缩程序只能针对一个文件进行压缩。当你想压缩一大堆文件时必须先把这堆文件打成一个包tar 命令然后再用压缩程序进行压缩如 gzip、bzip2 命令。这也是为什么我们常看到.tar.gz、.tar.bz2这类双重后缀.tar表示打包后面的算法后缀表示压缩。语法tar [选项...] [FILE]...其中FILE为要打包的文件或目录列表。tar 选项全解tar 的选项十分丰富可按功能分组。理解每个分组的职责能帮助你在复杂场景下快速找到所需参数。核心操作选项以下选项决定了 tar 的基本动作是使用频率最高的部分选项长选项含义-A--catenate,--concatenate追加 tar 文件至归档-c--create创建一个新归档-d--diff,--compare找出归档和文件系统的差异--delete从归档非磁带中删除-r--append追加文件至归档结尾-t--list列出归档内容--test-label测试归档卷标并退出-u--update仅追加比归档中副本更新的文件-x--extract,--get从归档中解出文件操作修饰符选项含义--check-device创建增量归档时检查设备号默认-g,--listed-incrementalFILE处理新式 GNU 格式的增量备份-G,--incremental处理老式 GNU 格式的增量备份--ignore-failed-read遇上不可读文件时不要以非零值退出--levelNUMBER所创建的增量列表归档的输出级别-n,--seek归档可检索--no-check-device创建增量归档时不要检查设备号--no-seek归档不可检索--occurrence[NUMBER]仅处理归档中每个文件的第 NUMBER 个事件仅当与--delete、--diff、--extract或--list之一联合使用时有效NUMBER 默认为 1--sparse-versionMAJOR[.MINOR]设置离散sparse格式版本隐含--sparse-S,--sparse高效处理离散文件重写控制选项含义-k,--keep-old-files解压时不要替换已存在的文件将其视为错误--keep-directory-symlink解压时保留已存在指向目录的符号链接--keep-newer-files不要替换比归档中副本更新的已存在文件--no-overwrite-dir保留已存在目录的元数据--overwrite解压时重写存在的文件--overwrite-dir解压时重写已存在目录的元数据默认--recursive-unlink解压目录之前先清除目录层次--remove-files添加文件至归档后删除它们--skip-old-files解压时不要替换已存在的文件静默跳过它们-U,--unlink-first解压要重写的文件之前先删除它们-W,--verify写入以后尝试校验归档选择输出流选项含义--ignore-command-error忽略子进程的退出代码--no-ignore-command-error将子进程的非零退出代码视为错误-O,--to-stdout解压文件至标准输出--to-commandCOMMAND将解压的文件通过管道传送至另一个程序操作文件属性选项含义--atime-preserve[METHOD]在输出的文件上保留访问时间默认 METHOD‘replace’--delay-directory-restore直到解压结束才设置修改时间和所解目录的权限--group名称强制将 NAME 作为所添加文件的组所有者--modeCHANGES强制将所添加的文件权限更改为 CHANGES--mtimeDATE-OR-FILE从 DATE-OR-FILE 为添加的文件设置 mtime-m,--touch不要解压文件的修改时间--no-delay-directory-restore取消--delay-directory-restore的效果--no-same-owner将文件解压为你所有普通用户默认此项--no-same-permissions解压权限时使用用户的掩码位普通用户默认--numeric-owner总是以数字代表用户/组名称--owner名称强制将 NAME 作为所添加文件的所有者-p,--preserve-permissions,--same-permissions解压文件权限信息默认只为超级用户服务--preserve与-p和-s一样--same-owner尝试解压时保持所有者关系一致超级用户默认-s,--preserve-order,--same-order成员参数按归档中文件的相同顺序列出扩展文件属性处理选项含义--acls启用 POSIX ACLs 支持--no-acls禁用 POSIX ACLs 支持--no-selinux禁用 SELinux 上下文支持--no-xattrs禁用扩展属性支持--selinux启用 SELinux 上下文支持--xattrs启用扩展属性支持--xattrs-excludeMASK指定 xattr 键的排除模式--xattrs-includeMASK指定 xattr 键的包含模式设备选择和切换选项含义-f,--fileARCHIVE使用归档文件或 ARCHIVE 设备--force-local即使归档文件存在副本也将其视为本地归档-F,--info-script名称,--new-volume-script名称在每卷磁带最后运行脚本隐含-M-L,--tape-lengthNUMBER写入 NUMBER × 1024 字节后更换磁带-M,--multi-volume创建/列出/解压多卷归档文件--rmt-commandCOMMAND使用指定的 rmt COMMAND 代替 rmt--rsh-commandCOMMAND使用远程 COMMAND 代替 rsh--volno-fileFILE使用/更新 FILE 中的卷数设备分块选项含义-b,--blocking-factorBLOCKS每个记录 BLOCKS × 512 字节-B,--read-full-records读取时重新分块只对 4.2BSD 管道有效-i,--ignore-zeros忽略归档中的零字节块即文件结尾--record-sizeNUMBER每个记录的字节数 NUMBER乘以 512选择归档格式选项含义-H,--formatFORMAT创建指定格式的归档FORMAT 是以下格式中的一种格式说明gnuGNU tar 1.13.x 格式oldgnuGNU 格式tar 1.12paxPOSIX 1003.1-2001 (pax) 格式posix等同于 paxustarPOSIX 1003.1-1988 (ustar) 格式v7old V7 tar 格式此外还有--old-archive,--portability等同于--formatv7--pax-option关键字[[:]值][,关键字[[:]值]]...控制 pax 关键字--posix等同于--formatposix-V,--labelTEXT创建带有卷名 TEXT 的归档列出/解压时使用 TEXT 作为卷名的模式串压缩选项选项含义-a,--auto-compress使用归档后缀名来决定压缩程序-I,--use-compress-programPROG通过 PROG 过滤必须是能接受-d选项的程序-j,--bzip2通过 bzip2 过滤归档-J,--xz通过 xz 过滤归档--lzip通过 lzip 过滤归档--lzma通过 lzma 过滤归档--lzop通过 lzop 过滤归档--no-auto-compress不使用归档后缀名来决定压缩程序-z,--gzip,--gunzip,--ungzip通过 gzip 过滤归档-Z,--compress,--uncompress通过 compress 过滤归档本地文件选择选项含义--add-fileFILE添加指定的 FILE 至归档名字以-开始时很有用--backup[CONTROL]在删除前备份选择 CONTROL 版本-C,--directoryDIR改变至目录 DIR--excludePATTERN排除以 PATTERN 指定的文件--exclude-backups排除备份和锁文件--exclude-caches排除包含 CACHEDIR.TAG 的目录中的内容标识文件本身除外--exclude-caches-all排除包含 CACHEDIR.TAG 的目录--exclude-caches-under排除包含 CACHEDIR.TAG 的目录中所有内容--exclude-tagFILE除 FILE 自身外排除包含 FILE 的目录中的内容--exclude-tag-allFILE排除包含 FILE 的目录--exclude-tag-underFILE排除包含 FILE 的目录中的所有内容--exclude-vcs排除版本控制系统目录-h,--dereference跟踪符号链接将它们所指向的文件归档并输出--hard-dereference跟踪硬链接将它们所指向的文件归档并输出-K,--starting-fileMEMBER-NAME读取归档时从成员 MEMBER-NAME 开始--newer-mtimeDATE当只有数据改变时比较数据和时间--no-null禁用上一次--null选项的效果--no-recursion避免目录中的自动递归--no-unquote不以-T读取的文件名作为引用结束--null-T读取以空终止的名字-C禁用-N,--newerDATE-OR-FILE,--after-dateDATE-OR-FILE只保存比 DATE-OR-FILE 更新的文件--one-file-system创建归档时保存在本地文件系统中-P,--absolute-names不要从文件名中清除引导符/--recursion目录递归默认--suffixSTRING删除前备份的后缀除非被环境变量 SIMPLE_BACKUP_SUFFIX 覆盖否则覆盖常用后缀-T,--files-fromFILE从 FILE 中获取文件名来解压或创建文件--unquote以-T读取的文件名作为引用结束默认-X,--exclude-fromFILE排除 FILE 中列出的模式串文件名变换选项含义--strip-componentsNUMBER解压时从文件名中清除 NUMBER 个引导部分--transformEXPRESSION,--xformEXPRESSION使用 sed 表达式 EXPRESSION 进行文件名变换文件名匹配选项同时影响排除和包含模式串选项含义--anchored模式串匹配文件名头部--ignore-case忽略大小写--no-anchored模式串匹配任意/后字符默认对 exclusion 有效--no-ignore-case匹配大小写默认--no-wildcards逐字匹配字符串--no-wildcards-match-slash通配符不匹配/--wildcards使用通配符默认--wildcards-match-slash通配符匹配/默认对排除操作有效提示性输出选项含义--checkpoint[NUMBER]每隔 NUMBER 个记录显示进度信息默认为 10 个--checkpoint-actionACTION在每个检查点上执行 ACTION--full-time打印文件完整精度的时间--index-fileFILE将详细输出发送至 FILE-l,--check-links只要不是所有链接都被输出就打印信息--no-quote-charsSTRING禁用来自 STRING 的字符引用--quote-charsSTRING来自 STRING 的额外的引用字符--quoting-styleSTYLE设置名称引用风格-R,--block-number每个信息都显示归档内的块数--show-defaults显示 tar 默认选项--show-omitted-dirs列表或解压时列出每个不匹配查找标准的目录--show-transformed-names,--show-stored-names显示变换后的文件名或归档名--totals[SIGNAL]处理归档后打印总字节数当 SIGNAL 被触发时带参数-打印总字节数允许的信号为 SIGHUP、SIGQUIT、SIGINT、SIGUSR1 和 SIGUSR2同时接受不带 SIG 前缀的信号名称--utc以 UTC 格式打印文件修改时间-v,--verbose详细地列出处理的文件--warningKEYWORD警告控制-w,--interactive,--confirmation每次操作都要求确认兼容性选项选项含义-o创建归档时相当于--old-archive展开归档时相当于--no-same-owner其它选项选项含义-?,--help显示此帮助列表--restrict禁用某些潜在的有危险的选项--usage显示简短的用法说明--version打印程序版本补充说明长选项和相应短选项具有相同的强制参数或可选参数。除非以--suffix或SIMPLE_BACKUP_SUFFIX设置备份后缀否则备份后缀就是~。可以用--backup或VERSION_CONTROL设置版本控制可能的值为值含义none,off从不做备份t,numbered进行编号备份nil,existing如果编号备份存在则进行编号备份否则进行简单备份never,simple总是使用简单备份--quoting-style选项的有效参数为literal、shell、shell-always、c、c-maybe、escape、locale、clocale。此 tar 默认为--formatgnu -f- -b20 --quoting-styleescape --rmt-command/etc/rmt --rsh-command/usr/bin/ssh。参数文件或目录指定要打包的文件或目录列表。记住 f 的位置最常用的四个参数在 tar 的世界里最需要记住的一条铁律是-f是必须的且必须放在参数组的最后一个位置后面只能接档案名。tar -cf all.tar *.jpg # 将所有 .jpg 文件打成一个名为 all.tar 的包。-c 表示产生新的包-f 指定包的文件名。 tar -rf all.tar *.gif # 将所有 .gif 文件增加到 all.tar 包里面去。-r 表示增加文件。 tar -uf all.tar logo.gif # 更新原来 tar 包 all.tar 中的 logo.gif 文件。-u 表示更新文件。 tar -tf all.tar # 列出 all.tar 包中所有文件。-t 表示列出文件。简单归纳四个核心参数的记忆口诀c create创建x extract解包v verbose详细信息f filename文件名其后必须紧跟档案名同时牢记各压缩算法的标志字母-z是 gzip 属性-j是 bz2 属性-Z是 compress 属性-v显示所有过程-O将文件解开到标准输出。快速上手创建、查看与解压以下三行命令构成 tar 使用的最小闭环建议先牢记tar -cf archive.tar foo bar # 从文件 foo 和 bar 创建归档文件 archive.tar tar -tvf archive.tar # 详细列举归档文件 archive.tar 中的所有文件 tar -xf archive.tar # 展开归档文件 archive.tar 中的所有文件配合-v选项可以输出处理过程的详细信息tar -cvf archive.tar foo bar # 从文件 foo 和 bar 创建 archive.tar并显示过程 tar -tvf archive.tar # 详细列出 archive.tar 中的所有文件 tar -xf archive.tar # 从 archive.tar 提取所有文件六种压缩格式实战zip 格式压缩 zip -r [目标文件名].zip [原文件/目录名] 解压 unzip [原文件名].zip注-r参数代表递归。zip 格式的相关细节可参考仓库中的 zip 命令文档。tar 格式该格式仅仅打包不压缩打包tar -cvf [目标文件名].tar [原文件名/目录名] 解包tar -xvf [原文件名].tar注c参数代表 create创建x参数代表 extract解包v参数代表 verbose详细信息f参数代表 filename文件名所以f后必须接文件名。tar.gz 格式方式一利用前面已经打包好的 tar 文件直接用压缩命令。压缩gzip [原文件名].tar 解压gunzip [原文件名].tar.gz方式二一次性打包并压缩、解压并解包。打包并压缩 tar -zcvf [目标文件名].tar.gz [原文件名/目录名] 解压并解包 tar -zxvf [原文件名].tar.gz注z代表用 gzip 算法来压缩/解压。gzip 本身是 Linux 下使用广泛的压缩程序文件经它压缩过后名称后会多出.gz扩展名具体可参考仓库中的 gzip 命令文档。tar.bz2 格式方式一利用已经打包好的 tar 文件直接执行压缩命令。压缩bzip2 [原文件名].tar 解压bunzip2 [原文件名].tar.bz2方式二一次性打包并压缩、解压并解包。打包并压缩 tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名] 解压并解包 tar -jxvf [原文件名].tar.bz2注小写j代表用 bzip2 算法来压缩/解压。bzip2 采用 Burrows-Wheeler 块排序文本压缩算法和 Huffman 编码方式压缩文件其压缩率一般比基于 LZ77/LZ78 的压缩软件好得多命令行参数有意设计为非常接近 GNU gzip 的形式详见仓库中的 bzip2 命令文档。tar.xz 格式方式一利用已经打包好的 tar 文件直接用压缩命令。压缩xz [原文件名].tar 解压unxz [原文件名].tar.xz方式二一次性打包并压缩、解压并解包。打包并压缩 tar -Jcvf [目标文件名].tar.xz [原文件名/目录名] 解压并解包 tar -Jxvf [原文件名].tar.xz注大写J代表用 xz 算法来压缩/解压。xz 使用 LZMA2 压缩算法生成的压缩文件比传统 gzip、bzip2 生成的更小而且解压缩速度也很快详见仓库中的 xz 命令文档。tar.Z 格式已过时方式一利用已经打包好的 tar 文件直接用压缩命令。压缩compress [原文件名].tar 解压uncompress [原文件名].tar.Z方式二一次性打包并压缩、解压并解包。打包并压缩 tar -Zcvf [目标文件名].tar.Z [原文件名/目录名] 解压并解包 tar -Zxvf [原文件名].tar.Z注大写Z代表用 ncompress 算法来压缩/解压。ncompress 是早期 Unix 系统的压缩格式但由于 ncompress 的压缩率太低现已过时。jar 格式压缩jar -cvf [目标文件名].jar [原文件名/目录名] 解压jar -xvf [原文件名].jar注如果打包的是 Java 类库并且该类库中存在主类那么需要写一个META-INF/MANIFEST.MF配置文件内容如下Manifest-Version: 1.0 Created-By: 1.6.0_27 (Sun Microsystems Inc.) Main-class: the_name_of_the_main_class_should_be_put_here然后用如下命令打包jar -cvfm [目标文件名].jar META-INF/MANIFEST.MF [原文件名/目录名]这样以后就能用java -jar [文件名].jar命令直接运行主类中的public static void main方法了。7z 格式压缩7z a [目标文件名].7z [原文件名/目录名] 解压7z x [原文件名].7z注这个 7z 解压命令支持 rar 格式即7z x [原文件名].rar7-Zip 是拥有极高压缩比的开源压缩软件其 Linux 安装与更多用法可参考仓库中的 7z 命令文档。实战场景从打包到精准解压将文件全部打包成 tar 包tar -cvf log.tar log2012.log # 仅打包不压缩 tar -zcvf log.tar.gz log2012.log # 打包后以 gzip 压缩 tar -jcvf log.tar.bz2 log2012.log # 打包后以 bzip2 压缩在选项f之后的文件档名是自己取的习惯上用.tar作为辨识。如果加z选项则以.tar.gz或.tgz代表 gzip 压缩过的 tar 包如果加j选项则以.tar.bz2作为 tar 包名。解压到指定目录参数--strip-components NUMBER在提取时从文件名中删除 NUMBER 个前导组件如要去除前两层参数为--strip-components 2。tar -xvf portal-web-v2.0.0.tar --strip-components 1 -C 指定目录示例tar -xvf xxx.tar.gz -C /usr/src/a # 结果为 /usr/src/a/xxxxx/src/opp/b.txt tar -xvf xxx.tar.gz --strip-components1 -C /usr/src/a # 结果为 /usr/src/a/src/opp/b.txt可以看到--strip-components1去掉了归档内最外层的xxxxx目录层级这在解压带版本目录前缀的发布包时极为常用。查阅 tar 包内有哪些文件tar -ztvf log.tar.gz由于我们使用 gzip 压缩的 log.tar.gz所以要查阅 log.tar.gz 包内的文件时就得加上z这个选项。将 tar 包解压缩tar -zxvf /opt/soft/test/log.tar.gz在预设的情况下我们可以将压缩档在任何地方解开。只将 tar 内的部分文件解压出来tar -zxvf /opt/soft/test/log30.tar.gz log2013.log可以通过tar -ztvf来查阅 tar 包内的文件名称如果只要一个文件就可以通过这个方式来解压部分文件。文件备份下来并且保存其权限tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log这个-p的属性是很重要的尤其是当你要保留原本文件的属性时对应长选项--preserve-permissions。文件夹中比某个日期新的文件才备份tar -N 2012/11/13 -zcvf log17.tar.gz test-N--newerDATE-OR-FILE只保存比指定日期更新的文件。备份文件夹内容时排除部分文件tar --exclude scf/service -zcvf scf.tar.gz scf/*--excludePATTERN用于排除以 PATTERN 指定的文件是清理备份范围的高频选项。打包文件之后删除源文件tar -cvf test.tar test --remove-files--remove-files会在添加文件至归档后删除它们适合需要释放磁盘空间的归档场景。记忆速查表三行搞定 tar其实最简单的使用 tar 就只要记忆底下的方式即可压 缩tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 查 询tar -jtv -f filename.tar.bz2 解压缩tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录将j替换为zgzip、Jxz即可切换到对应的压缩算法-C用于指定解压目标目录。这套模式覆盖了日常 90% 以上的 tar 使用需求。在 linux-command 仓库中查阅与引用本文内容完整继承自仓库的 tar 命令文档。该仓库搜集了 600 多个 Linux 命令所有命令文档以 Markdown 形式存放于 command 目录可供随时查阅、学习与检索tar 命令文档本文主体来源gzip 命令文档、bzip2 命令文档、xz 命令文档tar 三种主流压缩算法的配套文档zip 命令文档、7z 命令文档、cpio 命令文档同属备份压缩类别的相关命令README.md包含命令分类索引与 Web 版在线搜索入口可按“备份压缩”分类浏览全部相关命令。掌握了 tar 的打包、压缩与解压三大核心能力后日常的备份归档、发布包处理与文件传输工作都能高效完成若需查询其他命令也可直接在该仓库的 command 目录中按命令名检索对应文档。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐Linux gzip 命令详解文件压缩、解压与 tar 打包组合实战指南Linux gzip 命令详解文件压缩、解压与 tar 打包组合实战指南 gzip 是 Linux 系统中使用最广泛的压缩命令之一用于将文件压缩为 .gz文档教程Linux压缩解压命令tar/gzip/zip完全指南 | linux-tutorialLinux压缩解压命令tar/gzip/zip完全指南 | linux tutorial 你是否还在为Linux系统中各种压缩格式的处理而困扰面对.tar、文档教程运维Notepad-- 跨平台文本编辑器完整指南从编译安装到批量查找与编码转换Notepad 跨平台文本编辑器完整指南从编译安装到批量查找与编码转换 Notepad 是一款开源跨平台文本编辑器运行于 Windows、Linux 和 m文档教程上一篇niri 命名工作区Named Workspaces完全指南静态工作区、绑定窗口与按工作区定制布局下一篇Umi-OCR 长图识别3 步跑通超大图批量识别长截图不再被压糊创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门