Verschieben von Dateien in einem lokalen Netzwerk - würde das Komprimieren die Geschwindigkeit verbessern?

2206
Adam Matan

Ich bewege ungefähr 20 GB in meinem lokalen Netzwerk (100 MBit / s). Die Dateien stammen von einem typischen Linux-Desktopsystem.

Würde das Komprimieren mit Tar \ Gzip und das Versenden die Leistung verbessern?

BEARBEITEN: Ich bewege den Arbeitsbereich eines Entwicklers, dh viele Quellen und PDFs, und nicht viel Multimedia.

7
Ein Upgrade lohnt sich möglicherweise, wenn Sie Ihr LAN auf Gigabit-Ethernet aufrüsten. Ich habe vor einigen Jahren meinen Switch und einige Netzwerkkarten aufgerüstet und es hat sich definitiv gelohnt. Die meisten Motherboards verfügen jetzt sogar über integrierte 10/100/1000-Ports, sodass Sie möglicherweise nur Ihren Switch aufrüsten müssen. Chris W. Rea vor 15 Jahren 2

8 Antworten auf die Frage

5
nik

Dies hängt weitgehend von der Art der Dateien ab, die Sie verschieben.

  • Wenn Ihre Dateien wie PDF, JPEG-Filme, Installationsdateien usw. sind, sind
    sie wahrscheinlich bereits komprimiert und bieten Ihnen keinen großen Vorteil.
  • Wenn die Quelldateien komprimiert werden, ist das ziemlich nützlich.
  • Wenn es viele kleine Dateien gibt, ist zumindest ein tarArchiv nützlich.

Wenn Ihre Quellmaschine über viel Rechenleistung und Speicher verfügt,
wäre die Komprimierung in nützlicher Zeit - sonst targenügt ein (auf den obigen Punkten beruhender) Punkt.

Da Ihr Netzwerk nur 100 MBit / s umfasst, sollten Sie die Komprimierung unterstützen, wenn dies hilft.
Wenn Sie jedoch Dateien übertragen, die nicht stark komprimiert werden können,
sollten Sie die Übertragungszeit berücksichtigen

Alternativ können Sie auch andere Medien für die Übertragung in Betracht ziehen (z. B. USB / DVD).

5
pilif

Dies hängt neben dem Dateityp insbesondere von der Anzahl der Dateien ab. Während die Übertragung von Massendaten theoretisch mit Netzwerkgeschwindigkeit möglich ist, ist mit Dateisystemvorgängen viel Aufwand verbunden, z. B. das Auflisten von Dateien und Eigenschaften, das Erstellen und Löschen von Daten.

Bei einer großen Anzahl kleiner Dateien kann der Overhead sogar größer werden als die zu übertragenden Daten.

In solchen Fällen kann die Archivierung der Daten vor der Übertragung von großem Nutzen sein. Wenn es sich um stark komprimierbare Daten handelt (verschlüsselte und / oder bereits komprimierte Daten), empfehle ich, das Archiv nicht zu komprimieren, um viel Zeit zu sparen - verwenden Sie einfach tar.

Wenn die Dateien komprimierbar sind (unkomprimierte Bitmaps, Text), kann auch das Komprimieren sinnvoll sein.

Einverstanden. Die durch die Komprimierung gesparte Datengröße ist begrenzt. Es ist fast immer schneller, eine 20-GB-Datei zu übertragen, als 100.000 Dateien, die zusammengenommen 20 GB entsprechen. Tony vor 15 Jahren 0
2
peterb

Nik ist richtig, es kommt auf die Daten an. Allgemein gesagt:

  • JPEG-Fotos, -Filme und -Musik werden durch Teer oder Zip wahrscheinlich nicht wesentlich weiter komprimiert, da diese bereits effektiv komprimiert sind.
  • Durch das Komprimieren von Textdateien und Programm-Binärdateien erzielen Sie erhebliche Einsparungen an Speicherplatz (und damit Übertragungszeit).
2
Szetak

Technisch ja, obwohl die Gewinne um ein LAN gering wären.

Grundsätzlich durchlaufen Sie bei Netzübertragungen mehrere Schritte, in denen Sie gefragt werden, ob das Ziel bereit ist, Ihre Informationen zu empfangen. Dann senden Sie einige und prüfen, ob sie in Ordnung sind. Jede einzelne Datei erzeugt einen zusätzlichen Schritt "Neue Datei" und "Fertig die Datei". Wenn Sie also alle komprimieren / tarieren, erhalten Sie immer nur eine "neue Datei" und eine "fertige Datei", stattdessen Hunderte oder Tausende dieser Nachrichten zum Senden nicht komprimierter Dateien.

Über ein LAN kann es länger dauern, bis Sie Ihre Dateien komprimieren, anstatt sie zu senden. Ändern Sie Ihr Sendemedium in ein WAN, und der Reißverschluss ist der beste Weg.

2
Peter

Die wahrscheinlich schnellste Methode besteht darin, die Daten zu tarieren, sie durch eine Pipe zu führen und dann am anderen Ende zu tarnen.

Etwas wie das

$ tar -czf - root_dir | ssh -c blowfish remote_machine (cd parent_dir ; tar -xzf -) 

Das -z-Flag weist tar an, zu komprimieren, was einem separaten gzip-Schritt sehr ähnlich sein sollte, den Sie separat hinzufügen, wenn Sie möchten.

Wenn Sie Daten zu einem späteren Zeitpunkt kopieren oder synchronisieren müssen, können Sie rsync verwenden (-z gibt Komprimierung an). Insbesondere wenn der obige Befehl unterbrochen wird, bestätigt rsync Ihre Daten und sendet alles, was Sie verpasst haben.

Es wird viel sauberer sein, wenn ssh Sie nicht nach Passwörtern fragt, aber ich denke, es funktioniert sogar mit Passwörtern.

1
Nicolas S.

Das Komprimieren / Senden / Dekomprimieren dauert möglicherweise länger als das Verschieben der Originaldateien. Allerdings werden einige große Dateien oft besser gesendet als eine große Anzahl sehr kleiner Dateien, sodass sie in einer einzigen Datei komprimiert und dann übertragen werden könnte eine gute Option sein.

1
user5954

Zusätzlich zu den vorherigen Antworten sollten Sie auch die Last berücksichtigen, die Sie für das Netzwerk aufbringen und wie sich dies auf andere Benutzer auswirkt. Bei einer solchen Datenmenge, insbesondere wenn dieselben Daten an mehrere Ziele gesendet werden, würde ich ernsthaft in Betracht ziehen, ein externes Laufwerk als Übertragungsmedium zu verwenden.

+1 für den gesunden Menschenverstand: Externe Laufwerke eignen sich hervorragend für lokales Kopieren. Chris W. Rea vor 15 Jahren 0
1
user2667656

Ja. Ich habe dies erlebt und verwende diese Methode, um große Datenmengen zu sichern. Wenn Sie die Datei nur kopieren möchten, um Dateien auf einer externen Festplatte zu sichern, komprimieren Sie alle Dateien / Ordner in einer oder wenigen ZIP / rar-Dateien und kopieren Sie sie auf ein externes Laufwerk. Das spart viel Zeit.

Das Schreiben einer großen Datei auf ein externes Laufwerk ist weitaus effizienter als das Schreiben von Millionen winziger Einzeldateien.