Voglio tar X directory non includendo i suoi genitori


9
tar cvf /var/lib/backup/sample.tar /home/user/.project

Tuttavia, quando estraggo, ottengo anche i suoi genitori

/backup/
  - /home/
     - /user/
        - .project/

Questo comando tar funziona perché non include nient'altro nei suoi genitori (altre cartelle sotto userper esempio).

Voglio fare questo a livello di codice, quindi cambiare l'attuale directory di lavoro in /home/user/non è davvero un'opzione. è possibile farlo?

Risposte:


17

È possibile utilizzare l' -Copzione per passare alla /home/userdirectory prima della tarring o utilizzare --strip-components 2durante l'estrazione.

tar cvfC /var/lib/backup/sample.tar /home/user .project
#                              Note the space ^
tar cvf /var/lib/backup/sample.tar /home/user/.project
tar Cxf /backup /var/lib/backup/sample.tar --strip-components 2

1
+1 fantastico .. Ho appena trovato l' -Cinterruttore mentre stavo guardando attraverso la pagina man , ma non riuscivo a capirlo .. mi suonava più come se fosse usato durante untar. Ho imparato qualcosa di nuovo.
— Levon,

@Kevin Grazie. L'opzione C funziona perfettamente. Grazie!
— Utente 007

2
Non riuscivo a farlo funzionare così. Secondo la lettura di gnu.org/software/tar/manual/tar.html#SEC118 ho avuto successo con il seguente modulo: tar cvf /var/lib/backup/sample.tar -C / home / user .project
— Aivar

2

Penso che se cdnella directory di livello superiore di cui si desidera creare il tarfile, non si dovrebbe avere questo problema. Vale a dire,

cdto usere tarup .project.. è possibile specificare la destinazione per il file tar in /var/... come prima.

O c'è una ragione per cui non si vuole / non può cda user?


Sì. Questa sarebbe una soluzione. Grazie. Ma spero che ci sia un modo migliore? Voglio trattare con questo alleato programmatico e non voglio emettere continuamente os.chdir(base_dir)nel mio codice :) quindi sarebbe bello se ci fosse una via d'uscita. Grazie
— Utente 007

@ User007 Ah .. ok, capisco. Potresti voler aggiornare la tua domanda per includere tale requisito. Bell'ID utente a proposito :)
— Levon

Grazie. Sì. Ho appena aggiornato la mia domanda. Oh, è per nascondere la mia identità ...
— User007

1
@ User007 adoro la parte 007 .. e sembra che tu stia lavorando anche in Python (che è un altro dei miei preferiti)
— Levon

:) Sì. Va bene, il nostro amico Kevinmi ha aiutato con il comando giusto. Quindi gli darò il segno di spunta. Ma ti ho votato. Grazie!
— Utente 007
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.