tar打包命令

简介:

Tar命令用于将多个文件或者目录打包成一个打的文件。同时还可以通过gzip/bzip2的支持,将该文件进行压缩。Window中winrar也可以解压tar.gz文件。

语法:(只讲解几个常用的参数)

打包压缩:

 Tar [-j|-z][cv] [-f 新建的文件名] 被打包文件名/目录

打包压缩(排除不想打包的文件或者目录):

 Tar[-j|-z] [cv] [-f 新建的文件名] --exclude=不想打包的目录或文件名 被打包文件名/目录

只打包目录中比某时刻新的文件:

 Tar[-j|-z] [cv] [-f 新建的文件名] –newer-mtime=”2017/08/15”  被打包的文件名/目录

查看文件名:

  Tar[-j|-z] [tv] [-f 新建的文件名]

解压:

   Tar[-j|-z] [xv] [-f 新建的文件名] [ -C 指定的解压目录]

单独解压包中的某个文件:

   Tar[-j|-z] [xv] [-f 打包文件.tar.gz|打包文件.tar.bz2] 待解压文件名

-j:通过bzip2支持进行压缩/解压,文件后缀名最好为:tar.bz2。

-z: 通过gzip支持进行压缩/解压,文件后缀名最好为:tar.gz。

特殊用法:(将待处理文件一边打包一边解压缩到目标目录中)

Tar [-cv] [-f 新建的文件名] 被打包的文件名/目录 | tar [-xv][-f 新建的文件名]

实例:

打包压缩:

1
2
3
[root@localhost ~] # tar -zcp -f/root/etc.tar.gz /etc
tar : Removing leading `/' from member names
[root@localhost ~] #

去除某目录下不想打包的文件或目录:

1
2
3
4
5
6
7
8
[root@localhost ~] # tar -zc -f/root/system.tar.gz --exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc/root    
tar : Removing leading `/' from member names
tar /root/system . tar .gz:  file  changed aswe  read  it
[root@localhost ~] # ll system*
-rw-r--r--. 1 root root 18985797 Aug 2100:02 system. tar .bz2
-rw-r--r--. 1 root root 41838107 Aug 2100:04 system. tar .gz
[root@localhost ~] # tar -jtv -f/root/system.tar.bz2 | grep 'root/etc'
[root@localhost ~] #

只打包目录中比某时刻新的文件:

1
2
3
4
5
6
7
8
9
[root@localhost ~] # tar -zc -f/root/etcnewer.tar.gz --newer-mtime='2017/08/15'  /etc/*     
tar : Removing leading `/' from member names
[root@localhost ~] # ll etc*
-rw-r--r--. 1 root root 73144 Aug 21 00:11etcnewer. tar .bz2
-rw-r--r--. 1 root root 86501 Aug 21 00:12etcnewer. tar .gz
[root@localhost ~] # tar -ztv -f /root/etcnewer.tar.gz |head -n 3
drwxr-xr-x root /root          0 2017-07-19 09:30 etc /abrt/
drwxr-xr-x root /root          0 2017-07-19 09:30 etc /abrt/plugins/
drwxr-xr-x root /root          0 2017-07-19 09:35 etc /acpi/

查找包中的文件:

查看包中前3个文件名

1
2
3
4
[root@localhost ~] # tar -ztv -f/root/etc.tar.gz |head -n 3
drwxr-xr-x root /root          0 2017-08-20 22:51 etc/
drwxr-xr-x root /root          0 2017-07-19 09:30 etc /ghostscript/
drwxr-xr-x root /root          0 2017-07-19 09:30etc /ghostscript/8 .70/

管道符号后接grep 指定搜索文件

1
2
3
4
5
[root@localhost ~] # tar -jtv -f/root/etc.tar.bz2 | grep 'shadow'
---------- root /root        820 2017-07-19 09:39 etc /shadow-
---------- root /root        622 2017-07-19 09:39 etc /gshadow-
---------- root /root        632 2017-07-19 10:04 etc /gshadow
---------- root /root        841 2017-07-19 10:04 etc /shadow

单独解压包中的某个文件:

1
2
3
4
5
6
7
8
9
10
[root@localhost whx] # tar -jxv -f/root/etc.tar.bz2 etc/shadow
etc /shadow
[root@localhost whx] # ll
total 12
drwxr-xr-x. 2 root root 4096 Aug 20 23:59etc
-rw-r--r--. 1 root root   30 Aug 17 23:44 xx01.gz
-rw-r--r--. 1 root root   30 Aug 17 23:45 xx02.gz
[root@localhost whx] # ll etc
total 4
----------. 1 root root 841 Jul 19 10:04shadow

解压整个包:

1
2
3
4
5
[root@localhost~] # tar -jx -f /root/etc.tar.bz2 -C /root/whx1
[root@localhost ~] #
[root@localhost whx1] # ll
total 12
drwxr-xr-x. 113 root root 12288 Aug 20 22:51 etc

特殊用法:(将待处理文件一边打包一边解压缩到目标目录tmp中)

1
2
3
4
[root@localhost tmp] #  tar -cf xx /etc | tar -xf xx
tar : Removing leading `/' from member names
[root@localhost tmp] # ll xx*
-rw-r--r--. 1 root root 38696960 Aug 2100:26 xx

tar除了能将多个文件或目录打包成大文件之外,还能够打包到某些特别的设备中,例如将文件打包到一次性读取/写入的设备磁带机中,tar -cv -f /dev/st0 /home /root/etc。由于不能使用cp命令来复制文件到磁带机这类设备中,此时利用tar命令将文件打包到磁带机是很好的选择。


小知识:tarfile指利用tar命令打包但没有进行压缩的文件,tarball是指利用tar命令打包并压缩的文件。



本文转自 天黑顺路 51CTO博客,原文链接:http://blog.51cto.com/mjal01/1958056,如需转载请自行联系原作者

相关文章
|
3小时前
|
存储 算法 Linux
【Linux】文件打包解压_tar_zip
【Linux】文件打包解压_tar_zip
19 0
【Linux】文件打包解压_tar_zip
|
6月前
|
Linux
Linux命令之解压缩:tar、zip、rar 命令
Linux命令之解压缩:tar、zip、rar 命令
|
10月前
tar 解压缩命令详解
tar 解压缩命令详解
tar打包时忽略svn目录
tar打包时忽略svn目录
101 0
tar命令打包时排除指定目录、指定文件
排除指定目录:--exclude=base_dir/sub_dir 注意:目录后面不要加斜杠 "/" 排除指定文件:--exclude *.jpg 示例如下: tar zcvf data.
2301 0
|
Linux 数据安全/隐私保护 存储