Linux 命令之 tar

2018-07-22  本文已影响0人  Manchangdx

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
上一篇 下一篇

猜你喜欢

热点阅读