J'observe le comportement suivant avec tar 1.26 et 1.27.1:
$ mkdir a b a/diffowner
$ sudo mkdir b/diffowner
$ sudo chmod a+w b/diffowner
$ echo foo > a/diffowner/foo
$ tar -C a -cvf test.tar diffowner
diffowner/
diffowner/foo
$ tar -C b -xvf test.tar diffowner
diffowner/
diffowner/foo
tar: diffowner: Cannot utime: Operation not permitted
tar: diffowner: Cannot change mode to rwxr-xr-x: Operation not permitted
tar: Exiting with failure status due to previous errors
Donc, ce que j'essaie de faire ici, c'est d'extraire un fichier tar dans une structure de répertoires existante, où je ne suis pas le propriétaire de tous les répertoires impliqués mais j'ai une autorisation d'écriture sur chacun d'eux. En fait, ils sont partagés au sein d'un groupe.
Je ne me soucie pas des horodatages et j'espère que les autorisations doivent déjà être correctes. J'exécute cela en tant qu'utilisateur normal, il ne devrait donc pas essayer, --preserve-permissions
sauf indication contraire, ce que je n'ai pas fait. Ce qui m'inquiète vraiment, c'est le statut de sortie: j'ai l'intention de l'utiliser dans un script et je veux savoir si l'extraction réelle a bien fonctionné.
Y a-t-il une option pour tar qui lui dit de ne pas définir les autorisations de répertoire, ni immédiatement ni retardées? A défaut, quelles autres solutions proposeriez-vous? En ce moment, je pense à extraire dans un répertoire temporaire et à utiliser rsync
pour déplacer des éléments dans l'arborescence existante. Mais vous connaissez peut-être une approche moins hackeuse.