Trao đổi (trao đổi) hai tệp lớn trong môi trường hạn chế


7

Giả sử tôi có hai thiết bị bộ nhớ flash mỗi ổ có dung lượng 1GB. Chúng ta cũng nói rằng mỗi thiết bị chứa một tệp lớn ~ 1GB. Giả sử, tôi có RAM (64 MB) giới hạn và không có ổ đĩa cứng, cách ngắn nhất để trao đổi hai tệp này là gì?

Ý tôi là: nếu tập tin anằm trên thiết bị Abtrên thiết bị B, tôi muốn thao tác trao đổi được đặt atrên Bbtrên A.

Tôi biết không có công cụ linux chính xác để làm điều đó theo cuộc thảo luận này .

Tôi quan tâm đến con đường ngắn nhất để đạt được mục tiêu của mình. Nếu cách đó sẽ quá dài, có lẽ tôi sẽ phải thực hiện giải pháp chuyên dụng của riêng mình, nó sẽ thực hiện trao đổi chunk bằng chunk, phải không?


Khi sao chép các đoạn dữ liệu theo từng đoạn, bạn có thể sử dụng một cái gì đó như thế này để chuyển đổi các đoạn bạn đã sao chép thành các lỗ thưa thớt thành không gian trống.
22 giờ 49

Câu trả lời:


2

Miễn là cả hai ổ đĩa đều đầy, hoặc gần như đầy, tôi nghi ngờ có một giải pháp khá hay. Nó có thể lặp qua các lệnh dd mặc dù. Cái gì đó như

#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

Một số kiểm tra là cần thiết khi fileA và fileB có kích thước khác nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.