kali linux解压tar.xz,Linux—解压缩命令总结(tar/zip)

谢选
2023-12-01

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]$

 类似资料: