常用命令:
-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
Leave a Reply