Có một công cụ sao chép tập tin tốt?


8

Cuộc đối thoại sao chép bị kẹt ở 0 giây còn lại ...

Bất cứ khi nào tôi cố gắng sao chép các tệp lớn vào ổ USB của mình (ở bất kỳ định dạng nào), nó luôn dừng ở giây cuối cùng. Nó kết thúc sau một thời gian dài .

Tôi đã tìm kiếm Hỏi Ubuntu cho các bài viết tương tự và nhận được nhiều , nhưng không ai trong số họ có giải pháp tốt.

Vậy ... Có công cụ sao chép nào khác như Teracopy trên Windows không?

Hoặc có bất kỳ sửa chữa tôi có thể làm?

Nhập mô tả hình ảnh ở đây


Ngoài ra, vui lòng cho tôi biết những tập tin nào tôi nên tải lên để tham khảo
Severus

2
Không thực sự chắc chắn, nhưng tôi mạnh mẽ cho rằng vấn đề của bạn có liên quan đến bộ nhớ đệm ghi USB . Tìm kiếm bài viết về cách vô hiệu hóa đó. Toàn bộ quá trình sao chép sẽ xuất hiện chậm hơn sau đó, nhưng nó sẽ thực sự kết thúc khi nó kết thúc.
Chỉ huy Byte

@ByteCommander Bởi chậm hơn, ý bạn là tốc độ thực tế ??
Severus

2
Tôi không quá quen thuộc với chủ đề đó, nhưng bộ nhớ đệm chỉ giữ dữ liệu bạn muốn ghi vào thiết bị USB của bạn trong bộ nhớ và thực sự ghi nó sau, khi nó nghĩ rằng xe buýt hoặc thiết bị ít bận rộn hơn hoặc khi nó có thể tối ưu hóa cách để cùng nhau lưu các khối dữ liệu ... Điều này sẽ không cải thiện tốc độ ghi vật lý thực tế (nhiều), nó sẽ xuất hiện nhanh hơn với bạn, bởi vì quá trình sao chép báo cáo sẽ kết thúc ngay khi tất cả dữ liệu ghi vào bộ đệm. Nhưng vẫn cần nhiều thời gian hơn để ghi bộ nhớ cache vào thiết bị. Dù sao thì bạn cũng không thể rút phích cắm ra trước khi bộ đệm được ghi
Byte Commander

Đúng, tốc độ sao chép thực tế sẽ như nhau (có lẽ chậm hơn một chút vì bộ đệm làm cho ít có khả năng sẽ có một khoảnh khắc khi không có gì được ghi vào đĩa, nhưng không nhiều trên hệ thống tải nhẹ), nhưng hộp thoại tiến trình sẽ chính xác hơn
hobbs 6/2/2016

Câu trả lời:


6

Bạn không nên lo lắng về điều này quá nhiều.
Có thể ổ USB của bạn có "chất lượng thấp hơn".
Đầu ra hộp thoại liên quan đến thời gian là sai lệch.

Các công cụ sao chép khác có thể có hành vi đầu ra khác nhau,
nhưng chúng không cải thiện tốc độ ghi của ổ USB.
Quan trọng nhất trong tất cả là cuối cùng hành động sao chép thành công.

Những gì bạn có thể làm là tối ưu hóa bộ lập lịch đầu vào / đầu ra của đĩa.

Cài đặt gksu(khi bạn chưa có) để chỉnh sửa các tệp với quyền geditroot:

sudo apt-get install gksu  

Bây giờ tối ưu hóa mức độ ưu tiên của tất cả các quy trình đang chạy cho các loại đĩa khác nhau:

gksudo gedit /etc/udev/rules.d/60-schedulers.rules

Dán các dòng sau vào tệp trống này và lưu tệp sau đó:

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

Những thay đổi bạn đã thực hiện có hiệu lực sau khi khởi động lại hệ điều hành.

Ngoài ra ... một giải pháp sao chép thay thế có sẵn trong kho Ubuntu:

sudo apt-get install dirdiff  

Bây giờ khởi chạy công cụ từ một thiết bị đầu cuối để so sánh hoặc sao chép các tập tin và thư mục:

dirdiff

dirdifflà một GUI cho diffvà có thể xử lý tối đa 5 cây. Nó hiển thị một cửa sổ chính với một danh sách các tệp khác nhau giữa các cây, với các ô vuông màu để biểu thị độ tuổi tương đối của các phiên bản. Một menu cho phép bạn hiển thị sự khác biệt giữa bất kỳ hai trong số các phiên bản trong một cửa sổ khác. Một menu khác cho phép bạn sao chép các tập tin và thư mục từ cây này sang cây khác.

Tóm tắt: Liên quan nhất đến tất cả là chất lượng của đĩa USB và khả năng tốc độ ghi của nó!


7

Lý do mà bạn thấy việc sao chép xảy ra theo cách bạn làm là việc ghi vào ổ USB không đồng bộ .

Khi bạn sao chép một tập tin, nó thực sự sao chép nó vào bộ đệm của ổ đĩa USB, nằm trong RAM của máy tính của bạn. Phần đầu tiên của bản sao rất nhanh bởi vì nó chỉ đi vào bộ đệm. Dữ liệu bị xóatừ bộ đệm đến ổ USB với tốc độ chậm hơn nhiều. Khi bộ đệm đã đầy, nó phải đợi một số dữ liệu được xóa vào đĩa trước khi nó có thể đặt thêm vào bộ đệm, do đó, bản sao sẽ chậm lại, hiệu quả với tốc độ của ổ USB. Khi tất cả các tệp đã được đặt vào bộ đệm, có vẻ như tệp đã được sao chép. Tuy nhiên, không phải tất cả dữ liệu đã được xóa từ bộ đệm vào đĩa USB. Một số chương trình sao chép chỉ cần quay lại và để cho việc xả đó tiếp tục trong nền. Một số sẽ đợi cho đến khi tất cả các dữ liệu đã được xóa, đó là lý do tại sao nó sẽ ở lại 100% trong một thời gian.

Bạn có thể chuyển đĩa sang chế độ đồng bộ, có nghĩa là tất cả dữ liệu được ghi ngay vào ổ USB mà không cần sử dụng bộ đệm. Điều này sẽ mang lại ấn tượng về việc truyền dữ liệu mượt mà hơn, nhưng thực sự có thể kết thúc với việc giảm tốc độ tổng thể.

Nếu bạn tự gắn đĩa từ dòng lệnh, bạn có thể thêm -o sync.

Nếu bạn gắn kết nó bằng fstab, bạn có thể thêm synctùy chọn.

Nếu bạn dựa vào Ubuntu gắn nó cho bạn khi bạn truy cập nó trong GUI, bạn có thể sửa đổi các tùy chọn gắn kết từ dòng lệnh sau khi được gắn kết:

sudo mount -o remount -o sync /media/yourname/diskname

2
Đây là những câu trả lời.
kos

2

Vấn đề có thể là tệp được đọc và lưu trữ hoàn toàn trong bộ nhớ trước khi nó được ghi hoàn toàn vào ổ đĩa đích.

Điều này không có nghĩa là trả lời chính xác câu hỏi, nhưng một cách giải quyết có thể được sử dụng pvtừ dòng lệnh trong trường hợp các tệp lớn:

sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install pv

Bất cứ khi nào cần sao chép một tập tin lớn:

pv /path/to/big_file >/media/username/usb/big_file

Cần lưu ý rằng điều này bị một vấn đề đệm không mong muốn tương tự khi được sử dụng trong một đường ống; nếu đó là trường hợp sửa chữa sẽ giới hạn tốc độ truyền ở mức cao hơn tốc độ ghi của ổ đĩa đích một chút:

[...] | pv -L 10M >/media/username/usb/big_file # Limits the transfer rate to 10 MB/s

1

Có một số lựa chọn thay thế. Bạn có thể sử dụng cách tiếp cận dòng lệnh:

cp *source* *target*

trong đó nguồn là tệp bạn muốn sao chép và đích là tệp hoặc thư mục bạn muốn sao chép vào. Các tùy chọn khác có thể được tìm thấy tại https://softwarerecs.stackexchange.com/


0
dd if=INPUT_FILE_PATH of=OUTPUT_FILE_PATH bs=$(( 64 * 1024 * 1024 )) oflag=sync

Điều này sẽ đọc từ iftệp của bạn và ghi vào oftệp trong các đoạn 64MiB và đợi cho đến khi mỗi đoạn được viết ra trước khi bắt đầu đoạn tiếp theo. Tiện ích bạn đang sử dụng rất có thể chỉ là đọc tệp vào bộ nhớ và sau đó gửi nó vào đĩa (và không có gì để nói có bao nhiêu byte tại một thời điểm nó đang thực hiện). Bộ nhớ đệm ghi có thể nằm trong chính dongle usb .... Vì vậy, tốc độ 60MiB mỗi giây mà bạn nhận được là tốc độ truyền qua kết nối usb với bộ đệm trong của dongle. Nhưng điều đó không có khả năng trừ khi đó là dongle USB3. USB2 không có đủ thông lượng để xử lý 60MiB mỗi giây.


0

Không cần cho tất cả các bên trên. Đơn giản chỉ cần mở một cửa sổ đầu cuối khi chuyển khoản hiển thị 0% còn lại và gõ syncTừ các trang man, lệnh đồng bộ sẽ xóa bộ đệm hệ thống tệp, nhưng tất nhiên nó sẽ chỉ xóa những cái mà bạn có quyền. Nếu bạn muốn tuôn ra tất cả các loạisudo sync

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.