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 之后要立即接档名喔!不要再加参数!
排除命令格式如下:
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 -zcvf /root/bt.cloudduo.tar.gz -C /www/wwwroot bt.cloudduo.cn
tar -zcvf ./bt.cloudduo.cn.tar.gz -C ./ bt.cloudduo.cn
单单压缩bt.cloudduo.cn目录,目录前有一个空格

解压
tar -zxvf ./help.cloudduo.cn.tar.gz -C /root/wnana
tar -zcvf help.cloudduo.cn.tar.gz -C ./ help.cloudduo.cn

用法一:打包/home,解包/home
# tar -cvf - /home | tar -xvf -

用法二:查阅上述 /root/temp/etc.tar.gz 文件内有哪些文件
# tar -ztvf /root/temp/etc.tar.gz

用法三:将/root/temp/etc.tar.gz 文件解压缩在 /root或则指定目录底下
# cd /root
# tar -zxvf /tmp/etc.tar.gz


用法四:在 /tmp 底下,只将 /tmp/etc.tar.gz 内的 etc/passwd 解开
# cd /tmp
# tar -zxvf /root/temp/etc.tar.gz etc/passwd

用法五:备份 /home, /etc ,但不要 /home/dmtsai
# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

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参数就行了