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.