Übertragen Sie eine 30-GB-TAR-Datei von einem Remote-Server auf einen anderen - eingeschränkt durch Speicherplatz

8

Ich habe eine 38 GB "Moodle" -Tar-Datei, die ich vom alten Server (Shared Hosting) übertragen muss, die wir "Server A" auf den neuen Server (Dedicated Virtual) oder "Server B" nennen können. Ich bin bei Mediatemple, wenn das hilft.

Ich habe das Verzeichnis bereits tarballed und wget verwendet, um es über SSH auf Server B zu übertragen - es ist ein mickriges 100-GB-Paket und ich habe 96% Festplattenkapazität - was bedeutet, dass ich die Datei auf Server B nicht entpacken kann! Gibt es eine Möglichkeit, diese riesige Datei von Server A auf Server B zu übertragen, wobei die Berechtigungen erhalten bleiben und die Dateibeschädigung mit der geringstmöglichen Wahrscheinlichkeit beschädigt wird, wodurch ich das Festplattenlimit nicht erreiche?

Obwohl ich bisher eine ganze Weile damit verbracht habe, wäre ich bereit, meinen ursprünglichen Plan aufzugeben, wenn jemand eine bessere Idee anbieten kann - und ich wäre sehr dankbar!

Alexbass
quelle

Antworten:

21

Nicht tarieren. Verwenden Sie rsync -avdiese Option , um die Berechtigungen beim Übertragen der Dateien beizubehalten. Obwohl dies wie Teer ist, bleibt der Selinux-Kontext nicht erhalten. Nicht, dass ich das für wichtig halten würde.

Dennis Kaarsemaker
quelle
1
Hallo Dennis, danke für die Antwort. Ich nehme nicht an, dass Sie etwas näher darauf eingehen könnten, wie der Befehl rsync verwendet wird. Oder einen nützlichen Artikel liefern?
Nochmals vielen
1
Ein nützlicher Artikel wäre die rsync-Manpage :) Aber kurz gesagt: Wenn Sie ssh-Zugriff von serverb auf servera haben, führen Sie dies auf serverb aus:rsync -av servera:/path/to/files/to/copy/ /path/to/copy/to
Dennis Kaarsemaker
1
Wenn Sie nicht sicher sind, wie Sie grundlegende Befehle auf dem von Ihnen verwendeten Betriebssystem verwenden sollen, beginnen Sie mit der Hilfefunktion. Auf Unix-Maschinen ist das oft so etwas wie man rsyncoderrsync --help
mfinni
1
-aimpliziert -r(und viele weitere Flags, die die Leute immer wieder vergaßen, bis sie -aals "dies sind die nützlichen Flags für das
Erstellen von
1
Wenn Sicherheit kein Problem ist (ich meine, Sie vertrauen dem Netzwerk zwischen den beiden Computern), ist nc ebenfalls eine Option. Auf dem Server: tar -zc source | nc -l 1313 Auf dem Client: nc SERVER_IP 1313 | tar -zx
Tsvetomir Dimitrov
12

Sie möchten wahrscheinlich mehr Speicherplatz kaufen, aber wenn Sie dies nicht tun, könnten Sie ...

Leiten Sie den Tarball herum, anstatt ihn herunterzuladen.

newserver#  ssh olduser@oldserver "cat /path/to/tarball" | tar xf -

oder wenn Sie keinen SSH-Zugriff auf Ihren alten Server haben

newserver# wget -O - http://oldserver/path/to/tarball | tar xf -

oder benutze rsync wie Dennis sagte .

Seien Sie kreativ. Es gibt andere Lösungen, die ich nicht erwähne.

voretaq7
quelle
Möglicherweise müssen Sie die --numeric-ownerOption verwenden, bevor Sie Tarball erstellen, um sicherzustellen, dass sich Eigentümer und Gruppen nicht ändern. ssh ouser@oserver tar -zcplC /src_path --numeric-owner . | tar -zxpC /dst_path
F. Hauri
@ F.Hauri --numeric-ownerkann (möglicherweise schwerwiegende) unbeabsichtigte Folgen haben, wenn sich das UID / GID-Schema zwischen den beiden Maschinen unterscheidet. Dies ist normalerweise kein Problem in der internen Umgebung, aber der Wechsel von "Shared Hosting" zu "Dedicated Virtual" kann zu Problemen führen. Sie sollten erwarten , zu fix Eigentum auf den neuen Server zu haben , wenn verwendet tar, cpiound möglicherweise sogar rsync.
voretaq7
Ja, Sie haben Recht, aber wenn Sie nicht über diese Art von Option Bescheid wissen, kann dies auch (den gleichen) Randeffekt haben. Das Beste von allem: wissen, was Sie tun und ... rtfm ;-)
F. Hauri
... einige interessante Art und Weise (Filter) verwendet werden (oder nicht) , um kreativ zu sein : ncoder openssl, sed, gpg, uuencodeund mail(mit Sorgfalt;) enscript+ lpr+ [aviäre Träger] ( fr.wikipedia.org/wiki/IP_over_Avian_Carriers ) + scan+ ocr. .. Aber es gibt noch mehr ...
F. Hauri