赞
踩
这次给博客添加了纯代码缓存之后,发现缓存文件竟然达到了 50 多 MB!而我的服务器每次还需要同步至七牛,文件体积的增加都会增加文件远程同步备份的时间。因此,我第一想到的办法就是在网站 ZIP 压缩打包的时候排除缓存文件夹。
下面是从网上找来的 ZIP 命令参数:
- zip Linux 上适用的参数:
- -1 : 最快压缩,压缩率最差。
- -9 : 最大压缩,压缩率最佳。
- -b : 暂存文件的路径。这个参数一般在要产生的 zip 文件存在,而硬盘现有空间不足时。
- -c : 替新增或更新的文件增加一行注解。
- -d : 从 zip 文件移出一个文件。
- -D : 不要在 zip 文件中储存文件的目录信息。
- -f : 以新文件取代现有文件。
- -F : 修复已经损毁的压缩文件。
- -g : 将文件压缩附加到 zip 文件中。
- -h : 显示辅助说明。
- -i : 指定要含入的某些特定文件。
- -j : 只储存文件的名称,不含目录。
- -k : 强迫使用 MSDOS 格式文件名。
- -l : 将 CR ( Carriage Return ) LF ( Line Feed ) 转换成 LF,一般是要将 MS-DOS 上的文本文件压缩后拿到 UNIX 下使用时才使用此参数。这只适用于文本文件 ( .txt ),如果用于二进制文件则会造成二进制文件损毁。
- -L : 显示 zip 命令的版权。
- -m : 将特定文件移入 zip 文件中,并且删除特定文件。
- -n : 不压缩特定扩展名的文件。
- -o : 将 zip 文件的时间设成最后修正 zip 文件的时间。
- -q : 安静模式,不会显示相关讯息和提示。
- -r : 包括子目录。
- -t : 只处理 mmddyy 日期以后的文件。
- -T : 测试 zip 文件是否正常。
- -u : 只更新改变过的文件和新文件。
- -v : 显示版本资讯或详细讯息。
- -x : 不需要压缩的文件。
- -y : 将 symbolic link 压缩,而不是压缩所连结到的文件。
- -z : 为 zip 文件增加注解。
- -# : 设定压缩速度,-0 表示不压缩,-1 表示最快速度的压缩,
- -9 :表示最慢速度的压缩 ( 最佳化的压缩 ),预设值为 -6。
- -@ : 从标准输入读取文件名称。

其中-x 参数表示不需要压缩的文件。按 tar 命令操作经验,我直接如下执行命令:
zip -9r -x *cache* backupfile.zip /www/backupdir
发现报如下错误:
zip error: Invalid command arguments (nothing to select from)
然后 man 了一下,找到如下-x 参数说明:
按照-x 的参数说明
- -x files
- --exclude files
- Explicitly exclude the specified files, as in:
- zip -r foo foo -x \*.o
-
- which will include the contents of foo in foo.zip while excluding all the files that end in .o. The backslash avoids the shell filename
- substitution, so that the name matching is performed by zip at all directory levels.
如下继续测试:
- [root@Mars_Server ~]# zip -r -x \*.txt test.zip test1/
-
- zip error: Invalid command arguments (nothing to select from)
还是报同样错误!真是奇怪了!
最终,经多次测试,才知道 zip 命令压缩文件时正确的排除方法(-r 表示包含子目录文件):
zip -rx=excludefiles zipfile.zip filepath
比如,要压缩 test 文件目录及目录下的所有文件,而要排除所有 txt 格式,执行如下命令即可:
zip -r -x=*.txt test.zip test1
又比如,我现在要压缩网站文件时排除所有缓存文件:
zip -rx=zhang.ge/cache/* zhang.ge.zip /wwwroot/zhang.ge
原来,-x 参数是用等号来连接需要排除的通配关键词的!网上分享的参数都是那么简单一句【-x : 不需要压缩的文件】,却没人分享具体使用方法!而 Linux 系统下 man 命令关于 zip 的介绍,居然也不对,真是奇怪,难道就没人用过这个参数么?
唉,估计大伙都使用 tar --excludes 去了。
哦了,本文主要是为了补充一下 zip 排除文件的正确方法,希望能解决你的燃眉之急。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。