Linux zip命令

安装命令:

yum -y install zip  

zip 压缩文件
格式:zip 压缩文件名 源文件
例如:

zip web.zip web

zip 压缩目录
格式:zip -r 压缩文件名 源目录
-r 选项指定你想递归地(recursively)包括所有包括在 filesdir 目录中的文件
不使用-r 只是把目录编程压缩包 目录里面的内容不会打包进去
例如:

zip -r web.zip web

zip解压
格式:unzip 压缩文件
例如:

unzip web.zip

zip解压/压缩并指定目录
压缩并指定目录
举例:

zip -r /cloudduo/cloudduo.zip  /www/wwwroot

解压并指定目录
举例:

unzip /cloudduo/cloudduo.zip -d /www/cloudduo

Linux tar命令

语法

-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件。这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C:解压到指定目录
排除命令格式如下:
tar -zcvf xxx.tar.gz   要打包的目录  --exclude=dir1   --exclude=file1  ......

实例

压缩:将整个 /etc 目录下的文件全部打包
tar -cvf  /root/temp/etc.tar /etc    仅打包,不压缩!
tar -zcvf /root/temp/etc.tar.gz /etc  打包后,以 gzip 压缩
tar -jcvf /root/temp/etc.tar.bz2 /etc 打包后,以 bzip2 压缩
在参数 f 之后的文件档名是自己取的,习惯上用 .tar 来作为辨识。
如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file 
如果加 j 参数,则以 .tar.bz2 来作为文件名

压缩tar为例
tar -zcvf aliyun.cloudduo.cn.tar aliyun.cloudduo.cn

解压tar为例
tar -zxvf aliyun.cloudduo.cn.tar -C /root/


tar包压缩 解压缩 相对路径问题

一、问题描述
现在有一个需求,不知道该如何才能实现
压缩:

tar czvf /data/backup/test.tar.gz /data/a/b/directory

解压:

cd /data/test
tar xzvf /data/backup/test.tar.gz

问题是,解压后的文件,在/data/test/data/a/b/directory里面
能否压缩时只保留directory以下的所有目录,以directory作为/,而不是/data/a/b/directory?

二、解决方案
(1)直接cd到当前目录再进行打包和压缩
(2)使用-C参数
这样写就可以解决了

tar czvf /data/backup/test.tar.gz /data/a/b/directory

改成

tar czvf /data/backup/test.tar.gz -C /data/a/b directory

-C是临时切换工作目录,-P是绝对路径,在这里只用到-C参数就行了