Creare un archivio tar della directory corrente senza periodo precedente


10

Quando faccio quanto segue:

tar czvf ../myarchive.tar.gz ./

Ricevo una singola (fastidiosa) cartella root nel mio archivio tar:

fastidioso

Come rimuovo questo terribile periodo durante la creazione dell'archivio?



3
Oppure usa --transform/ --xform, come suggerito da Magnus :tar -cf /path/to/output.tar -C /path/to/input-directory . --xform='s!^\./!!'
n.

Risposte:


6

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.


Inteso. Se ricordo bene, è davvero fastidioso dover fare un passo in più per decomprimere un archivio in una directory specifica (ad es. tar xzvf archive.tar.gz && mv archive/* /outputVs. unzip archive.zip -d /output)
Naftuli Kay

9

Il punto appare perché tarcrea 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 ./

1
Il *glob non corrisponderà ai file nascosti.
n.

: D eh..solo un principiante..non lo hai capito.
Beginer,

Potresti usare altri glob bash per includere file nascosti - dai un'occhiata qui .
n.

0

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.


1
Ti preghiamo di suggerire una modifica a quella risposta invece di pubblicare una risposta separata: unix.stackexchange.com/posts/144094/edit
muru
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.