https://www.jianshu.com/p/1ad5d852d13b

1 tar

1.2 tar介绍

  tar命令是linux系统中对文件和目录解压缩命令。tar命令可以用于对后缀名为.tar,tar.gz等常用文件。

1.3 tar参数

系统中通过tar --help查看:

 Main operation mode:

  -A, --catenate, --concatenate   append tar files to an archive
-c, --create create a new archive
-d, --diff, --compare find differences between archive and file system
--delete delete from the archive (not on mag tapes!)
-r, --append append files to the end of an archive
-t, --list list the contents of an archive
--test-label test the archive volume label and exit
-u, --update only append files newer than copy in archive
-x, --extract, --get extract files from an archive Operation modifiers: --check-device check device numbers when creating incremental
archives (default)
-g, --listed-incremental=FILE handle new GNU-format incremental backup
-G, --incremental handle old GNU-format incremental backup
--ignore-failed-read do not exit with nonzero on unreadable files
--level=NUMBER dump level for created listed-incremental archive
-n, --seek archive is seekable
--no-check-device do not check device numbers when creating
incremental archives
--no-seek archive is not seekable
--occurrence[=NUMBER] process only the NUMBERth occurrence of each file
in the archive; this option is valid only in
conjunction with one of the subcommands --delete,
--diff, --extract or --list and when a list of
files is given either on the command line or via
the -T option; NUMBER defaults to 1
--sparse-version=MAJOR[.MINOR]
set version of the sparse format to use (implies
--sparse)
-S, --sparse handle sparse files efficiently Overwrite control: -k, --keep-old-files don't replace existing files when extracting,
treat them as errors
--keep-newer-files don't replace existing files that are newer than
their archive copies
--no-overwrite-dir preserve metadata of existing directories
--overwrite overwrite existing files when extracting
--overwrite-dir overwrite metadata of existing directories when
extracting (default)
--recursive-unlink empty hierarchies prior to extracting directory
--remove-files remove files after adding them to the archive
--skip-old-files don't replace existing files when extracting,
silently skip over them
-U, --unlink-first remove each file prior to extracting over it
-W, --verify attempt to verify the archive after writing it Select output stream: --ignore-command-error ignore exit codes of children
--no-ignore-command-error treat non-zero exit codes of children as
error
-O, --to-stdout extract files to standard output
--to-command=COMMAND pipe extracted files to another program Handling of file attributes: --atime-preserve[=METHOD] preserve access times on dumped files, either
by restoring the times after reading
(METHOD='replace'; default) or by not setting the
times in the first place (METHOD='system')
--delay-directory-restore delay setting modification times and
permissions of extracted directories until the end
of extraction
--group=NAME force NAME as group for added files
--mode=CHANGES force (symbolic) mode CHANGES for added files
--mtime=DATE-OR-FILE set mtime for added files from DATE-OR-FILE
-m, --touch don't extract file modified time
--no-delay-directory-restore
cancel the effect of --delay-directory-restore
option
--no-same-owner extract files as yourself (default for ordinary
users)
--no-same-permissions apply the user's umask when extracting permissions
from the archive (default for ordinary users)
--numeric-owner always use numbers for user/group names
--owner=NAME force NAME as owner for added files
-p, --preserve-permissions, --same-permissions
extract information about file permissions
(default for superuser)
--preserve same as both -p and -s
--same-owner try extracting files with the same ownership as
exists in the archive (default for superuser)
-s, --preserve-order, --same-order
sort names to extract to match archive Handling of extended file attributes: --acls Enable the POSIX ACLs support
--no-acls Disable the POSIX ACLs support
--no-selinux Disable the SELinux context support
--no-xattrs Disable extended attributes support
--selinux Enable the SELinux context support
--xattrs Enable extended attributes support
--xattrs-exclude=MASK specify the exclude pattern for xattr keys
--xattrs-include=MASK specify the include pattern for xattr keys Device selection and switching: -f, --file=ARCHIVE use archive file or device ARCHIVE
--force-local archive file is local even if it has a colon
-F, --info-script=NAME, --new-volume-script=NAME
run script at end of each tape (implies -M)
-L, --tape-length=NUMBER change tape after writing NUMBER x 1024 bytes
-M, --multi-volume create/list/extract multi-volume archive
--rmt-command=COMMAND use given rmt COMMAND instead of rmt
--rsh-command=COMMAND use remote COMMAND instead of rsh
--volno-file=FILE use/update the volume number in FILE Device blocking: -b, --blocking-factor=BLOCKS BLOCKS x 512 bytes per record
-B, --read-full-records reblock as we read (for 4.2BSD pipes)
-i, --ignore-zeros ignore zeroed blocks in archive (means EOF)
--record-size=NUMBER NUMBER of bytes per record, multiple of 512 Archive format selection: -H, --format=FORMAT create archive of the given format FORMAT is one of the following: gnu GNU tar 1.13.x format
oldgnu GNU format as per tar <= 1.12
pax POSIX 1003.1-2001 (pax) format
posix same as pax
ustar POSIX 1003.1-1988 (ustar) format
v7 old V7 tar format --old-archive, --portability
same as --format=v7
--pax-option=keyword[[:]=value][,keyword[[:]=value]]...
control pax keywords
--posix same as --format=posix
-V, --label=TEXT create archive with volume name TEXT; at
list/extract time, use TEXT as a globbing pattern
for volume name Compression options: -a, --auto-compress use archive suffix to determine the compression
program
-I, --use-compress-program=PROG
filter through PROG (must accept -d)
-j, --bzip2 filter the archive through bzip2
-J, --xz filter the archive through xz
--lzip filter the archive through lzip
--lzma filter the archive through lzma
--lzop
--no-auto-compress do not use archive suffix to determine the
compression program
-z, --gzip, --gunzip, --ungzip filter the archive through gzip
-Z, --compress, --uncompress filter the archive through compress Local file selection: --add-file=FILE add given FILE to the archive (useful if its name
starts with a dash)
--backup[=CONTROL] backup before removal, choose version CONTROL
-C, --directory=DIR change to directory DIR
--exclude=PATTERN exclude files, given as a PATTERN
--exclude-backups exclude backup and lock files
--exclude-caches exclude contents of directories containing
CACHEDIR.TAG, except for the tag file itself
--exclude-caches-all exclude directories containing CACHEDIR.TAG
--exclude-caches-under exclude everything under directories containing
CACHEDIR.TAG
--exclude-tag=FILE exclude contents of directories containing FILE,
except for FILE itself
--exclude-tag-all=FILE exclude directories containing FILE
--exclude-tag-under=FILE exclude everything under directories
containing FILE
--exclude-vcs exclude version control system directories
-h, --dereference follow symlinks; archive and dump the files they
point to
--hard-dereference follow hard links; archive and dump the files they
refer to
-K, --starting-file=MEMBER-NAME
begin at member MEMBER-NAME in the archive
--newer-mtime=DATE compare date and time when data changed only
--no-null disable the effect of the previous --null option
--no-recursion avoid descending automatically in directories
--no-unquote do not unquote filenames read with -T
--null -T reads null-terminated names, disable -C
-N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE
only store files newer than DATE-OR-FILE
--one-file-system stay in local file system when creating archive
-P, --absolute-names don't strip leading `/'s from file names
--recursion recurse into directories (default)
--suffix=STRING backup before removal, override usual suffix ('~'
unless overridden by environment variable
SIMPLE_BACKUP_SUFFIX)
-T, --files-from=FILE get names to extract or create from FILE
--unquote unquote filenames read with -T (default)
-X, --exclude-from=FILE exclude patterns listed in FILE File name transformations: --strip-components=NUMBER strip NUMBER leading components from file
names on extraction
--transform=EXPRESSION, --xform=EXPRESSION
use sed replace EXPRESSION to transform file
names File name matching options (affect both exclude and include patterns): --anchored patterns match file name start
--ignore-case ignore case
--no-anchored patterns match after any `/' (default for
exclusion)
--no-ignore-case case sensitive matching (default)
--no-wildcards verbatim string matching
--no-wildcards-match-slash wildcards do not match `/'
--wildcards use wildcards (default)
--wildcards-match-slash wildcards match `/' (default for exclusion) Informative output: --checkpoint[=NUMBER] display progress messages every NUMBERth record
(default 10)
--checkpoint-action=ACTION execute ACTION on each checkpoint
--full-time print file time to its full resolution
--index-file=FILE send verbose output to FILE
-l, --check-links print a message if not all links are dumped
--no-quote-chars=STRING disable quoting for characters from STRING
--quote-chars=STRING additionally quote characters from STRING
--quoting-style=STYLE set name quoting style; see below for valid STYLE
values
-R, --block-number show block number within archive with each message --show-defaults show tar defaults
--show-omitted-dirs when listing or extracting, list each directory
that does not match search criteria
--show-transformed-names, --show-stored-names
show file or archive names after transformation
--totals[=SIGNAL] print total bytes after processing the archive;
with an argument - print total bytes when this
SIGNAL is delivered; Allowed signals are: SIGHUP,
SIGQUIT, SIGINT, SIGUSR1 and SIGUSR2; the names
without SIG prefix are also accepted
--utc print file modification times in UTC
-v, --verbose verbosely list files processed
--warning=KEYWORD warning control
-w, --interactive, --confirmation
ask for confirmation for every action Compatibility options: -o when creating, same as --old-archive; when
extracting, same as --no-same-owner Other options: -?, --help give this help list
--restrict disable use of some potentially harmful options
--usage give a short usage message
--version print program version

挑选常用的参数说明:

  • -c:创建新的压缩文件
  • -x :从压缩的文件中解压文件
  • -v :显示解压缩操作的过程
  • -f :指定压缩文件
  • -z :支持gzip解压文件
  • -C :切换到指定目录
  • -r:添加文件至已压缩文件
  • -u: 添加改变了和现有的文件到已经存在的压缩文件
  • -t :显示压缩文件的内容目录结构等
  • -j :支持bzip2解压文件
  • -k :解压时不覆盖当前目录下原有文件
  • --delete:删除压缩包内的文件

1.4 tar压缩

1.4.1 压缩tar包
使用-c参数
多个文件压缩:
tar -cvf t.tar t1.txt t2.txt
目录压缩:
tar -cvf dir.tar dir1/
匹配压缩:
tar -cvf t.tar *.txt

1.4.2 压缩tar.gz包
使用-z参数
压缩为gizp
tar -zcvf t.tar.gz t1.txt t2.txt

1.4.3 压缩gar.bz2包
使用-j参数
压缩为bzip2
tar -jcvf t.tar.bz2 t1.txt t2.txt

1.4.4 查看压缩包内容
使用-t参数
tar -tvf t.tar

1.4.5 向压缩包添加/更新文件
使用-r参数
tar -rf t.tar newfile

1.4.6 删除压缩包内的文件
如t.tar内包含了t1.txt和其他文件,需删除t1.txt文件,使用--delete参数,需要注意删除文件的目录是全路径。
tar -f t.tar --delete /t/t1.txt

1.4.7 压缩时删除源文件
慎用,如果删除源文件较多时,可以使用这个命令。
tar -zcvf t.tar.gz t1.txt --remove-files

1.5 tar解压

1.5.1 直接解压到当前目录
使用-x参数
tar -xvf t.tar

1.5.2 解压到指定目录
使用-C参数
tar -xvf t.tar -C dir

1.5.3 解压包中的某些文件
tar -xvf t.tar t/t1.txt -C dir1
如上,将t.tar压缩包中的t1.txt解压至dir1目录。

1.5.4 解压不覆盖原有文件
使用-k参数
tar -xvkf t.tar

1.5.5 去除目录结构
使用--strip-components,如去掉一层目录
tar -xvf t.tar.gz --strip-components=1

2 zip/unzip

2.1 zip/unzip介绍

  zip和unzip命令主要用于处理zip包,但是我们也可以用unzip去解压jar包。

2.2 zip/unzip参数

zip参数

zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
The default action is to add or replace zipfile entries from list, which
can include the special name - to compress standard input.
If zipfile and list are omitted, zip compresses stdin to stdout.
-f freshen: only changed files -u update: only changed or new files
-d delete entries in zipfile -m move into zipfile (delete OS files)
-r recurse into directories -j junk (don't record) directory names
-0 store only -l convert LF to CR LF (-ll CR LF to LF)
-1 compress faster -9 compress better
-q quiet operation -v verbose operation/print version info
-c add one-line comments -z add zipfile comment
-@ read names from stdin -o make zipfile as old as latest entry
-x exclude the following names -i include only the following names
-F fix zipfile (-FF try harder) -D do not add directory entries
-A adjust self-extracting exe -J junk zipfile prefix (unzipsfx)
-T test zipfile integrity -X eXclude eXtra file attributes
-y store symbolic links as the link instead of the referenced file
-e encrypt -n don't compress these suffixes
-h2 show more help

常用:

  • -f 与"-u"参数类似,更新/创建文件;
  • -d 删除压缩文件内指定的文件;
  • -r 递归处理指定目录及子目录;
  • -j 只压缩该目录下的所有文件,不带目录名。
  • -u 更换较新的文件到压缩文件内。
  • -v 显示指令执行过程或显示版本信息。
  • -y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。

unzip参数

Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
Default action is to extract files in list, except those in xlist, to exdir;
file[.zip] may be a wildcard. -Z => ZipInfo mode ("unzip -Z" for usage). -p extract files to pipe, no messages -l list files (short format)
-f freshen existing files, create none -t test compressed archive data
-u update files, create if necessary -z display archive comment only
-v list verbosely/show version info -T timestamp archive to latest
-x exclude files that follow (in xlist) -d extract files into exdir
modifiers:
-n never overwrite existing files -q quiet mode (-qq => quieter)
-o overwrite files WITHOUT prompting -a auto-convert any text files
-j junk paths (do not make directories) -aa treat ALL files as text
-U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields
-C match filenames case-insensitively -L make (some) names lowercase
-X restore UID/GID info -V retain VMS version numbers
-K keep setuid/setgid/tacky permissions -M pipe through "more" pager
-O CHARSET specify a character encoding for DOS, Windows and OS/2 archives
-I CHARSET specify a character encoding for UNIX and other archives See "unzip -hh" or unzip.txt for more help. Examples:
unzip data1 -x joe => extract all files except joe from zipfile data1.zip
unzip -p foo | more => send contents of foo.zip via pipe into program more
unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer

常用参数说明:

  • -l 显示压缩包内文件
  • -j 只保存文件名称及其内容,而不存放任何目录名称。
  • -o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该
  • -v 显示指令执行过程或显示版本信息。
  • -d 指定解压目录,目录不存在会创建

2.1 压缩 zip

2.1.1 压缩目录
使用-r参数
zip -r t.zip dir/

2.1.2 压缩目录下的文件,不带目录名
使用-j参数
zip -rj t.zip dir/

2.1.3 删除压缩包内的指定文件
使用-d参数,如删除t.zip中的t1.txt文件:
zip -d t.zip t1.txt

2.2 解压 unzip

2.2.1 查看解压包的文件信息
使用-l参数
unzip -l t.zip

2.2.2 查看解压包内的文件详细信息
使用-v参数
unzip -v t.zip

2.2.3 解压压缩包到当前目录
使用-o参数
unzip -o t.zip

2.2.4 解压压缩包到指定目录
使用-d参数
unzip -o t.zip -d test/

2.2.5 解压压缩包内的指定文件
unzip -o t.zip "t2.txt" -d t2_dir

2.2.6 解压jar包
unzip -o service-1.jar -d service_dir

示例

[test@linux01 t1]$ touch t2.txt
[test@linux01 t1]$ touch t3.txt
[test@linux01 t1]$ zip -r t.zip *.txt
adding: t2.txt (stored 0%)
adding: t3.txt (stored 0%)
[test@linux01 t1]$ ll
total 4
-rw-rw-r-- 1 dsjtest dsjtest 0 Mar 19 12:15 t2.txt
-rw-rw-r-- 1 dsjtest dsjtest 0 Mar 19 12:15 t3.txt
-rw-rw-r-- 1 dsjtest dsjtest 302 Mar 19 12:15 t.zip
[test@linux01 t1]$
[test@linux01 t1]$
[test@linux01 t1]$ unzip -l t.zip
Archive: t.zip
Length Date Time Name
--------- ---------- ----- ----
0 03-19-2020 12:15 t2.txt
0 03-19-2020 12:15 t3.txt
--------- -------
0 2 files
[test@linux01 t1]$
[test@linux01 t1]$
[test@linux01 t1]$ unzip -v t.zip
Archive: t.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
0 Stored 0 0% 03-19-2020 12:15 00000000 t2.txt
0 Stored 0 0% 03-19-2020 12:15 00000000 t3.txt
-------- ------- --- -------
0 0 0% 2 files
[test@linux01 t1]$
[test@linux01 t1]$
[test@linux01 t1]$ unzip -o t.zip -d test
Archive: t.zip
extracting: test/t2.txt
extracting: test/t3.txt
[test@linux01 t1]$ ll
total 8
-rw-rw-r-- 1 dsjtest dsjtest 0 Mar 19 12:15 t2.txt
-rw-rw-r-- 1 dsjtest dsjtest 0 Mar 19 12:15 t3.txt
drwxrwxr-x 2 dsjtest dsjtest 4096 Mar 19 12:16 test
-rw-rw-r-- 1 dsjtest dsjtest 302 Mar 19 12:15 t.zip
[test@linux01 t1]$
[test@linux01 t1]$
[test@linux01 t1]$ unzip -o t.zip "t2.txt" -d t2_dir
Archive: t.zip
extracting: t2_dir/t2.txt
[test@linux01 t1]$ ll
total 12
drwxrwxr-x 2 dsjtest dsjtest 4096 Mar 19 12:19 t2_dir
-rw-rw-r-- 1 dsjtest dsjtest 0 Mar 19 12:15 t2.txt
-rw-rw-r-- 1 dsjtest dsjtest 0 Mar 19 12:15 t3.txt
drwxrwxr-x 2 dsjtest dsjtest 4096 Mar 19 12:16 test
-rw-rw-r-- 1 dsjtest dsjtest 302 Mar 19 12:15 t.zip
[test@linux01 t1]$

[转帖]Linux—解压缩命令总结(tar/zip)的更多相关文章

  1. linux常用命令:tar 命令

    通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大. tar 命令可以为linu ...

  2. linux常用命令(21)tar命令

    通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大. tar命令可以为linux ...

  3. [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)

    linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...

  4. [转帖]linux sed命令

    linux sed命令就是这么简单 https://www.cnblogs.com/wangqiguo/p/6718512.html 用到的最多的就是一个sed -i 's/nn/mm/' 的命令了. ...

  5. [转帖]linux tree命令--显示目录的树形结构

    linux tree命令--显示目录的树形结构    版权声明:iamqilei@qq.com https://blog.csdn.net/u011729865/article/details/533 ...

  6. [转帖]Linux date命令的用法(转)

    Linux date命令的用法(转) https://www.cnblogs.com/asxe/p/9317811.html 1.命令:date 2.命令功能:date 可以用来显示或设定系统的日期与 ...

  7. [转帖]Linux chattr 命令详解

    Linux chattr 命令详解 https://www.cnblogs.com/ftl1012/p/chattr.html 常见命令参数 1 2 3 4 5 6 7 8 9 10 11 12 A: ...

  8. [转帖]linux screen 命令详解,xshell关掉窗口或者断开连接,查看断开前执行的命令

    linux screen 命令详解,xshell关掉窗口或者断开连接,查看断开前执行的命令 https://binwaer.com/post/12.html yun install -y screen ...

  9. Linux tar (打包.压缩.解压缩)命令说明 | tar如何解压文件到指定的目录?

    打包举例:将 /usr/local/src/zlib-1.2.5目录下的文件打包成 zlib-1.2.5.tar.gz cd /usr/local/src tar -czvf ./zlib-1.2.5 ...

  10. Linux解压缩命令tar

    tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...

随机推荐

  1. 重磅更新!Sermant 1.2.0 release版本新特性速览

    本文分享自华为云社区<重磅更新!Sermant 1.2.0 release版本新特性速览>,作者:华为云开源. 10月,Sermant社区正式发布了1.2.0 release版本,距离上一 ...

  2. 手绘流程图讲解spark是如何实现集群的高可用

    摘要:本文讲述spark是怎么针对master.worker.executor的异常情况做处理的. 本文分享自华为云社区<图解spark是如何实现集群的高可用>,作者:breakDawn. ...

  3. 朋友们,就在今天,JDK 21,它终于带着重磅新特性正式发布了!

    你好呀,我是歪歪. 朋友们,好消息,好消息,重磅好消息. 从今年年初就一直在喊的具有革命性.未来性.开创新纪元的 JDK 21 按照官方的时间计划表,今天终于是要正式 GA 了: https://op ...

  4. Excel 2016 VBA 提取单元格的中文字符

    启用开发工具 方式一:[右键Sheet1 ]->[查看代码] 方式二:[开发者工具]->[Visual Basic] Function chinese(rng As String) Dim ...

  5. Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)

    Jenkins 2361.2 + Maven Integration + SVN/GIT + Docker + 阿里云镜像 + Kubernetes(K8S) 本文用于学习,了解原理,和实际应用,有所 ...

  6. 【Java 进阶篇】使用 Stream 流和 Lambda 组装复杂父子树形结构(List 集合形式)

    目录 前言 一.以部门结构为例 1.1实体 1.2返回VO 1.3具体实现 1.4效果展示 二.以省市县结构为例 2.1实体 2.2返回VO 2.3具体实现 2.4效果展示 三.文章小结 前言 在最近 ...

  7. 它来了!真正的 python 多线程

    哈喽大家好,我是咸鱼 几天前,IBM 工程师 Martin Heinz 发文表示 python 3.12 版本回引入"Per-Interpreter GIL",有了这个 Per-I ...

  8. Spark Final-Examination Note

    重点 4567,Special 4,5 3道编程题,分值 35(基本书上,不超纲) 选填各 20分,简答 5 题/25分,编程题 3题/35分. 简答题参考每章课后习题 第 1 章简答题 1. 请阐述 ...

  9. POJ 2387 Til the Cows Come Home(最短路板子题,Dijkstra算法, spfa算法,Floyd算法,深搜DFS)

    Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 43861 Accepted: 14 ...

  10. POJ 1417 True Liars (并查集+DP)

    Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1556 Accepted: 457 Description After havi ...