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. CodeForces 808G Anthem of Berland 前缀函数 KMP DP

    原题链接 题意 第一行给我们一串长为s,只包含小写字母与问号的字符串A,第二行给我们一个长为t只有小写字母的字符串B, 同时满足 $ s * t \le 1e7 $ 我们可以把问号变成任意的字母,我们 ...

  2. 车机必备软件-小白点EasyTouch(类似苹果的悬浮球,返回,清理垃圾,杀进程)

    简介 有些小伙伴升级车机后,由于部分软件打开后处于全屏状态无法返回,这里我教大家如何解决.解决办法就是:在车机上安装这款小白点软件,这款软件体积小巧,不占内存,操作也十分方便,它能帮助你快速回到主屏幕 ...

  3. Windows使用docker踩坑记录

    一.安装踩坑 安装时会让你选择:是否使用Windows容器 Use Windows containers instead of Linux containers(this can be changed ...

  4. 实时媒体AI,打破内容创作天花板,加速视频创新

    摘要:互联网视频经过几代发展,用户体验快速升级,对创新玩法.互动性要求越来越高.那如何解决这些问题? 媒体AI,是行业共识.华为云提供云原生实时媒体AI能力,联合伙伴打造AI算法开放生态市场,加速视频 ...

  5. 解析Stream foreach源码

    摘要:串行流比较简单,对于parallelStream,站在它背后的是ForkJoin框架. 本文分享自华为云社区<深入理解Stream之foreach源码解析>,作者:李哥技术 . 前言 ...

  6. 云图说丨初识分布式消息服务Kafka版

    摘要:分布式消息服务Kafka版是一款基于开源社区版Kafka提供的消息队列服务,向用户提供计算.存储和带宽资源独占式的Kafka实例. 本文分享自华为云社区<[云图说]第254期 初识分布式消 ...

  7. 云小课 | 华为云KYON之ELB混合负载均衡

    摘要:本文介绍在华为云KYON(Keep Your Own Network)企业级云网络解决方案中,弹性负载均衡服务提供混合负载均衡功能,支持使用公有云的负载均衡绑定华为云上和IDC,实现云上云下业务 ...

  8. 火山引擎DataTester上线「集成工作台」功能,助力企业打造专属AB平台

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 AB测试不仅是做增长的"利器",也是企业优化效率.增加决策精确度的有效工具.随着国内企业服务市 ...

  9. Python 获取控制台输入的值

    获取控制台输入参数 if __name__ == '__main__': while 1: question = input('用户:') answer = "你的问题是:" + ...

  10. 比文件操作os库更优异的标准库pathlib

    pathlib 库从 python3.4 开始作为内置库,到 python3.6 已经比较成熟.相比于老式的 os.path 有几个优势: 老的路径操作函数管理比较混乱,有的是导入 os, 有的又是在 ...