Win10中PowerShell Tar命令压缩级别设置问题求助
解决PowerShell中tar命令未压缩及设置压缩级别的问题
问题分析
你的命令已经实现了正确的归档目录结构,但未启用压缩,原因是**tar命令未指定压缩参数**:虽然归档后缀用了.tgz(gzip压缩的tar归档格式),但默认情况下tar rf仅执行追加归档操作,不会自动启用压缩。
修正后的压缩命令
要启用gzip压缩并保持正确的目录结构,只需给tar添加z参数(启用gzip压缩),同时优化命令逻辑减少冗余操作:
powershell -Command "$rootDir = 'C:\Projects\MySoftware'; Get-ChildItem -Path $rootDir\templates -Recurse -Include *.mdb | Sort-Object LastWriteTime | ForEach-Object { $relativePath = $_.FullName.Replace("$rootDir\", ''); tar rzf BASetupUpdate.tgz -C $rootDir $relativePath }"
关键修改说明
- 添加
z参数:tar rzf中的z明确启用gzip压缩,让.tgz文件真正具备压缩特性 - 使用
-C指定工作目录:替代重复的cd操作,直接让tar以C:\Projects\MySoftware为根目录处理相对路径,保证归档结构正确 - 简化路径处理:通过变量统一管理根目录,避免硬编码重复路径
设置压缩级别
gzip支持1-9级压缩(1=最快/最低压缩率,9=最慢/最高压缩率,默认级别为6),可通过--options gzip:level=N参数自定义:
比如设置最高压缩级别9:
powershell -Command "$rootDir = 'C:\Projects\MySoftware'; Get-ChildItem -Path $rootDir\templates -Recurse -Include *.mdb | Sort-Object LastWriteTime | ForEach-Object { $relativePath = $_.FullName.Replace("$rootDir\", ''); tar rzf BASetupUpdate.tgz -C $rootDir --options gzip:level=9 $relativePath }"
内容的提问来源于stack exchange,提问作者user20182161
相关产品推荐
相关产品推荐

