转自:http://bolg.malu.me/html/2011/1193.html

zip命令的基本用法是:zip [参数] [文件.zip] [文件或目录]

参数列表:
-a     将文件转成ASCII模式
-F     尝试修复损坏的压缩文件
-h     显示帮助界面
-m     将文件压缩之后,删除源文件
-n 特定字符串    不压缩具有特定字尾字符串的文件
-o     将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
-q     安静模式,在压缩的时候不显示指令的执行过程
-r     将指定的目录下的所有子目录以及文件一起处理
-S     包含系统文件和隐含文件(S是大写)
-t 日期     把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy

 

简单例子:

把本目录下的test文件打包成test.zip文件:zip test.zip test/*

如果在文件中用绝对的路径,那么在压缩文件中也是绝对路径。就是说,如果你 zip test.zip /home/test/* ,那么在压缩文件中也是这样的层次关系。

 

tar的基本用法是:tar [-cxtzjvfpPN] [文件或目录]

参数列表:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
–exclude FILE:在压缩的过程中,不要将 FILE 打包!

简单例子:

将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc<==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc<==打包后,以 bzip2 压缩

# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
# 上述指令在执行的时候,会显示一个警告讯息:
# 『tar: Removing leading `/” from member names』那是关于绝对路径的特殊设定。

使用技巧:

在压缩是遇到需要去掉目录路径的问题,比如tar用绝对路径压缩/home/html/img/目录,只需要img/目录路径,可以加上-C(大写的C,该问题在用Godaddy中计划任务时遇到):

tar czf /home/html/back_img.tar.gz -C /home/html/ img/