Tauschen Sie zwei große Dateien in einer begrenzten Umgebung aus (tauschen Sie sie aus)


7

Angenommen, ich habe zwei Flash-Speichergeräte mit jeweils 1 GB Kapazität. Angenommen, jedes Gerät enthält eine große Datei mit einer Größe von ca. 1 GB. Angenommen, ich habe begrenzten (64 MB) RAM und kein Festplattenlaufwerk. Was ist der kürzeste Weg, um diese beiden Dateien auszutauschen?

Ich meine: wenn die Datei aauf dem Gerät ist Aund bist auf dem Gerät B, I - Swap - Betrieb setzen möge aauf Bund bauf A.

Ich weiß, dass es laut dieser Diskussion kein genaues Linux-Tool dafür gibt .

Ich interessiere mich für den kürzesten Weg, um mein Ziel zu erreichen. Wenn dieser Weg zu lang sein wird, muss ich wahrscheinlich meine eigene dedizierte Lösung implementieren, die den Austausch Stück für Stück durchführt, habe ich Recht?


Beim Kopieren der Dateien von chunk chunk, könnten Sie so etwas wie verwenden diese die Stücke konvertieren Sie bereits spärlichen Löcher an den freien Raum kopiert haben.
n.st

Antworten:


2

Solange beide Laufwerke voll oder fast voll sind, bezweifle ich, dass es eine hübsche Lösung gibt. Es sollte jedoch möglich sein, dd-Befehle zu durchlaufen. 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

Einige Überprüfungen sind erforderlich, wenn DateiA und DateiB unterschiedliche Größen haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.