Come archiviare una cartella di grandi dimensioni in un singolo file senza compressione


11

Voglio prendere una cartella da 78 GB e archiviarla in un singolo file (per il caricamento in un servizio cloud), come se lo stessi comprimendo in un archivio, ma non voglio alcuna compressione (non ho molta CPU tempo disponibile). C'è comunque un modo per riuscirci, forse un comando terminale di cui non sono a conoscenza?


1
c'è un tarcomando in linux. tar -cf long.file.tar folder
Costas,

5
Cordiali saluti: Esistono programmi di compressione veloci, alcuni che saranno più veloci della velocità di scrittura del disco e molti che saranno più veloci della rete. L'uso di uno di questi accelera effettivamente le cose, se i dati sono assolutamente comprimibili. Ad esempio, lzopè progettato per la velocità.
derobert,

Risposte:


20

Utilizzare tar: tar -cf my_big_folder.tar /my/big/folder

Ripristina l'archivio con tar -xf my_big_folder.tar -C /

-C passerà alla directory principale per ripristinare l'archivio poiché l'archivio creato sopra contiene percorsi assoluti.

EDIT : a causa delle dimensioni relativamente grandi dell'archivio, sarebbe meglio inviarlo [direttamente] alla sua posizione finale, usando SSH o un punto di montaggio della risorsa / cartella cloud. Ad esempio, come suggerisce Cole Johnson :

tar -cf /network/mount/point/my_big_folder.tar /my/big/folder

o

tar -c /my/big/folder | ssh example.com "cat > my_big_folder.tar"

EDIT : come suggerisce anche Blacklight Shining , se vuoi evitare percorsi assoluti, puoi passare al genitore della cartella grande e tarda lì:

tar -cf /network/mount/point/my_big_folder.tar \
    -C /my/big/folder/location the_big_folder

o

tar -cC /my/big/folder/location the_big_folder | \
ssh example.com "cat > my_big_folder.tar"

Riflessioni personali

Se includere percorsi relativi o assoluti è una questione di preferenza personale.

Esistono casi in cui i percorsi assoluti sono ovvi, ad esempio per un ripristino in una situazione di ripristino di emergenza. Per progetti o raccolte locali è comune archiviare un albero di directory dal genitore della cartella desiderata in modo da evitare di ingombrare la directory corrente, nel caso in cui l'archivio venga accidentalmente decompresso sul posto. Se big_folder si trova da qualche parte nel profondo di una gerarchia standard * NIX , può avere senso iniziare ad archiviare la prima cartella non standard da cui big_folder si discosta e la sua struttura di directory da lì.

Infine - andando pedante qui - i tarmembri dell'archivio sono sempre relativi poiché a) possono essere ripristinati in qualsiasi directory eb) tar rimuove il comando principale /durante la creazione di un archivio. Personalmente tendo sempre a usare -C durante il disimballaggio di un archivio.


Per chiarire la modifica: fai tar -cf /network/mount/point/folder.tar /folderinvece di eseguire la tarring sul computer locale e poi caricare se puoi
Cole Johnson,

Exact. Più leggo la mia modifica, più penso che sembri confuso. Grazie per la tua comprensione.

1
Vale la pena notare il modo per evitare di fare l'archivio con percorsi assoluti: tar -cf $archive.tar -C $source_dir .. Se la macchina di destinazione non ha una directory con lo stesso percorso della directory di origine, dovrai farlo. Assicurati di -Centrare in una nuova directory quando estrai ( mkdir $destination_dir && tar -xf $archive.tar -C $destination_dir); altrimenti il ​​contenuto dell'archivio verrà scaricato in qualunque directory vi troviate.
Blacklight Shining

2

Alternativa: cpio

(cd /my/big/folder && find . -depth -print0 | cpio -0o > myfolder.cpio)

Disimballaggio nella directory corrente:

cpio -id < myfolder.cpio

Avvertenze:

  • Se si utilizza find /my/big/folderinvece di cd, l'archivio conterrà percorsi completi e l'estrazione proverà a seguirli;
  • I file di grandi dimensioni (> 2 GB) possono essere un problema;

Cpio tende ad essere molto più lento di tar, tuttavia, se utilizzato con la dimensione di blocco predefinita di 512. ( fixunix.com/sco/89900-cpio-performance-vs-tar-bit-mystery.html )
PSkocik
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.