windows 命令行用 7z[1] 压缩一个文件夹,并排除其中一些文件和文件夹,参考 [2]。
a
:压缩的命令-r
:递归,可能是压缩文件夹时用?但其实我试过没加这个参数,也能正常把文件夹内所有文件加进来-x!
和-xr!
:排除一些文件,不加进最终压缩包里,可以多次使用。同样,那个r
可能是为文件夹设置的?但不加好像也行…
如果要压缩的文件夹内包含一些软链接[3],也会把东西 copy 一份进去。
Example
一个要压缩的文件夹:
104/
|- nuswide-tc21.100pc.500pc/
| |- avgpix.nuswide-tc21.100pc.500pc.npy
| |- idx_labeled.npy
| |- idx_ret.npy
| |- idx_test.npy
| `- idx_unlabeled.npy
`- nuswide-tc21.100pc.500pc.meta/
|- idx_labeled.npy
|- idx_ret.npy
|- idx_test.npy
`- idx_unlabeled.npy
要把它压缩成一个 .zip 文件,并把
- 104/nuswide-tc21.100pc.500pc/avgpix.nuswide-tc21.100pc.500pc.npy
- 104/nuswide-tc21.100pc.500pc/idx_labeled.npy
- 104/nuswide-tc21.100pc.500pc.meta/
三者排除掉,命令:
- 要把 7-zip 的安装目录加进 PATH
@7z a -tzip -r test.zip ^
104/ ^
-x!104/nuswide-tc21.100pc.500pc/avgpix.nuswide-tc21.100pc.500pc.npy ^
-x!104/nuswide-tc21.100pc.500pc/idx_labeled.npy ^
-xr!104/nuswide-tc21.100pc.500pc.meta
.tar.gz
在 linux 服务器用 unzip
解压 [4] 的其中一份数据 PnpAda_release_data.zip 时,报错:
error: invalid zip file with overlapped components (possible zip bomb)
To unzip the file anyway, rerun the command with UNZIP_DISABLE_ZIPBOMB_DETECTION=TRUE environmnent variable
而在 windows 解压无报错。考虑在 windows 重新压缩成 .tar.gz 格式,传上服务器,再解压。windows 创建 .tar.gz 压缩文件参考 [6-8],有两种方案:
- 用 7-zip:
7z a -ttar -so -an PnpAda_release_data | 7z a -si PnpAda_release_data.tar.gz
。(我没有 7za.exe,只有 7z.exe,也能执行) - [6] 中一条 2020 年的评论说 windows 支持
tar
命令,可同在 linux 一样用tar -zcvf PnpAda_release_data.tar.gz PnpAda_release_data
压缩。未测试,但在 windows 10 敲tar
确实有此命令。
References
- 7-zip
- 7z 常用压缩与解压缩命令
- windows软链接
- Command-line Guide for Linux, Mac & Windows
- Sunxy11/ADR
- How do I use 7-Zip CLI for Windows to create .tar.gz archives?
- How to create tar file with 7zip
- How to Create tar.gz Archive File in Windows?