关于linux运维:7z压缩时排除指定文件或目录

2次阅读

共计 1335 个字符,预计需要花费 4 分钟才能阅读完成。

场景:有时打包压缩目录,想要排除疏忽某些子文件和子目录,防止一些文件多体积大的不重要文件目录占用长期备份空间,且能够缩小压缩工时。

\# 举例目录:

tmp #想要打包的目录
├─ aaa #目录
├─ bbb #目录
├─ ccc.txt #文件
└─ ddd.txt #文件 


\# 7z 排除 / 疏忽指定目录和文件的命令示范:

7z a -t7z  tmp.7z ./tmp  '-xr!aaa/' '-xr!ccc.txt'

# 压缩包里的内容胜利排除了 aaa 目录和 ccc.txt 文件,只剩下 bbb 目录和 ddd.txt 文件:tmp.7z
├─ bbb
└─ ddd.txt


\# 7z 参数解释

tmp.7z 是压缩包的文件名
./tmp 是想要压缩的目录
​
a 代表增加文件/文件夹到压缩包
-t 是指定压缩类型 个别咱们定为 7z
-xr! 是排除文件夹和文件,* 留神:'!' 感叹号在 Linux 中是零碎非凡事件符号,在 Shell 命令中应用时需加 '' 单引号本义成一般字符串。


\# 7z 门路规定:

 门路规定:7z 语法中的门路规定,是以压缩指标为根目录,比方“7z a tmp.7z ./tmp”中,“tmp/”就是 7z 语法中所有门路的最顶层,因而应用主机绝对路径就不能正确匹配,“tmp/aaa/”在主机中的绝对路径是“root/tmp/aaa/”, 如果在 7z 语法中是应用“root/tmp/aaa/”,7z 程序里理论解读的是“tmp/root/tmp/aaa/”。​
举例:咱们要压缩 tmp/ 目录和排除 tmp/ 下的 aaa/ 目录:7z a -t7z  tmp.7z ./tmp  '-xr!aaa' '-xr!ccc.txt' #√ aaa 无效
7z a -t7z  tmp.7z ./tmp  '-xr!aaa/' '-xr!ccc.txt' #√ aaa/ 无效
​
7z a -t7z  tmp.7z ./tmp  '-xr!/aaa/' '-xr!ccc.txt' #× 不匹配 /aaa/ 二次运行会提醒外部文件名抵触
7z a -t7z  tmp.7z ./tmp  '-xr!/aaa' '-xr!ccc.txt' #×不匹配 /aaa 二次运行会提醒外部文件名抵触
​
7z a -t7z  tmp.7z ./tmp  '-xr!*tmp/aaa' '-xr!ccc.txt' #√ *tmp/aaa 通配符无效
7z a -t7z  tmp.7z ./tmp  '-xr!*tmp/aaa/' '-xr!ccc.txt' #√ *tmp/aaa/ 通配符无效
7z a -t7z  tmp.7z ./tmp  '-xr!./aaa/' '-xr!ccc.txt' #√ ./aaa/ 相对路径语法无效
​
7z a -t7z  tmp.7z ./tmp  '-xr!tmp/aaa/' '-xr!ccc.txt' #√ 以 tmp 作为根目录的绝对路径语法无效
​
7z a -t7z  tmp.7z ./tmp  '-xr!/tmp/aaa' '-xr!ccc.txt' #× 不匹配 /tmp/aaa 不应超出 tmp/ 根目录
7z a -t7z  tmp.7z ./tmp  '-xr!./tmp/aaa/' '-xr!ccc.txt' #× 不匹配 ./tmp/aaa/ 不应超出 tmp/ 根目录
​
7z a -t7z  tmp.7z ./tmp  '-xr!/root/tmp/aaa/' '-xr!ccc.txt' #× /root/tmp/aaa 主机绝对路径被 7z 解读成以 tmp 为根目录的门路因此匹配失败 
正文完
 0