Eu não vejo uma maneira de fazer isso usando o comando zip
, mas é fácil em python.
Observe que a especificação do formato de arquivo zip , seção 4.4.17.1, informa que o nome do caminho não pode ser iniciado com um '/', então eu não posso ajudar com essa parte.
O módulo python zipfile permite substituir o nome do caminho de um arquivo quando você o adiciona ao arquivo zip ; apenas passe o nome desejado como o segundo argumento opcional para ZipFile.write
:
ZipFile.write(filename[, arcname[, compress_type]])
Write the file named filename to the archive, giving it the archive name arcname (by default, this will be the same as filename, but without a drive letter and with leading path separators removed). If given, compress_type overrides the value given for the compression parameter to the constructor for the new entry.
Note: Archive names should be relative to the archive root, that is, they should not start with a path separator.
Veja um exemplo:
$ touch 1 2 3
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
>>> import zipfile
>>> with zipfile.ZipFile('bundle.zip', 'w') as bundle:
... bundle.write('1', '/bin/1')
... bundle.write('2', '/sbin/2')
... bundle.write('3', '/usr/bin/3')
...
>>>
$ unzip -l bundle
Archive: bundle.zip
Length Date Time Name
--------- ---------- ----- ----
0 2014-08-11 13:00 bin/1
0 2014-08-11 13:00 sbin/2
0 2014-08-11 13:00 usr/bin/3
--------- -------
0 3 files
Observe que zipfile.write
removerá qualquer '/' inicial do nome do caminho, para se adequar ao padrão.