您的位置:首页 > 运维架构 > Linux

Linux命令(12)---tar

2016-08-30 23:15 465 查看

tar命令

tar命令,打包,可以为linux的文件和目录创建档案。可将多个目录或文件打包成一个大文件,同时还可以通过gzip/bzip2的支持,将该文件同时压缩。

打包与压缩的概念:

打包:是指将一堆文件或目录变成一个总的文件。

压缩:是指将一个大的文件通过压缩算法变成一个小文件。

用法:

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


tar命令的常用选项:

打包的常用命令组合:zcvf

-z, –gzip

filter the archive through gzip

调用gzip来压缩归档文件,此时文件名最好为*.tar.gz

-j,–bzip2

filter archive through bzip2

调用bzip2来压缩归档文件,此时文件名最好为*.tar.bz2

-c, –create

create a new archive

创建新的归档文件

-v, –verbose

verbosely list files processed

在压缩/解压缩的过程中,将正在处理的文件名显示出来

-f, –file=ARCHIVE

use archive file or device ARCHIVE

查看压缩包内容的组合:tf

-t, –list

list the contents of an archive

查看压缩包的内容列表

-f, –file=ARCHIVE

use archive file or device ARCHIVE

解包的常用命令组合:zxvf或者xf

-z,–gzip

通过gzip的支持进行解压缩

-j,–bzip2

通过bzip2的支持进行解压缩

-x,–extract,–get

xtract files from an archive 从归档文件中解出文件 。解打包或解压缩功能。

-C,–directory DIR

change to directory DIR 指定目录进行操作,如解压到指定目录

–exclude PATTERN

exclude files based upon PATTERN 排除不需要处理的文件或目录

-X,–exclude-from FILE

exclude files listed in FILE

指定文件列表的形式排除不需要处理的文件或目录

补充:

-p, –preserve-permissions, –same-permissions

extract information about file permissions

保持文件属性

-P, –absolute-names

don’t strip leading ‘/’s from file names

打包带上”/”(很危险不要用)



tar: Removing leading `/’ from member names

去掉根目录是为了安全。我们使用的tar备份的数据可能会需要解压缩回来使用。如果去掉了根目录,假设将备份数据在/tmp中解开,那么解压缩的文件名就会变成/tmp/etc/xxx。但是如果没有去掉根目录,解压缩后的文件名就会是绝对路径,即解压缩后的数据一定会被放置到/etc/xxx去。如此一来,原来的/etc/下面的数据就会被备份数据所覆盖过去了。



关于P的实例:

[root@ianLinux ~]# tar zcvPf a.tar.gz /root/data/




[root@ianLinux ~]# tar zcvf ab.tar.gz /root/data/




a.tar.gz是加了P参数打包的,ab.tar.gz没有加



打包前与打包结束时tarPTest.txt文件的内容,即a.tar.gz包里tarPTest.txt文件的内容

[root@ianLinux ~]# cat ./data/tarPTest.txt
1111


打包后,修改tarPTest.txt文件的内容

[root@ianLinux ~]# echo "2222" >> ./data/tarPTest.txt
[root@ianLinux ~]# cat ./data/tarPTest.txt 1111
2222


现在将a.tar.gz带上P参数解包

[root@ianLinux ~]# tar zxvPf a.tar.gz
/root/data/
/root/data/iantest2.txt
/root/data/greptest.txt
/root/data/iantest1.txt
/root/data/tarPTest.txt


此时查看./data/tarPTest.txt 里的内容,发现被带备份数据覆盖了

[root@ianLinux ~]# cat ./data/tarPTest.txt
1111


使用两种打包方式

#使用gz打包命令
[root@ianLinux ~]# tar zcvf tarTest.tar.gz ./data
./data/
./data/iantest2.txt
./data/greptest.txt
./data/iantest1.txt
./data/tarPTest.txt

#使用bz打包命令
[root@ianLinux ~]# tar jcvf tarTest1.tar.bz ./data
./data/
./data/iantest2.txt
./data/greptest.txt
./data/iantest1.txt
./data/tarPTest.txt


解压也要使用与打包对应的解压缩方式

错误:



方式不对无法解压

正确:



也可以不指定方式,直接用tar xf…..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux