Kopieren von Files >2GB mit SCP ohne “file too large”
Wer schonmal versucht hat Files die größer sind als 2 GB mit SCP zu kopieren ist vielleicht auch auf folgendes Problem gestoßen.
“Filetransfer aborted, file too large”
Was die Ursache dieses Problems ist kann ich nicht mit 100 prozentiger Sicherheit sagen. Meiner Meinung nach liegt an den 32Bit meines OS. Könnte eine Filesystembeschränkung sein oder mit den ulimits zusammenhängen. Ich weiss es leider nicht genau. Wer den genauen Grund kennt darf mir diesen gerne mitteilen.
Ich nutze den 2.6.22-14-gerneric Kernel 32Bit mit einem ext3 Filesystem.
Was ich aber dafür kenne ist die Lösung des Problems, und die sieht so aus:
ssh -C root@${remote_server} “cat $FILE | dd of=mein_file
Dieses Kommando erstellt das File in dem Directory in dem es ausgeführt wird
Es wird einfach das Source File per cat eingelesen und per Pipe an dd übergeben, der es wieder als “mein_file” ins lokale Directory schreibt.
Wer die ganze Geschichte noch tunen möchte sollte sich den dd Parameter bs mal genauer anschauen.
Da hier alles sequentiell geschieht, im Gegensatz zu scp, wo das Source File zuerst in den Speicher gelesen werden muss um die Größe zu bestimmen liegt die Vermutung nahe, das ich mit meinem TIP des 32 Bit Problems richtig liege…
Tags: 2 gb, cat, dd, large file, Linux, scp, shell
