Quando faccio quanto segue:
tar czvf ../myarchive.tar.gz ./
Ricevo una singola (fastidiosa) cartella root nel mio archivio tar:
Come rimuovo questo terribile periodo durante la creazione dell'archivio?
Quando faccio quanto segue:
tar czvf ../myarchive.tar.gz ./
Ricevo una singola (fastidiosa) cartella root nel mio archivio tar:
Come rimuovo questo terribile periodo durante la creazione dell'archivio?
Risposte:
Non
name=${PWD##*/}
cd ..
tar czf "$name.tar.gz" "$name"
(Nota: questo non funziona se la shell ha il tracciamento del collegamento simbolico della directory corrente attivato e si accede alla directory corrente tramite un collegamento simbolico.)
Sì, questo non è quello che hai chiesto, ma questo è ciò che dovresti fare. Gli archivi che espandono molti file nella directory corrente sono fastidiosi: pone l'onere della creazione di una directory di destinazione per il file su ogni persona che disimballa l'archivio e se li scompattano accidentalmente in una directory non vuota, è difficile pulire. Il più delle volte, un archivio dovrebbe creare una singola directory di livello superiore il cui nome è il nome base dell'archivio.
tar xzvf archive.tar.gz && mv archive/* /output
Vs. unzip archive.zip -d /output
)
Il punto appare perché tar
crea la struttura del percorso nel modo in cui si danno gli argomenti. Così come hai dato . come fonte, anche l'archivio viene creato nella stessa struttura.
Puoi provare questo e controllare:
tar -czvf ../myarchive.tar.gz *
Aggiornamento della risposta con l'aiuto del commento di n.st
tar --xform s:'./':: -czvf ../myarchive.tar.gz ./
*
glob non corrisponderà ai file nascosti.
meglio aggiungere ^ prima del precedente.
tar --xform s:'^./':: -czvf ../myarchive.tar.gz ./
OPPURE, tutti "/" nel percorso completo all'interno dell'archivio verranno rimossi a meno che "/" non sia la fine del percorso completo.