Linux下常用的压缩解压命令[收藏]

备份和恢复的技能在操作系统的管理中应用相当广泛。

这部分内容主要通过tar命令配合cron、date命令及其它的一些技巧来实现自动化备份和恢复。

tar命令的一些帮助信息:
NAME
       tar - The GNU version of the tar archiving utility

SYNOPSIS
       tar <operation> [options]

       Operations:
       [-]A --catenate --concatenate
       [-]c --create
       [-]d --diff --compare
       [-]r --append
       [-]t --list
       [-]u --update
       [-]x --extract --get
       --delete

       Common Options:
       -C, --directory DIR
       -f, --file F
       -j, --bzip2
       -p, --preserve-permissions
       -v, --verbose
       -z, --gzip


注意tar有些特殊,甚至于支持没-的参数。但我个人不提倡。脚本是用来应用,应该是易于理解的。

我们平时经常用的参数有:
tar xzvf 解压一个*.tar.gz文件
tar xjvf 解压一个*.tar.bz2的文件

tar czvf 压缩成一个*.tar.gz的文件
tar xjvf 压缩成一个*.tar.bz2的文件

如果去掉v,就不显示详细信息,实际在脚本中,如果不需要交互或隐藏执行过程的话,不要加好了。

我们还可以通过-C的参数来指定解压的目录。


下面参数之一必须使用:
c
x

z 是gzip的压缩格式,压缩后文件后缀为gz;
j 是bzip2的压缩格式,压缩后文件后缀为bz2。

A 是添加压缩包到已经存在的一个压缩包中。

u 指比较压缩包中的文件和当前文件,如果比压缩包的更新,就替换掉。
r 添加文件或文件夹到一个已经存在的压缩包中。

-t这是显示压缩文件文件列表。

-d 比较压缩包中的文件与文件系统中的文件的差异。
--delete 从压缩包中删除文件或文件夹。


如果在脚本中,我们为了更容易识别不同时创建的文件,我们可以用日期给压缩包命名。

这里我们可以看一个示例:
#!/bin/sh

cd /home/admin/backup

year=`date +%Y`

month=`date +%m`

day=`date +%d`

now=$year-$month-$day

mkdir backup_$now

tar zcvf backup_$now/backup.tar.gz /home/html

关于如何通过date来显示当前的时间,请查阅详细的date man 手册,但要注意一些重点参数,需要识记。

同时我们还可以通过脚本来实现周一全备,以后每天一次增量备份,周日提醒光盘备份,当然所有这些都需要脚本和计划任务cron的参与,关于cron请查看相关的帮助。


       FORMAT controls the output.  The only valid option for the second  form  specifies  Coordinated
       Universal Time.  Interpreted sequences are:

       %%     a literal %

       %a     locale’s abbreviated weekday name (e.g., Sun)

       %A     locale’s full weekday name (e.g., Sunday)

       %b     locale’s abbreviated month name (e.g., Jan)

       %B     locale’s full month name (e.g., January)

       %c     locale’s date and time (e.g., Thu Mar  3 23:05:25 2005)

       %C     century; like %Y, except omit last two digits (e.g., 21)

       %d     day of month (e.g, 01)

       %D     date; same as %m/%d/%y

       %e     day of month, space padded; same as %_d

       %F     full date; same as %Y-%m-%d

       %g     last two digits of year of ISO week number (see %G)

       %G     year of ISO week number (see %V); normally useful only with %V

       %h     same as %b

       %H     hour (00..23)

       %I     hour (01..12)
       
       %j     day of year (001..366)

       %k     hour ( 0..23)

       %l     hour ( 1..12)

       %m     month (01..12)

       %M     minute (00..59)

       %n     a newline

       %N     nanoseconds (000000000..999999999)

       %p     locale’s equivalent of either AM or PM; blank if not known

       %P     like %p, but lower case

       %r     locale’s 12-hour clock time (e.g., 11:11:04 PM)

       %R     24-hour hour and minute; same as %H:%M

       %s     seconds since 1970-01-01 00:00:00 UTC

       %S     second (00..60)

       %t     a tab

       %T     time; same as %H:%M:%S

       %u     day of week (1..7); 1 is Monday

       %U     week number of year, with Sunday as first day of week (00..53)

       %V     ISO week number, with Monday as first day of week (01..53)
       
       %w     day of week (0..6); 0 is Sunday

       %W     week number of year, with Monday as first day of week (00..53)

       %x     locale’s date representation (e.g., 12/31/99)

       %X     locale’s time representation (e.g., 23:13:48)

       %y     last two digits of year (00..99)

       %Y     year

       %z     +hhmm numeric timezone (e.g., -0400)

       %:z    +hh:mm numeric timezone (e.g., -04:00)

       %::z   +hh:mm:ss numeric time zone (e.g., -04:00:00)

       %:::z  numeric time zone with : to necessary precision (e.g., -04, +05:30)

       %Z     alphabetic time zone abbreviation (e.g., EDT)

       By default, date pads numeric fields with zeroes.  The following optional flags may follow ‘%’:

              - (hyphen) do not pad the field _ (underscore) pad with spaces 0 (zero) pad with zeros ^
              use upper case if possible # use opposite case if possible

       After  any flags comes an optional field width, as a decimal number; then an optional modifier,
       which is either E to use the locale’s alternate representations if available, or O to  use  the
       locale’s alternate numeric symbols if available.


我们也可以通过tar实现增量备份,这个就需要我们查看tar的官方文档。
       -g, --listed-incremental F
              create/list/extract new GNU-format incremental backup

       -G, --incremental
              create/list/extract old GNU-format incremental backup

如何跟踪软链接
      -h, --dereference
              don’t dump symlinks; dump the files they point to
保持原来的文件结构            
           -l, --one-file-system
              stay in local file system when creating an archive
              
                        
ALL OPTIONS
       --atime-preserve
              don’t change access times on dumped files

       -b, --blocking-factor N
              block size of Nx512 bytes (default N=20)

       -B, --read-full-blocks
              reblock as we read (for reading 4.2BSD pipes)

       --backup BACKUP-TYPE
              backup files instead of deleting them using BACKUP-TYPE simple or numbered

       --block-compress
              block the output of compression program for tapes

       -C, --directory DIR
              change to directory DIR
       --check-links
              warn if number of hard links to the file on the filesystem mismatch the number of  links
              recorded in the archive

       --checkpoint
              print directory names while reading the archive

       -f, --file [HOSTNAME:]F
              use archive file or device F (default "-", meaning stdin/stdout)

       -F, --info-script F --new-volume-script F
              run script at end of each tape (implies --multi-volume)

       --force-local
              archive file is local even if has a colon

       --format FORMAT
              selects output archive format
              v7 - Unix V7
              oldgnu - GNU tar <=1.12
              gnu - GNU tar 1.13
              ustar - POSIX.1-1988
              posix - POSIX.1-2001

       -g, --listed-incremental F
              create/list/extract new GNU-format incremental backup

       -G, --incremental
              create/list/extract old GNU-format incremental backup

       -h, --dereference
              don’t dump symlinks; dump the files they point to

       --help like this manpage, but not as cool

       -i, --ignore-zeros
              ignore blocks of zeros in archive (normally mean EOF)

       --ignore-case
              ignore case when excluding files

       --ignore-failed-read
              don’t exit with non-zero status on unreadable files

       --index-file FILE
              send verbose output to FILE instead of stdout

       -j, --bzip2
              filter archive through bzip2, use to decompress .bz2 files

       -k, --keep-old-files
              keep existing files; don’t overwrite them from archive

       -K, --starting-file F
              begin at file F in the archive

       --keep-newer-files
              do not overwrite files which are newer than the archive

       -l, --one-file-system
              stay in local file system when creating an archive

       -L, --tape-length N
              change tapes after writing N*1024 bytes

       -m, --touch, --modification-time
              don’t extract file modified time

       -M, --multi-volume
              create/list/extract multi-volume archive

       --mode PERMISSIONS
              apply PERMISSIONS while adding files (see chmod(1))

       -N, --after-date DATE, --newer DATE
              only store files newer than DATE

       --newer-mtime DATE
              like --newer, but with a DATE

       --no-anchored
              match any subsequenceof the name’s components with --exclude

       --no-ignore-case
              use case-sensitive matching with --exclude

       --no-recursion
              don’t recurse into directories

       --no-same-permissions
              apply user’s umask when extracting files instead of recorded permissions

       --no-wildcards
              don’t use wildcards with --exclude

       --no-wildcards-match-slash
              wildcards do not match slashes (/) with --exclude

       --null --files-from reads null-terminated names, disable --directory

       --numeric-owner
              always use numbers for user/group names

       -o, --old-archive, --portability
              like  --format=v7; -o exhibits this behavior when creating an archive (deprecated behav-
              ior)

       -o, --no-same-owner
              do not attempt to restore ownership when extracting;  -o  exhibits  this  behavior  when
              extracting an archive

       -O, --to-stdout
              extract files to standard output

       --occurrence NUM
              process  only NUM occurrences of each named file; used with --delete, --diff, --extract,
              or --list

       --overwrite
              overwrite existing files and directory metadata when extracting

       --overwrite-dir
              overwrite directory metadata when extracting

       --owner USER
              change owner of extraced files to USER

       -p, --same-permissions, --preserve-permissions
              extract all protection information

       -P, --absolute-names
              don’t strip leading ‘/’s from file names

       --pax-option KEYWORD-LIST
              used only with POSIX.1-2001 archives to modify the way tar handles extended header  key-
              words

       --posix
              like --format=posix

       --preserve
              like --preserve-permissions --same-order

       --acls this option causes tar to store each file’s ACLs in the archive.

       --selinux
              this  option causes tar to store each file’s SELinux security context information in the
              archive.

       --xattrs
              this option causes tar to store each file’s extended attributes  in  the  archive.  This
              option  also  enables  --acls  and--selinux if they haven’t been set already, due to the
              fact that the data for those are stored in special xattrs.

       --no-acls
              This option causes tar not to store each file’s ACLs in the archive and not  to  extract
              any ACL information in an archive.

       --no-selinux
              this  option causes tar not to store each file’s SELinux security context information in
              the archive and not to extract any SELinux information in an archive.

       --no-xattrs
              this option causes tar not to store each file’s extended attributes in the  archive  and
              not to extract any extended attributes in an archive. This option also enables --no-acls
              and --no-selinux if they haven’t been set already.

       -R, --record-number
              show record number within archive with each message

       --record-size SIZE
              use SIZE bytes per record when accessing archives

       --recursion
              recurse into directories

       --recursive-unlink
              remove existing directories before extracting directories of the same name

       --remove-files
              remove files after adding them to the archive

       --rmt-command CMD
              use CMD instead of the default /usr/sbin/rmt

       --rsh-command CMD
              use remote CMD instead of rsh(1)

       -s, --same-order, --preserve-order
              list of names to extract is sorted to match archive

       -S, --sparse
              handle sparse files efficiently

       --same-owner
              create extracted files with the same ownership

       --show-defaults
              display the default options used by tar

       --show-omitted-dirs
              print directories tar skips while operating on an archive

       --strip-components NUMBER, --strip-path NUMBER
              strip NUMBER of leading components from file names before extraction

              (1) tar-1.14 uses --strip-path, tar-1.14.90+ uses --strip-components
       --suffix SUFFIX
              use SUFFIX instead of default ’~’ when backing up files

       -T, --files-from F
              get names to extract or create from file F

       --totals
              print total bytes written with --create

       -U, --unlink-first
              remove existing files before extracting files of the same name

       --use-compress-program PROG
              access the archive through PROG which is generally a compression program

       --utc  display file modification dates in UTC

       -v, --verbose
              verbosely list files processed

       -V, --label NAME
              create archive with volume name NAME

       --version
              print tar program version number

       --volno-file F
              keep track of which volume of a multi-volume archive its  working  in  FILE;  used  with
              --multi-volume

       -w, --interactive, --confirmation
              ask for confirmation for every action

       -W, --verify
              attempt to verify the archive after writing it

       --wildcards
              use wildcards with --exclude

       --wildcards-match-slash
              wildcards match slashes (/) with --exclude

       --exclude PATTERN
              exclude files based upon PATTERN

       -X, --exclude-from FILE
              exclude files listed in FILE

       -Z, --compress, --uncompress
              filter the archive through compress

       -z, --gzip, --gunzip, --ungzip
              filter the archive through gzip

       --use-compress-program PROG
              filter the archive through PROG (which must accept -d)

       -[0-7][lmh]
              specify drive and density




     本文转自xiaoyuwang 51CTO博客,原文链接:http://blog.51cto.com/wangxiaoyu/371276,如需转载请自行联系原作者



上一篇:PS网页设计教程——30个优秀的PS网页设计教程的中文翻译教程


下一篇:[Java 基础] 使用java.util.zip包压缩和解压缩文件