So speichern Sie einen großen Ordner in einer einzelnen Datei ohne Komprimierung

11

Ich möchte einen 78-GB-Ordner in einer einzelnen Datei speichern (zum Hochladen in einen Cloud-Dienst), als würde ich ihn in einem Archiv komprimieren, aber ich möchte keine Komprimierung (ich habe nicht so viel CPU) verfügbare Zeit). Gibt es überhaupt eine Möglichkeit, dies zu erreichen, vielleicht einen Terminalbefehl, von dem ich nichts weiß?

cjmaria
quelle
1
Es gibt einen tarBefehl unter Linux. tar -cf long.file.tar folder
Costas
5
Zu Ihrer Information: Es gibt schnelle Komprimierungsprogramme, von denen einige schneller als die Schreibgeschwindigkeit Ihrer Festplatte sind und viele schneller als Ihr Netzwerk. Die Verwendung einer dieser Methoden beschleunigt die Arbeit, wenn die Daten überhaupt komprimierbar sind. ZB lzopist auf Geschwindigkeit ausgelegt.
Derobert

Antworten:

20

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

Stellen Sie das Archiv mit wieder her tar -xf my_big_folder.tar -C /

-C wechselt in das Stammverzeichnis, um Ihr Archiv wiederherzustellen, da das oben erstellte Archiv absolute Pfade enthält.

BEARBEITEN : Aufgrund der relativ großen Größe des Archivs ist es am besten, es [direkt] mit SSH oder einem Mount-Punkt der Cloud-Ressource / des Cloud-Ordners an seinen endgültigen Speicherort zu senden. Zum Beispiel, wie Cole Johnson vorschlägt :

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

oder

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

BEARBEITEN : Wie Blacklight Shining auch vorschlägt : Wenn Sie absolute Pfade vermeiden möchten, können Sie zum übergeordneten Ordner des großen Ordners wechseln und tarvon dort aus:

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

oder

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

Persönliche Reflexionen

Ob relative oder absolute Pfade eingeschlossen werden, ist eine Frage der persönlichen Präferenz.

Es gibt Fälle, in denen absolute Pfade offensichtlich sind, z. B. für eine Wiederherstellung in einer Disaster Recovery-Situation. Bei lokalen Projekten oder Sammlungen ist es üblich, einen Verzeichnisbaum vom übergeordneten Ordner des gewünschten Ordners zu archivieren, um ein Überladen des aktuellen Verzeichnisses zu vermeiden, falls das Archiv versehentlich an Ort und Stelle entpackt wird. Wenn big_folder irgendwo tief in einer Standard * NIX-Hierarchie liegt , kann es sinnvoll sein, mit der Archivierung des ersten nicht standardmäßigen Ordners zu beginnen, von dem big_folder abweicht, und seines Verzeichnisbaums von dort.

Schließlich - hier pedantisch - sind tarArchivmitglieder immer relativ, da a) sie in einem beliebigen Verzeichnis wiederhergestellt werden können und b) tar die führenden /beim Erstellen eines Archivs entfernt werden. Ich persönlich benutze beim Auspacken eines Archivs immer -C .

Gemeinschaft
quelle
Um die Bearbeitung zu verdeutlichen: Tun Sie, tar -cf /network/mount/point/folder.tar /folderanstatt auf dem lokalen Computer zu teern und dann hochzuladen, wenn Sie können
Cole Johnson
Genau. Je mehr ich meine Bearbeitung lese, desto mehr denke ich, dass sie verwirrt aussieht. Vielen Dank für Ihren Einblick.
1
Es ist erwähnenswert, wie Sie vermeiden können, dass das Archiv mit absoluten Pfaden erstellt wird : tar -cf $archive.tar -C $source_dir .. Wenn die Zielmaschine Verzeichnis muss nicht mit dem gleichen Pfad wie das Quellverzeichnis, werden Sie brauchen , das zu tun. Stellen Sie einfach sicher, dass Sie -Cin ein neues Verzeichnis wechseln, wenn Sie ( mkdir $destination_dir && tar -xf $archive.tar -C $destination_dir) extrahieren . Andernfalls wird der Archivinhalt in das Verzeichnis verschoben, in dem Sie sich gerade befinden.
Blacklight Shining
2

Alternative: cpio

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

In das aktuelle Verzeichnis entpacken:

cpio -id < myfolder.cpio

Vorsichtsmaßnahmen:

  • Bei Verwendung von find /my/big/folderstatt enthält cddas Archiv vollständige Pfade, und die Extraktion versucht, diesen zu folgen.
  • Große Dateien (> 2 GB) können ein Problem sein.
Vi.
quelle
Cpio ist jedoch tendenziell viel langsamer als tar, wenn es mit der Standardblockgröße 512 verwendet wird. ( Fixunix.com/sco/89900-cpio-performance-vs-tar-bit-mystery.html )
PSkocik