Comprimere una cartella (tar) senza la sua directory contenente nel nome della cartella


21

Sto cercando di comprimere una cartella con il tarcomando.

Quando sto cercando di comprimerlo, funziona bene. Il problema è con il nome del file.

Percorso sorgente:

/data/file/

Percorso di destinazione:

/data/repo/temp/file.tar.gz

tar zcvf $srcpath $destinationpath

Sto eseguendo il comando da un'altra cartella e durante l'estrazione della cartella ottengo tutte le sottodirectory invece della sola cartella di file.


1
La sintassi tar è: tar zcvf file.tar.gz /path/dir/to/compressforse dovresti cambiare il tuo comando tar zcvf $destinationpath $srcpathma non mi è chiaro di cosa hai bisogno. Potresti elaborare la tua domanda con un esempio di cosa ti aspetti dal comando tar?
Lety,

grazie per il commento, il mio problema è come seguire il commento che hai condiviso qui "tar zcvf file.tar.gz / path / dir / to / compres" questo dovrebbe funzionare bene se ci troviamo nella stessa directory "file" il mio caso è stiamo lavorando da una directory diversa, ad esempio: / home / testuser1 / file: il file è la cartella che voglio comprimere e sto eseguendo il comando dalla radice non in casa, quindi potrebbe essere necessario dare l'intero percorso alla cartella, mentre si esegue l'estrazione sto ricevendo tutte le sottodirectory da / home / testuser1 / file anziché dalla cartella file
Seetha Raman

Probabilmente un errore di battitura, ma nel tuo esempio hai confuso sorgente e destinazione.
Jacob Vlijm,

Risposte:


50

Il modo più semplice per farlo è prima di tutto effettuare il cd nella directory:

cd /path/to/containing/folder && tar -zcvf tarfile.tar.gz foldername_tocompress

In modo che la directory (contenente) della cartella diventi la directory principale del file compresso.

Un po 'più avanzato sta usando l'opzione -C:

tar -zcvf tarfile.tar.gz -C /path/to/foldername_tocompress .

Questo crea un tar.gzfile nella directory corrente (funzionante), contenente tutti i file / cartelle all'interno foldername_tocompress(attenzione al punto, dicendo che dovrebbero essere inclusi tutti i file / cartelle).


4
Il punto alla fine del secondo comando includerà tutti i file nella directory corrente ...
David Duncan,
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.