tar

一、简介

  • 作用:

GNU ‘tar’ saves many files together into a single tape or disk archive

GNU的tar作用是保存多个文件进一个备份或归档文件中。

  • 格式:

tar [OPTION...] [FILE]...

  • 命令信息

命令路径:/bin/tar

执行命令权限:普通用户

二、常用实例

tar -cf archive.tar foo bar
        创建一个文件名为archive.tar的归档文件并把文件foo和bar加入这个归档文件中(没有使用压缩)
         这种方式解压后的文件修改了文件的Change时间信息和Access时间信息,Modify时间没有改变。
tar -tvf archive.tar
        显示归档文件archive.tar中的文件。
tar -xf archive.tar
        提取归档文件archive.tar文件到当前目录(没有使用压缩方式)。
         这种解压方式可以解压默认的tar/tar.gz/tar.bz结尾的压缩文件

上面三个命令中的参数前面“-”可以有也可以没有。

2.1、打包

创建打包文件

注意:不要用:tar -cpf ceshi.tar *,这样打包解压时会把解压文件全部解压到当前目录导致很混乱。

不使用压缩(备份保存文件属性):
                    tar -cpf ceshi.tar ceshi/
                        把目录ceshi及目录内所有文件及目录打包到文件ceshi.tar中,并保留源文件权限属性信息。(但是Access、Change时间会改变,Modify时间不变)
                使用压缩方式打包(此时会因为压缩消耗一定的cpu):
                    tar -cpjf ceshi.tar.bz ceshi/
                        用bzip2方式压缩归档文件。
                    tar -zcpf ceshi.tar.gz ceshi/
                        用gzip方式压缩归档文件。
                    tar -zcpf ceshi.tar.xz ceshi
                        用xz方式压缩归档文件。
                    创建以日期为名称的压缩包:
                        tar zcphf `date "+%Y%m%d".tar.gz` ceshi
                        
                        ll
                            -rw-r--r--.  1 root root  45465 Aug  3 22:56 20180803.tar.gz
                    过滤把ceshi目录下的jpg文件全部压缩:
                        tar zcphf `date "+%Y%m%d".tar.gz` ceshi/*.jpg
                    压缩修改日期在指定时间以后的文件:
                        tar -N "20180801" -cf ceshi.tar ceshi
                            把修改时间在2018年8月1日凌晨(即7月31日凌晨24:00以后)以后修改的文件都打包
                        tar -N "20180721 23:00:00" -cf ceshi.tar ceshi

备份常用的方法:

-g参数使用(centos6.6)测试没有发现效果:
    ll ceshi
        total 104
        drwxr-xr-x. 2 root root  4096 Aug  3 22:07 a
        -rw-r--r--. 1 root root     0 Aug  3 22:02 abc.log
        -rw-------. 1 root root 23229 Jul 21 05:11 anaconda-ks.cfg
        -rw-r--r--. 1 root root 21682 Aug  3 18:57 install.log
        -rw-r--r--. 1 root root  5890 Aug  3 18:57 install.log.syslog
        -rw-r--r--. 1 root root 15231 Jul 21 05:10 tar.txt
        -rw-r--r--. 1 root root     0 Aug  3 21:58 test.sh
        -rw-r--r--. 1 root root 27146 Jul 21 05:10 useradd.txt
    tar -g snapshot -cf ceshi.tar ceshi
    查看备份的结果:
    tar -tvf ceshi.tar
        drwxr-xr-x root/root        94 2018-08-03 22:07 ceshi/
        drwxr-xr-x root/root         1 2018-08-03 22:07 ceshi/a/
        上面备份结果发现只有文件目录备份结果没有文件的备份
    新建一个文件和目录,增量备份测试:
        mkdir ceshi/nihao
        touch ceshi/filetest.txt
        然后再次增量备份:
        tar -g snapshot -cf ceshi.tar ceshi
        然后再查看增量备份的结果:
        tar -tvf ceshi.tar
            drwxr-xr-x root/root       115 2018-08-03 22:10 ceshi/
            drwxr-xr-x root/root         1 2018-08-03 22:07 ceshi/a/
            drwxr-xr-x root/root         1 2018-08-03 22:10 ceshi/nihao/
            -rw-r--r-- root/root         0 2018-08-03 22:10 ceshi/filetest.txt
    然后删除一个文件再次增量备份测试:
        rm -rf ceshi/a
        tar -g snapshot -cf ceshi.tar ceshi
        tar -tvf ceshi.tar
            drwxr-xr-x root/root       112 2018-08-03 22:10 ceshi/
            drwxr-xr-x root/root         1 2018-08-03 22:10 ceshi/nihao/
        发现上面删除一个目录后增量备份不止没有这个目录,而且分解filetest.txt也没有了。
-u参数来做增量备份:
    -u只能用于非压缩方式的备份。
    用-u来作参数时如果删除文件,备份的文件中不会删除对应的文件。但是更新文件时或增加新文件时会把新文件追加进压缩包中。这样会导致同一个名字的文件有多个但是解压时只会解压最新的文件。
    tar -uf ceshi.tar ceshi
    删除文件然后再备份测试:
        rm -rf ceshi/abc.log
        tar -uf ceshi.tar ceshi
        
        tar -tvf ceshi.tar
            drwxr-xr-x root/root       112 2018-08-03 22:10 ceshi/
            drwxr-xr-x root/root         1 2018-08-03 22:10 ceshi/nihao/
            -rw-r--r-- root/root      5890 2018-08-03 18:57 ceshi/install.log.syslog
            -rw-r--r-- root/root         0 2018-08-03 21:58 ceshi/test.sh
            -rw------- root/root     23229 2018-07-21 05:11 ceshi/anaconda-ks.cfg
            -rw-r--r-- root/root         0 2018-08-03 22:10 ceshi/filetest.txt
            -rw-r--r-- root/root     21682 2018-08-03 18:57 ceshi/install.log
            -rw-r--r-- root/root         0 2018-08-03 22:02 ceshi/abc.log
            -rw-r--r-- root/root     27146 2018-07-21 05:10 ceshi/useradd.txt
            -rw-r--r-- root/root     15231 2018-07-21 05:10 ceshi/tar.txt
        
        touch ceshi/abc.log
        tar -uf ceshi.tar ceshi
        tar -tvf ceshi.tar
            drwxr-xr-x root/root       112 2018-08-03 22:10 ceshi/
            drwxr-xr-x root/root         1 2018-08-03 22:10 ceshi/nihao/
            -rw-r--r-- root/root      5890 2018-08-03 18:57 ceshi/install.log.syslog
            -rw-r--r-- root/root         0 2018-08-03 21:58 ceshi/test.sh
            -rw------- root/root     23229 2018-07-21 05:11 ceshi/anaconda-ks.cfg
            -rw-r--r-- root/root         0 2018-08-03 22:10 ceshi/filetest.txt
            -rw-r--r-- root/root     21682 2018-08-03 18:57 ceshi/install.log
            -rw-r--r-- root/root         0 2018-08-03 22:02 ceshi/abc.log
            -rw-r--r-- root/root     27146 2018-07-21 05:10 ceshi/useradd.txt
            -rw-r--r-- root/root     15231 2018-07-21 05:10 ceshi/tar.txt
            -rw-r--r-- root/root         0 2018-08-03 22:21 ceshi/abc.log

把新的文件追加到压缩包:

把tar包中的所有文件追加到另一个tar包内:
    tar Af ceshi.tar 123.tar
        把123.tar内的文件追加到ceshi.tar内。
        A参数不能与压缩参数结合使用。
        
    tar -rf 123.tar 123.tar.gz
        把文件123.tar.gz追加到123.tar包的末尾。-r只能追加tar包不能与压缩参数混用。

 

2.2、提取/解压

通用方式解压提取文件:
    tar xf ceshi.tar.bz -C test/
        解压提取文件目录存放到test目录下
    或者
    tar -xf ceshi.tar
    tar xf ceshi.tar.bz
        解压提取文件ceshi放在当前目录
使用指定压缩方式来解压:
    tar xjf ceshi.tar.bz -C test/
        用bzip2方式来解压文件。
    tar xzf ceshi.tar.gz -C test/
        用gzip方式来解压文件。
    tar xJf ceshi.tar.xz -C test/
        用xz方式来解压文件。

 

2.3、查看文件

通用方式解压提取文件:
    tar xf ceshi.tar.bz -C test/
        解压提取文件目录存放到test目录下
    或者
    tar -xf ceshi.tar
    tar xf ceshi.tar.bz
        解压提取文件ceshi放在当前目录
使用指定压缩方式来解压:
    tar xjf ceshi.tar.bz -C test/
        用bzip2方式来解压文件。
    tar xzf ceshi.tar.gz -C test/
        用gzip方式来解压文件。
    tar xJf ceshi.tar.xz -C test/
        用xz方式来解压文件。

三、参数说明

  
常用参数
序号参数作用实例
1-A, --catenate, --concatenate追加文件到归档文件 
2-c, --create创建归档文件 
3-d, --diff, --compare查找归档和文件系统之间的差异 
4--delete从归档文件(非磁带)中删除文件 
5-r, --append追加文件到归档文件末尾 
6-t, --list列出归档文件内容 
7--test-label测试归档文件卷标签并退出 
8-u, --update仅追加比归档中副本更新的文件 
9-x, --extract, --get从归档文件中提取文件 
10-C, --directory=DIR改变目录 
11-f, --file=ARCHIVE用文件归档或者设备归档 
12-j, --bzip2通过bzip2压缩归档文件 
13-J, --xz通过xz压缩归档文件 
14-p, --preserve-permissions提取有关文件权限的信息(默认使用超级管理员) 
15-v, --verbose显示文件处理过程 
16-z, --gzip使用gzip压缩归档文件 
    
操作修饰符:
序号参数作用实例
1--check-device创建增量归档时检查设备编号(默认) 
2-g, --listed-incremental=FILE处理新的gnu格式的增量备份 
3-G, --incremental处理旧的gnu格式的增量备份 
4--ignore-failed-read在不可读文件时,不要以非0退出 
5--level=NUMBER所创建的增量列表归档的输出级别 
6-n, --seek归档文件是可检索的。 
7--no-check-device创建增量存档时不检查设备编号 
8--no-seek归档文件是不可检索 
9--occurrence[=NUMBER]仅处理归档中每个文件的第NUMBER个事件;仅当与以下子命令--delete,--diff,--extract或是--list中的一个联合使用时,此选项才有效。而且不管文件列表是以命令行形式给出或是通过-T选项指定的;NUMBER值默认为1 
10--sparse-version=MAJOR[.MINOR]设置所使用离散格式的版本(隐含--sparse) 
11-S, --sparse高效处理离散文件 
    
覆盖控制:
序号参数作用实例
1-k, --keep-old-files解压时不要替换存在的文件(通过报错) 
2--skip-old-files当提取归档文件时不覆盖已经存在的文件(静默跳过) 
3--keep-newer-files不要替换比归档中副本更新的已存在的文件 
4--no-overwrite-dir保存已存在目录的元数据 
5--overwrite解压时重写存在的文件 
6--overwrite-dir解压时重写已存在目录的元数据(默认) 
7--recursive-unlink解压目录之前先清除目录层次 
8--remove-files在添加文件至归档后删除它们 
9-U, --unlink-first在解压要重写的文件之前先删除它们 
10-W, --verify在写入以后尝试校验归档 
    
选择输出流:
序号参数作用实例
1--ignore-command-error忽略子进程的退出代码 
2--no-ignore-command-error将子进程的非零退出代码认为发生错误 
3-O, --to-stdout解压文件至标准输出 
4--to-command=COMMAND将解压的文件通过管道传送至另一个程序 
5--acls保存ACLs到归档文件 
6--atime-preserve[=METHOD]在输出的文件上保留访问时间,要么通过在读取(默认METHOD=replace)后还原时间,要不就不要在第一次(METHOD=system)设置时间 
7--delay-directory-restore直到解压结束才设置修改时间和所解目录的权限 
8--group=NAME强制将NAME作为添加文件的组的所有者 
9--mode=CHANGES强制将所添加的文件(符号)更改为权限CHANGES 
10--mtime=DATE-OR-FILE从DATE-OR-FILE中为添加的文件设置mtime 
11-m, --touch不提取文件的修改时间(文件的修改访问时间都变为了当前解压时间) 
12--no-acls不提取归档文件的ACLs 
13--no-delay-directory-restore取消--delay-directory-restore的作用 
14--no-same-owner修改提取文件的所有者信息,使用当前用户所有(默认用普通用户使用这个参数) 
15--no-same-permissions从归档中解压权限时使用用户的umask(掩码位)(默认是普通用户服务) 
16--no-selinux不提取SELinux内容 
17--no-xattrs不提取xattrs的归档文件 
18--numeric-owner总是以数字代表用户/组的名称 
19--owner=NAME强制使用NAME作为添加文件的所有者 
20-p, --preserve-permissions, --same-permissions提取有关文件权限的信息 
21--preserve与-p和-s参数相同 
22--same-owner尝试使用归档文件相同所有权限提取文件(默认是超级管理员) 
23-s, --preserve-order, --same-order对要提取的名称进行排序以匹配归档 
24--selinux将SELinux上下文保存到存档中 
25--xattrs将user/root xattrs保存到存档中 
    
设备选择和切换:
序号参数作用实例
1-f, --file=ARCHIVE用文件归档或设备归档 
2--force-local即使归档文件存在副本还是把它认为是本地归档 
3-F, --info-script=NAME, --new-volume-script=NAME在每卷磁带最后运行脚本(隐含 -M) 
4-L, --tape-length=NUMBER在写入NUMBER × 1024字节后改变磁带 
5-M, --multi-volume创建/列出/解压多卷归档文件 
6--rmt-command=COMMAND使用给定的rmt COMMAND代替rmt 
7--rsh-command=COMMAND使用远程COMMAND代替rsh 
8--volno-file=FILE更新/使用FILE的卷号 
    
设备分块:
序号参数作用实例
1-b, --blocking-factor=BLOCKS每条记录BLOCKS x 512字节 
2-B, --read-full-records读入时重新分块(只对4.2BSD管道有效) 
3-i, --ignore-zeros忽略归档中的零字节块(即文件结尾) 
4--record-size=NUMBER指定每条记录NUMBER,即NUMBER x 512 bytes 
    
归档格式选择:
序号参数作用实例
1-H, --format=FORMAT用指定格式创建归档文件。
上面归档格式可以使用:
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
 
2--old-archive, --portability作用和--format=v7一样 
3--pax-option=keyword[[:]=value][,keyword[[:]=value]]...控制pax关键字 
4-V, --label=TEXT创建名为TEXT的逻辑卷来存储归档文件。在显示/提取时用TEXT来作为逻辑卷名字的通配符模式 
    
压缩选项:
序号参数作用实例
1-a, --auto-compress根据文件后缀决定压缩程序 
2-I, --use-compress-program=PROG通过PROG来压缩(必须接受 -d) 
3-j, --bzip2通过bzip2来压缩 
4-J, --xz通过xz来压缩 
5--lzip通过lzip来压缩 
6--lzma通过lzam来压缩 
7--lzop通过lzop来压缩 
8--no-auto-compress和-a作用相反,不自动检查压缩程序 
9-z, --gzip, --gunzip, --ungzip通过gzip压缩 
10-Z, --compress, --uncompress通过压缩处理存档文件。 
    
本地文件选项:
序号参数作用实例
1--add-file=FILE将给定的文件添加到归档文件中 
2--backup[=CONTROL]删除之前做备份,选择版本CONTROL 
3-C, --directory=DIR改变目录到DIR(解压到指定目录时使用) 
4--exclude=PATTERN排除文件,该匹配模式PATTERN 
5--exclude-backups排除备份和锁文件 
6--exclude-caches除了标记文件本身,排除包括CACHEDIR.TAG内容的目录 
7--exclude-caches-all排除目录中的内容CACHEDIR.TAG 
8--exclude-caches-under排除包含内容CACHEDIR.TAG的目录 
9--exclude-tag=FILE除了文件FILE外,排除包含FILE的目录 
10--exclude-tag-all=FILE排除所有目录包含的FILE 
11--exclude-tag-under=FILE排除包含FILE的所有目录 
12--exclude-vcs排除版本控制系统目录 
13-h, --dereference根据文件软链接归档备份指向的文件 
14--hard-dereference根据硬链接归档备份文档 
15-K, --starting-file=MEMBER-NAME从归档中的MEMBER-NAME开始 
16--newer-mtime=DATE当只有时间改变时比较日期和时间 
17--no-null禁用前一个——null选项的效果 
18--no-recursion避免在目录中自动递归 
19--no-unquote不要取消用-T读取的文件名的引用 
20--null-T读取空终止的名称,禁用-C 
21-N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE只存储文件日期新的文件 
22--one-file-system当创建归档文件时,在本地文件系统中 
23-P, --absolute-names不要从文件名中去除前导' / ' s 
24--recursion递归目录(默认) 
25--suffix=STRING在删除前备份,重写通常的后缀。 
26-T, --files-from=FILE要从文件中提取或创建的名称 
27--unquote以-T读取的文件名(默认) 
28-X, --exclude-from=FILE排除FILE中列出的模式 
    
文件名称的转换:
序号参数作用实例
1--strip-components=NUMBER在提取时从文件名中清除NUMBER个引导部分 
2--transform=EXPRESSION, --xform=EXPRESSION使用sed replace表达式EXPRESSION转换文件名 
3--anchored模式匹配文件名开始 
4--ignore-case忽略字母大小写 
5--no-anchored模式在任何' / '之后匹配(默认排除) 
6--no-ignore-case不忽略字幕大小写(默认) 
7--no-wildcards字符串逐字匹配(不适用通配符) 
8--no-wildcards-match-slash不使用通配符匹配(能匹配'/') 
9--wildcards用通配符(默认) 
10--wildcards-match-slash通配符匹配(匹配'/') 
    
信息输出:
序号参数作用实例
1--checkpoint[=NUMBER]显示每个NUMBERth记录的进度消息(默认10) 
2--checkpoint-action=ACTION在每个检查点执行操作 
3--index-file=FILE发送详细输出到FILE。 
4-l, --check-links只要不是所有链接都被输出就打印信息 
5--no-quote-chars=STRING禁止引用STRING中的字符 
6--quote-chars=STRING附加引用字符串中的字符 
7--quoting-style=STYLE设置引用样式;请参阅下面的有效样式值 
8-R, --block-number在存档中显示每个消息的块号 
9--show-defaults显示tar默认 
10--show-omitted-dirs当显示或提取时,列出所有不存在的目录 
11--show-transformed-names, --show-stored-names在转换后显示文件或存档名称 
12--totals[=SIGNAL]在归档结束后输出总共的字节数。使用SIGNAL传递时,用参数-输出。允许的信号包括:SIGHUP, SIGQUIT,  SIGINT,  SIGUSR1  and  SIGUSR2。也可以接受没有SIG前缀的名称 
13--utc 在UTC中打印文件修改日期 
14-v, --verbose输出处理过程中相关信息 
15--warning=KEYWORD警告控制 
16-w, --interactive, --confirmation每次操作都要求确认 
    
兼容性选项:
序号参数作用实例
1-o创建归档时和--old-archive作用相同,提取文件时和--no-same-owner作用相同 
2   
    
其他选项:
序号参数作用实例
1-?, --help显示帮助信息 
2--restrict禁止使用一些潜在的有害选项 
3--usage显示简单的使用说明帮助 
4--version显示tar程序版本信息 
    
默认选项:
--format=gnu -f- -b20 --quoting-style=escape --rmt-command=/sbin/rmt --rsh-command=/usr/bin/rsh
    
压缩选项中的backup参数可以接收的参数
1none, off关闭备份 
2t, numbered用数字备份 
3nil, existing如果存在编号备份,则进行编号,否则使用简单备份 
4never, simple永远使用简单备份 
    
--quoting-style选项的有效参数为:
1literal  
2shell  
3shell-always  
4c  
5c-maybe  
6escape  
7locale  
8clocale  

 

四、备注说明

常见压缩包的解压方式:

1

*.tar

  tar –xvf 解压

2

*.gz

gzip -d或者gunzip 解压

3

*.tar.gz

*.tgz tar –xzf 解压

4

*.bz2

bzip2 -d或者用bunzip2 解压

5

*.tar.bz2

tar –xjf 解压

6

*.Z

 uncompress 解压

7

*.tar.Z

tar –xZf 解压

8

*.rar

unrar e解压

9

*.zip

unzip 解压

转载于:https://www.cnblogs.com/mehome/p/9413884.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值