Como posso preservar as permissões ao compactar uma pasta usando zip
?
Eu sei como preservar links simbólicos usando --symlinks
. Existe uma opção semelhante para permissões?
Responder1
info-zip (o programa que você provavelmente está usando) pode salvar/restaurar permissões paraUnix-sistemas semelhantes.
É mencionado paradiretóriosnopágina de manual:
Datas, horários e permissões de diretórios armazenados não são restaurados, exceto no Unix. (No Windows NT e sucessores, os carimbos de data/hora agora são restaurados.)
As permissões de arquivo para leitura/gravação/execução são salvas/restauradas. Mas uma verificação rápida mostra (zip 3.0) que as permissões setuid/setgid não são preservadas.
O recurso não é opcional; zip/unzip simplesmente faça isso quando puder.
Em outros sistemas, a capacidade de salvar/restaurar permissões é menos completa. Por exemplo, no Windows, o arquivo ZIP usa as configurações de permissão do%temp%
pasta.
Leitura adicional:
Responder2
Info-Zip 3.0 SUPORTA a preservação de arquivos/diretórios, permissões UNIX e dados de propriedade UID/GID. zip
armazena-o por padrão, mas você precisa usá-lo unzip
de uma maneira especial para restaurá-los:
unzip
deve ser usado com a-X
bandeira.unzip
deve ser executado comoroot
para definir o UID/GID dos arquivos/diretórios. Se você executá-lo como um usuário normal, o UID será sempre o do usuário atual e o GID será restaurado SOMENTE SE o usuário atual pertencer a esse grupo.
Exemplo:
# zip -v | head -2 | tail -1
This is Zip 3.0 (July 5th 2008), by Info-ZIP.
# unzip -v | head -1
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
# touch file1
# mkdir dir1
# chmod 000 file1
# chown 1111 dir1
# ls -ld file1 dir1
drwxr-xr-x 2 1111 root 40 mar 28 20:12 dir1
---------- 1 root root 0 mar 28 20:12 file1
# zip files.zip file1 dir1
adding: file1 (stored 0%)
adding: dir1/ (stored 0%)
# unzip -X files.zip -d extracted
Archive: files.zip
extracting: extracted/file1
creating: extracted/dir1/
# ls -l extracted
total 0
drwxr-xr-x 2 1111 root 40 mar 28 20:12 dir1
---------- 1 root root 0 mar 28 20:12 file1
Nota: você também pode usar unzip
com o -K
sinalizador para restaurar bits SUID/SGID/Sticky.