背景

我们现有环境的线上生产主机日志文件都是按日期统一使用7zip压缩打包,然后离线存储到线下备份硬盘中。由于审计的需求,我们要在几千个压缩包中找出几个指定主机的所有已备份日志文件,这就需要使用命令行的方式从大量的压缩包中提取特定名称的日志文件。

方法

参数

# 我们使用e参数执行任务
a:将文件添加到压缩档案中
b:测试压缩或解压算法执行时的 CPU 占用
d:从压缩档案中删除文件
e:将压缩档案中特定的文件解压到当前目录
h:计算文件的哈希值
i:显示有关支持格式的信息
l:列出压缩档案的内容
rn:重命名压缩档案中的文件
t:测试压缩档案的完整性
u:更新要进入压缩档案中的文件
x:将压缩档案中的所有文件解压到指定路径,并包含所有文件的完整路径

执行

# 使用格式为 7z e 目标压缩文件 查找内容
# 相关内容将解压缩到当前文件,不支持指定目录,后续需要结合mv或者cp来腾挪相关日志
# 7zip支持通配符
set zip7=C:\Program Files\7-Zip\7z.exe
# 相关日志文件统一转储到d:\temp目录下
cd d:\temp
zip7 e .\*_messages.7z *_messages\vlnx005201*

其他

1.添加压缩包到d:\temp目录:7z.exe a abc.zip d:\temp
2.列出压缩包内容:7z.exe l abc.zip
3.删除压缩包指定内容:7z.exe d abc.zip def.doc
4.增加压缩包指定内容:7z.exe a abc.zip ghi.pdf
5.解压缩压缩包:7z.exe x abc.zip -oe:\temp #指定输出路径使用-o参数,-o与路径中间没有空格