tar
可以为 Linux 文件和目录创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar
最初被用来在磁带上创建档案,现在用户可以在任何设备上创建档案。利用tar
命令,可以把一堆文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
首先要弄清两个概念:打包和压缩。打包是指将一堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包,然后再用压缩程序进行压缩。
1、常用选项:
选项 | 帮助 |
---|---|
--help |
查看帮助 |
-c, --create |
创建一个新的归档,也就是备份文件 |
-f, --file |
指定归档文件名 |
-p |
保留原文件的文件权限 |
-t |
列出归档文件中的全部内容 |
-v |
显示命令的执行过程,详细地列出处理的文件 |
-x |
从归档中解出文件,即反归档 |
-z |
对归档文件使用 gzip 进行压缩 |
--exclude |
指定归档时需要排除的文件 |
-g |
增量归档 |
2、举例:
-cvf
打包当前目录中的所有文件,默认递归全部目录:
mcdx@ubuntu:~/clipboard$ tar -cvf haha.tar *
b.txt
conf/
conf/gitconfig.txt
conf/sources.list
conf/python.gitignore
conf/vimrc.txt
conf/requirements.txt
README.md
test
-czvf
打包当前目录中的所有文件,并压缩:
# 排除前面创建的归档文件 haha.tar
mcdx@ubuntu:~/clipboard$ tar -czvf haha.tar.gz * --exclude haha.tar
b.txt
conf/
conf/gitconfig.txt
conf/sources.list
conf/python.gitignore
conf/vimrc.txt
conf/requirements.txt
README.md
test
# 在 Mac 系统中要用下面的格式
tar -czv --exclude haha.tar -f haha.tar.gz *
查看两个归档文件的大小:
mcdx@ubuntu:~/clipboard$ ls
b.txt conf haha.tar haha.tar.gz README.md test
mcdx@ubuntu:~/clipboard$ du -h haha*
20K haha.tar
4.0K haha.tar.gz
-tvf
查看归档文件里包含哪些文件:
mcdx@ubuntu:~/clipboard$ tar -ztvf haha.tar.gz
-rw-rw-r-- mcdx/mcdx 172 2018-07-22 10:34 b.txt
drwxrwxr-x mcdx/mcdx 0 2018-07-22 10:34 conf/
-rw-rw-r-- mcdx/mcdx 360 2018-07-22 10:34 conf/gitconfig.txt
-rw-rw-r-- mcdx/mcdx 923 2018-07-22 10:34 conf/sources.list
-rw-rw-r-- mcdx/mcdx 1202 2018-07-22 10:34 conf/python.gitignore
-rw-rw-r-- mcdx/mcdx 799 2018-07-22 10:34 conf/vimrc.txt
-rw-rw-r-- mcdx/mcdx 260 2018-07-22 10:34 conf/requirements.txt
-rw-rw-r-- mcdx/mcdx 11 2018-07-22 10:34 README.md
-rw-rw-r-- mcdx/mcdx 219 2018-07-22 10:34 test
-xzvf
到某个目录下,将归档文件进行解档:
mcdx@ubuntu:~$ mkdir test
mcdx@ubuntu:~$ cd test/
mcdx@ubuntu:~/test$ tar -zxvf ../clipboard/*gz
b.txt
conf/
conf/gitconfig.txt
conf/sources.list
conf/python.gitignore
conf/vimrc.txt
conf/requirements.txt
README.md
test
mcdx@ubuntu:~/test$ tree
.
├── b.txt
├── conf
│ ├── gitconfig.txt
│ ├── python.gitignore
│ ├── requirements.txt
│ ├── sources.list
│ └── vimrc.txt
├── README.md
└── test
1 directory, 8 files
-g
增量归档,举例如下
backinfo
是一个自定义的自动生成的文件,在哪里执行此命令,就在哪里生成。呐比如说本次归档和下次归档之间的时间内,/var/log
目录没变化,那么下次归档,就是一个空目录结构;如果此目录下增加了文件,下次归档就会只归档增加的文件。
sudo tar -g backinfo -czf $(date +\%H-\%M-\%S).tar.gz /var/log
网友评论