Think before you speak, read before you think.

tar命令使用的几个例子

常用命令:

-c 创建包
-x 解包
-t 列出包中的内容
-r 增加文件到指定包中
-u 更新包中的文件

可选命令:

-j 使用bzip2
-z 使用gzip
-Z 使用compress
-f  后面跟包的文件名
-v  显示执行过程
-C 指定解包后的路径

例一:tar打包文件(并用gzip压缩)

tar vczf a.tar.gz hello

例二:tar不解压 查看目录结构

tar tvf a.tar.gz | grep ^d

例三:除了/var/www/clients这个文件夹,打包/var/www中的所有文件和文件夹

tar vczf www.tar.gz /var/www/ --exclude=clients

如果要排除多个可以一直加

--exclude dir1 --exclude a.log --exclude *.jpg

例四:解压tar.bz2文件

首先:
bzip2 -d mono-2.10.tar.bz2
执行完发现只有一个mono-2.10.tar
现在再执行
tar -xvf mono-2.10.tar
就得到了mono-2.10文件夹

或直接使用

tar jxf mono-2.10.tar.bz2

例五:将多个文件夹打包

tar -czf abc.tar.gz /home/a /home/b /home/c

例六:分卷压缩及合并,Linux下备份网站数据,由于目录abc打包成一个文件会比较大,所以想分卷压缩成每个100M的文件,方便下载。

分卷压缩,使用tar+split组合,进入目录上级目录,执行:
tar cvzf - abc | split -b 100m
会产生以x开头的文件,然后把x开头的文件传输到目标地
合并
cat x* > abc.tar.gz
解压
tar xvzf abc.tar.gz

例七:解压tar文件

file命令查看结果是POSIX tar archive格式,使用命令

tar xvf xxx.tar

例八:使用tar打包时不使用绝对路径

如:tar vczf jpuyy.tar.gz /home/jpuyy/

会提示”tar: Removing leading `/’ from member names”,解压时会在当前目录解压成home/jpuyy。如果想要解压到/home/jpuyy,则使用-C /指令,即

tar vxzf jpuyy.tar.gz -C /

例九:提取tar.gz中的指定一个文件,先找到这个文件

tar tvf redis-2.6.14.tar.gz | grep redis_init_script
-rwxrwxr-x root/root 1098 2013-06-20 16:36 redis-2.6.14/utils/redis_init_script

然后执行

tar xzf redis-2.6.14.tar.gz redis-2.6.14/utils/redis_init_script

得到想要指定文件。

例九:只将目录内部的文件打包,不包括顶层目录

tar czf workspace.tar.gz -C /path/to/workspace .

参考:http://xiaobin.net/200911/tar-removing-leading-slash-from-member-name/

题外话

使用gzip压缩

gzip jpuyy-backup-20121212.sql

使用gzip解压

gzip -d jpuyy-backup-20121212.sql.gz

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *