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
参数
压缩为gizptar -zcvf t.tar.gz t1.txt t2.txt
1.4.3 压缩gar.bz2包
使用-j
参数
压缩为bzip2tar -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 [dsjtest@dsj-test-32 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]$
来源:https://www.cnblogs.com/Andya/p/12523492.html