Osservo il seguente comportamento con tar 1.26 e 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
Quindi quello che sto cercando di fare qui è estrarre un file tar in una struttura di directory esistente, dove non sono il proprietario di tutte le directory coinvolte ma ho il permesso di scrivere su tutte. In realtà sono condivisi tra un gruppo.
Non mi importa dei timestamp e confido che le autorizzazioni dovrebbero essere già corrette. Sto eseguendo questo come un normale utente, quindi non dovrebbe provare a --preserve-permissions
meno che non sia stato detto, cosa che non ho fatto. Quello che mi preoccupa davvero è lo stato di uscita: intendo usarlo in uno script e voglio sapere se l'estrazione effettiva ha funzionato bene.
Esiste un'opzione per tar che gli dice di non impostare i permessi della directory, né immediatamente né in ritardo? In caso contrario, quali altre soluzioni suggeriresti. In questo momento sto pensando di estrarre in una directory temporanea e usare rsync
per spostare roba nell'albero esistente. Ma forse conosci un approccio meno aggressivo.