Vấn đề của bạn có lẽ không phải là với máy tính của bạn, có lẽ nó vẫn ổn. Nhưng lớp chuyển đổi flash USB đó có một bộ xử lý riêng để vạch ra tất cả các ghi của bạn để bù cho những gì có thể nhiều như một chip flash bị lỗi 90%, ai biết? Bạn làm ngập nó sau đó bạn làm ngập bộ đệm của bạn sau đó bạn làm ngập toàn bộ xe buýt, sau đó bạn bị mắc kẹt, người đàn ông - sau tất cả, đó là nơi tất cả các công cụ của bạn. Nghe có vẻ phản trực giác nhưng điều bạn thực sự cần là chặn I / O - bạn cần để FTL thiết lập tốc độ và sau đó chỉ cần theo kịp.
(Về việc hack vi điều khiển FTL: http://www.bunniestudios.com/blog/?p=3554 )
Tất cả các câu trả lời ở trên nên hoạt động vì vậy đây là một "tôi cũng vậy!" hơn bất cứ điều gì khác: tôi đã hoàn toàn ở đó, anh bạn. Tôi đã giải quyết vấn đề của riêng mình với --bwlimit arg của rsync (2,5mbs dường như là điểm hấp dẫn cho một lần chạy duy nhất, không có lỗi - bất cứ điều gì nữa và tôi sẽ gặp phải lỗi bảo vệ chống ghi). rsync đặc biệt phù hợp với mục đích của tôi vì tôi đã làm việc với toàn bộ hệ thống tệp - vì vậy có rất nhiều tệp - và chỉ cần chạy rsync lần thứ hai sẽ khắc phục tất cả các sự cố của lần chạy đầu tiên (cần thiết khi tôi thiếu kiên nhẫn và thử để vượt qua 2,5mbs).
Tuy nhiên, tôi đoán rằng điều đó không thực tế cho một tệp. Trong trường hợp của bạn, bạn chỉ có thể chuyển sang dd được đặt thành raw-write - bạn có thể xử lý bất kỳ đầu vào nào theo cách đó, nhưng mỗi lần chỉ có một tệp mục tiêu (mặc dù tệp đó có thể là toàn bộ thiết bị khối).
## OBTAIN OPTIMAL IO VALUE FOR TARGET HOST DEV ##
## IT'S IMPORTANT THAT YOUR "bs" VALUE IS A MULTIPLE ##
## OF YOUR TARGET DEV'S SECTOR SIZE (USUALLY 512b) ##
% bs=$(blockdev --getoptio /local/target/dev)
## START LISTENING; PIPE OUT ON INPUT ##
% nc -l -p $PORT | lz4 |\
## PIPE THROUGH DECOMPRESSOR TO DD ##
> dd bs=$bs of=/mnt/local/target.file \
## AND BE SURE DD'S FLAGS DECLARE RAW IO ##
> conv=fsync oflag=direct,sync,nocache
## OUR RECEIVER'S WAITING; DIAL REMOTE TO BEGIN ##
% ssh user@remote.host <<-REMOTECMD
## JUST REVERSED; NO RAW IO FLAGS NEEDED HERE, THOUGH ##
> dd if=/remote/source.file bs=$bs |\
> lz4 -9 | nc local.target.domain $PORT
> REMOTECMD
Bạn có thể thấy netcat nhanh hơn một chút so với ssh cho việc truyền dữ liệu nếu bạn cho nó một shot. Dù sao, những ý tưởng khác đã được thực hiện, vậy tại sao không?
[EDIT]: Tôi nhận thấy đề cập đến lftp, scp và ssh trong bài đăng khác và nghĩ rằng chúng ta đang nói về một bản sao từ xa. Địa phương dễ dàng hơn nhiều:
% bs=$(blockdev --getoptio /local/target/dev)
% dd if=/src/fi.le bs=$bs iflag=fullblock of=/tgt/fi.le \
> conv=fsync oflag=direct,sync,nocache
[EDIT2]: Tín dụng khi đến hạn: chỉ cần chú ý ptman đã đánh bại tôi với điều này bằng cách năm giờ trong các bình luận.
Chắc chắn bạn có thể điều chỉnh $ bs cho hiệu suất ở đây với số nhân - nhưng một số hệ thống tệp có thể yêu cầu nó phải là bội số của các phân vùng của fs mục tiêu, vì vậy hãy ghi nhớ điều đó.
ionice
có thể được sử dụng để đảm bảo rằng quá trình sao chép từ đĩa sang đĩa của bạn được lên lịch I / O ở mức ưu tiên thấp hơn các quy trình thông thường.