Tauschen Sie zwei große Dateien in einer begrenzten Umgebung aus.

Tauschen Sie zwei große Dateien in einer begrenzten Umgebung aus.

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 aauf dem Gerät ist Aund bauf dem Gerät liegt B, möchte ich, dass der Swap-Vorgang adarauf Bund bdarauf 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.

verwandte Informationen