Non creare il file tar nella directory che stai impacchettando:
tar -czf /tmp/workspace.tar.gz .
fa il trucco, tranne che estrarrà i file in tutta la directory corrente quando si decomprime. Meglio fare:
cd ..
tar -czf workspace.tar.gz workspace
oppure, se non conosci il nome della directory in cui ti trovavi:
base=$(basename $PWD)
cd ..
tar -czf $base.tar.gz $base
(Questo presume che tu non abbia seguito i collegamenti simbolici per arrivare dove sei e che la shell non cerchi di indovinarti saltando all'indietro attraverso un collegamento simbolico - bash
non è affidabile a questo riguardo. utilizzare cd -P ..
per fare una directory di cambiamento fisico. Stupido che non sia il comportamento predefinito a mio avviso - confuso, almeno, per coloro per i quali cd ..
non ha mai avuto alcun significato alternativo.)
Un commento nella discussione dice:
Devo [...] escludere la directory superiore e [...] posizionare il tar nella directory di base.
La prima parte del commento non ha molto senso: se il file tar contiene la directory corrente, non verrà creato quando estrai il file da quell'archivio perché, per definizione, la directory corrente esiste già (tranne in circostanze molto strane ).
La seconda parte del commento può essere trattata in due modi:
- O: crea il file da qualche altra parte -
/tmp
è una possibile posizione - e poi spostalo di nuovo nella posizione originale dopo che è stato completato.
- Oppure: se stai usando GNU Tar, usa l'
--exclude=workspace.tar.gz
opzione. La stringa dopo il =
è un modello - l'esempio è il modello più semplice - una corrispondenza esatta. Potrebbe essere necessario specificare --exclude=./workspace.tar.gz
se si sta lavorando nella directory corrente contrariamente ai consigli; potrebbe essere necessario specificare --exclude=workspace/workspace.tar.gz
se si sta lavorando su un livello come suggerito. Se hai più file tar da escludere, usa " *
", come in --exclude=./*.gz
.