Troque (troque) dois arquivos grandes em ambiente limitado

7

Digamos que eu tenha dois dispositivos de memória flash de 1 GB de capacidade cada. Digamos também que cada dispositivo contenha um arquivo grande com tamanho de ~ 1 GB. Supondo que eu tenha RAM (64MB) limitada e sem disco rígido, qual é o caminho mais curto para trocar esses dois arquivos?

Quero dizer: se o arquivo a estiver no dispositivo A e b estiver no dispositivo B , quero que a operação de troca coloque a em B e b on A .

Eu sei que não existe uma ferramenta exata do Linux para fazer isso de acordo com discussão a>.

Estou interessado no caminho mais curto para alcançar meu objetivo. Se esse caminho for muito longo, provavelmente terei que implementar minha própria solução dedicada que executará o swap por pedaço, estou certo?

    
por Scony 26.03.2014 / 14:45

1 resposta

2

Desde que ambas as unidades estejam cheias ou quase cheias, duvido que exista uma solução bonita. Deve ser possível fazer o loop pelos comandos dd. Algo como

#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

Algumas verificações são necessárias para quando o arquivo A e o arquivo B tiverem tamanhos diferentes.

    
por 29.03.2014 / 21:15