Descobriu-se que isso é um bug. Eu publiquei em um cross-site para discusso-discutir e um dos mantenedores respondeu como tal. Arquivado um problema em: link
bsdtar
tem uma opção -k (Do not overwrite existing files)
, que evita alterar o conteúdo de quaisquer arquivos existentes, mas ainda substitui as informações do arquivo (por exemplo, permissões) pelo que está no arquivo. Existe uma maneira de fazer com que bsdtar
pule completamente a sobrescrita de arquivos existentes, deixando a informação do arquivo intacta da mesma forma que a opção --skip-old-files
funciona no GNU tar?
Aqui está um script que demonstra o problema:
#!/usr/bin/env bash
echo -e "\nCreate an archive with normal files"
rm -rf test-tar
mkdir test-tar
echo "TEST CONTENTS 1" > test-tar/1.txt
echo "TEST CONTENTS 2" > test-tar/2.txt
ls -la test-tar
bsdtar -czf test.tgz test-tar
echo -e "\nChange contents and permissions of one of the files"
echo "MORE CONTENTS" >> test-tar/2.txt
chmod 000 test-tar/2.txt
ls -la test-tar
echo -e "\nUntar the archive with -k (Do not overwrite existing files). The file contents are intact, but the file permissions have changed"
bsdtar -xzkf test.tgz
ls -la test-tar
cat test-tar/2.txt
echo -e "\nUntar the archive without -k"
bsdtar -xzf test.tgz
ls -la test-tar
cat test-tar/2.txt
Aqui está a saída do script:
Create an archive with normal files
total 16
drwxr-xr-x 4 rbrainard wheel 136 Nov 29 17:53 .
drwxr-xr-x 14 rbrainard wheel 476 Nov 29 17:53 ..
-rw-r--r-- 1 rbrainard wheel 16 Nov 29 17:53 1.txt
-rw-r--r-- 1 rbrainard wheel 16 Nov 29 17:53 2.txt
Change contents and permissions of one of the files
total 16
drwxr-xr-x 4 rbrainard wheel 136 Nov 29 17:53 .
drwxr-xr-x 14 rbrainard wheel 476 Nov 29 17:53 ..
-rw-r--r-- 1 rbrainard wheel 16 Nov 29 17:53 1.txt
---------- 1 rbrainard wheel 30 Nov 29 17:53 2.txt
Untar the archive with -k (Do not overwrite existing files). The file contents are intact, but the file permissions have changed
total 16
drwxr-xr-x 4 rbrainard wheel 136 Nov 29 17:53 .
drwxr-xr-x 14 rbrainard wheel 476 Nov 29 17:53 ..
-rw-r--r-- 1 rbrainard wheel 16 Nov 29 17:53 1.txt
-rw-r--r-- 1 rbrainard wheel 30 Nov 29 17:53 2.txt
TEST CONTENTS 2
MORE CONTENTS
Untar the archive without -k
total 16
drwxr-xr-x 4 rbrainard wheel 136 Nov 29 17:53 .
drwxr-xr-x 14 rbrainard wheel 476 Nov 29 17:53 ..
-rw-r--r-- 1 rbrainard wheel 16 Nov 29 17:53 1.txt
-rw-r--r-- 1 rbrainard wheel 16 Nov 29 17:53 2.txt
TEST CONTENTS 2
Minha bsdtar
versão é 3.3.2
.
Descobriu-se que isso é um bug. Eu publiquei em um cross-site para discusso-discutir e um dos mantenedores respondeu como tal. Arquivado um problema em: link