前面通过学习文件压缩工具gzip,它可以很好地解决文件的压缩、解压问题,
但是并不能将目录以及其中的文件打包压缩为一个文件。现在我们学习目录的归档工具-tar命令
查看当前目录下的内容
[wolf@localhost Desktop]$ ll
total 12
drwxrwxr-x. 2 wolf wolf 32 Nov 3 19:12 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:10 2.txt
-rw-rw-r--. 1 wolf wolf 93 Nov 3 19:10 2.txt.gz
[wolf@localhost Desktop]$ ll -R
.:
total 12
drwxrwxr-x. 2 wolf wolf 32 Nov 3 19:12 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:10 2.txt
-rw-rw-r--. 1 wolf wolf 93 Nov 3 19:10 2.txt.gz
./1:
total 8
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:12 1.txt
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:12 2.txt
复制一个新的目录,用到cp -r或者cp -R
[wolf@localhost Desktop]$ cp --help
Usage: cp [OPTION]... [-T] SOURCE DEST
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
-R, -r, --recursive copy directories recursively
--reflink[=WHEN] control clone/CoW copies. See below
--remove-destination remove each existing destination file before
attempting to open it (contrast with --force)
--sparse=WHEN control creation of sparse files. See below
--strip-trailing-slashes remove any trailing slashes from each SOURCE
[wolf@localhost Desktop]$ cp -R 1 2
[wolf@localhost Desktop]$ ll
total 12
drwxrwxr-x. 2 wolf wolf 32 Nov 3 19:12 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
drwxrwxr-x. 2 wolf wolf 32 Nov 3 23:09 2
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:10 2.txt
-rw-rw-r--. 1 wolf wolf 93 Nov 3 19:10 2.txt.gz
开始文档归档,首先查看命令说明
DESCRIPTION
GNU tar is an archiving program designed to store multiple files in a single file (an archive), and to manipulate such archives. The archive can be either a regular file or a device (e.g. a tape drive,hence the name of the program, which stands for tape archiver), which can be located either on the local or on a remote machine.
Option styles
Options to GNU tar can be given in three different styles.
In traditional style, the first argument is a cluster of option letters and all subsequent arguments supply arguments to those options that require them. The arguments are read in the same order as the option letters. Any command line words that remain after all options has been processed are treated as non-optional arguments: file or archive mem‐ber names.
For example, the c option requires creating the archive, the v option requests the verbose operation,and the f option takes an argument that sets the name of the archive to operate upon. The followingcommand, written in the traditional style, instructs tar to store all files from the directory /etc into the archive file etc.tar verbosely listing the files being archived:tar cfv a.tar /etc
[wolf@localhost Desktop]$ cp 1.txt 3.txt
[wolf@localhost Desktop]$ cp 1.txt 4.txt
[wolf@localhost Desktop]$ ll
total 20
drwxrwxr-x. 4 wolf wolf 68 Nov 4 00:33 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
drwxrwxr-x. 2 wolf wolf 32 Nov 4 00:24 2
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:10 2.txt
-rw-rw-r--. 1 wolf wolf 93 Nov 3 19:10 2.txt.gz
drwxrwxr-x. 4 wolf wolf 50 Nov 4 00:24 3
-rw-rw-r--. 1 wolf wolf 1828 Nov 4 00:34 3.txt
-rw-rw-r--. 1 wolf wolf 1828 Nov 4 00:34 4.txt
drwxrwxr-x. 4 wolf wolf 50 Nov 4 00:33 all
开始打包归档
tar命令后必须要有参数,tar -[a/b/c/d/…] archive(名称档案名) 要归档的文件,其中-f必须存在的,表明将要归档到该文档中,且放到所有参数最后面。
-c – create :创建一个归档文件
# -cf创建一个归档文件
[wolf@localhost Desktop]$ tar -cf first.tar 1 2 1.txt
[wolf@localhost Desktop]$ ll
total 60
drwxrwxr-x. 4 wolf wolf 68 Nov 4 00:33 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
drwxrwxr-x. 2 wolf wolf 32 Nov 4 00:24 2
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:10 2.txt
-rw-rw-r--. 1 wolf wolf 93 Nov 3 19:10 2.txt.gz
drwxrwxr-x. 4 wolf wolf 50 Nov 4 00:24 3
-rw-rw-r--. 1 wolf wolf 1828 Nov 4 00:34 3.txt
-rw-rw-r--. 1 wolf wolf 1828 Nov 4 00:34 4.txt
drwxrwxr-x. 4 wolf wolf 50 Nov 4 00:33 all
-rw-rw-r--. 1 wolf wolf 40960 Nov 4 01:50 first.tar
[wolf@localhost Desktop]$ tar -cf second.tar 1.txt 2.txt
[wolf@localhost Desktop]$ ll
total 72
drwxrwxr-x. 4 wolf wolf 68 Nov 4 00:33 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
drwxrwxr-x. 2 wolf wolf 32 Nov 4 00:24 2
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:10 2.txt
-rw-rw-r--. 1 wolf wolf 93 Nov 3 19:10 2.txt.gz
drwxrwxr-x. 4 wolf wolf 50 Nov 4 00:24 3
-rw-rw-r--. 1 wolf wolf 1828 Nov 4 00:34 3.txt
-rw-rw-r--. 1 wolf wolf 1828 Nov 4 00:34 4.txt
drwxrwxr-x. 4 wolf wolf 50 Nov 4 00:33 all
-rw-rw-r--. 1 wolf wolf 40960 Nov 4 01:50 first.tar
-rw-rw-r--. 1 wolf wolf 10240 Nov 4 01:54 second.tar
-t 列出已有tar归档文件的内容
[wolf@localhost Desktop]$ tar -tf first.tar #列出已归档文档的内容
1/
1/1.txt
1/2.txt
1/2.txt.gz
1/2/
1/2/1.txt
1/2/2.txt
1/all/
1/all/2/
1/all/2/1.txt
1/all/2/2.txt
1/all/1.txt
1/all/2.txt
1/all/1/
1/all/1/1.txt
1/all/1/2.txt
1/all/1/2.txt.gz
2/
2/1.txt
2/2.txt
1.txt
-A --concatenate :将一个已有的tar归档文件追加到另一个已有的tar归档文件中
[wolf@localhost Desktop]$ ll
total 72
drwxrwxr-x. 4 wolf wolf 68 Nov 4 00:33 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
drwxrwxr-x. 2 wolf wolf 32 Nov 4 00:24 2
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:10 2.txt
-rw-rw-r--. 1 wolf wolf 93 Nov 3 19:10 2.txt.gz
drwxrwxr-x. 4 wolf wolf 50 Nov 4 00:24 3
-rw-rw-r--. 1 wolf wolf 1828 Nov 4 00:34 3.txt
-rw-rw-r--. 1 wolf wolf 1828 Nov 4 00:34 4.txt
drwxrwxr-x. 4 wolf wolf 50 Nov 4 00:33 all
-rw-rw-r--. 1 wolf wolf 40960 Nov 4 01:50 first.tar
-rw-rw-r--. 1 wolf wolf 10240 Nov 4 01:54 second.tar
[wolf@localhost Desktop]$ tar -Af second.tar first.tar
[wolf@localhost Desktop]$ ll
total 112
drwxrwxr-x. 4 wolf wolf 68 Nov 4 00:33 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
drwxrwxr-x. 2 wolf wolf 32 Nov 4 00:24 2
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:10 2.txt
-rw-rw-r--. 1 wolf wolf 93 Nov 3 19:10 2.txt.gz
drwxrwxr-x. 4 wolf wolf 50 Nov 4 00:24 3
-rw-rw-r--. 1 wolf wolf 1828 Nov 4 00:34 3.txt
-rw-rw-r--. 1 wolf wolf 1828 Nov 4 00:34 4.txt
drwxrwxr-x. 4 wolf wolf 50 Nov 4 00:33 all
-rw-rw-r--. 1 wolf wolf 40960 Nov 4 01:50 first.tar
-rw-rw-r--. 1 wolf wolf 51200 Nov 4 02:09 second.tar #变大了
-r 追加文件到已有tar归档文件末尾
[wolf@localhost Desktop]$ tar -rf first.tar 3.txt
[wolf@localhost Desktop]$ tar -tf first.tar
1/
1/1.txt
1/2.txt
1/2.txt.gz
1/2/
1/2/1.txt
1/2/2.txt
1/all/
1/all/2/
1/all/2/1.txt
1/all/2/2.txt
1/all/1.txt
1/all/2.txt
1/all/1/
1/all/1/1.txt
1/all/1/2.txt
1/all/1/2.txt.gz
2/
2/1.txt
2/2.txt
1.txt
3.txt
-x 从已有tar归档文件中提取文件
-v 处理文件时显示文件
[wolf@localhost ~]$ mkdir tempfile
[wolf@localhost ~]$ cd tempfile/
[wolf@localhost tempfile]$ ll
total 0
[wolf@localhost tempfile]$ cp ../Desktop/first.tar ./first.tar
[wolf@localhost tempfile]$ ll
total 100
-rw-rw-r--. 1 wolf wolf 102400 Nov 4 02:30 first.tar
[wolf@localhost tempfile]$ tar xf first.tar
[wolf@localhost tempfile]$ ll
total 156
drwxrwxr-x. 4 wolf wolf 68 Nov 4 00:33 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
drwxrwxr-x. 2 wolf wolf 32 Nov 4 00:24 2
-rw-rw-r--. 1 wolf wolf 53028 Nov 4 02:17 3.txt
-rw-rw-r--. 1 wolf wolf 102400 Nov 4 02:30 first.tar
文档归档后比较大可以利用gzip进行压缩
[wolf@localhost tempfile]$ ll
total 156
drwxrwxr-x. 4 wolf wolf 68 Nov 4 00:33 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
drwxrwxr-x. 2 wolf wolf 32 Nov 4 00:24 2
-rw-rw-r--. 1 wolf wolf 53028 Nov 4 02:17 3.txt
-rw-rw-r--. 1 wolf wolf 102400 Nov 4 02:30 first.tar
[wolf@localhost tempfile]$ gzip -k first.tar
[wolf@localhost tempfile]$ ll
total 160
drwxrwxr-x. 4 wolf wolf 68 Nov 4 00:33 1
-rw-rw-r--. 1 wolf wolf 1828 Nov 3 19:09 1.txt
drwxrwxr-x. 2 wolf wolf 32 Nov 4 00:24 2
-rw-rw-r--. 1 wolf wolf 53028 Nov 4 02:17 3.txt
-rw-rw-r--. 1 wolf wolf 102400 Nov 4 02:30 first.tar
-rw-rw-r--. 1 wolf wolf 1514 Nov 4 02:30 first.tar.gz
同时压缩文件可以直接用tar -xvf first.tar.gz进行解压提取。