
Nehmen wir an, ich habe zwei Flash-Speichergeräte mit jeweils 1 GB Kapazität. Nehmen wir außerdem an, jedes Gerät enthält eine große Datei mit einer Größe von ca. 1 GB. Angenommen, ich habe nur begrenzten (64 MB) RAM und keine Festplatte,Was ist der kürzeste Weg, diese beiden Dateien auszutauschen?
Ich meine: Wenn die Datei a
auf dem Gerät ist A
und b
auf dem Gerät liegt B
, möchte ich, dass der Swap-Vorgang a
darauf B
und b
darauf erfolgt A
.
Ich weiß, dass es kein genaues Linux-Tool gibt, um das zu tun, lautdiese Diskussion.
Ich bin an dem kürzesten Weg interessiert, um mein Ziel zu erreichen. Wenn dieser Weg zu lang ist, muss ich wahrscheinlich meine eigene dedizierte Lösung implementieren, die den Swap Stück für Stück durchführt, oder?
Antwort1
Solange beide Laufwerke voll oder fast voll sind, bezweifle ich, dass es eine gute Lösung gibt. Es sollte jedoch möglich sein, dd-Befehle zu durchlaufen. So etwas wie
#This code is completely untested,
#do NOT just copy paste and use it without proper testing
while [[ $((i*chunkSize)) -lt fileSize ]]; do
dd skip=$i seek=$i bs=$chunkSize count=1 if=fileA of=tmpFileInMemory
dd skip=$i seek=$i bs=$chunkSize count=1 if=fileB of=FileA
dd skip=$i seek=$i bs=$chunkSize count=1 if=tmpFileInMemory of=fileB
done
Wenn Datei A und Datei B unterschiedliche Größen haben, sind einige Überprüfungen erforderlich.