Есть хороший инструмент для копирования файлов?

8

Диалог копирования застрял на 0 секунд осталось ...

Всякий раз, когда я пытаюсь скопировать большие файлы на мой USB-накопитель (в любом формате), он всегда останавливается в последний момент. Это заканчивается через долгое время .

Я искал Ask Ubuntu для похожих постов и получил много , но ни у одного из них нет хороших решений.

Итак ... Есть ли какой-нибудь альтернативный инструмент копирования, такой как Teracopy в Windows?

Или есть какие-то исправления, которые я могу сделать?

Введите описание изображения здесь

Северус Тукс
источник
Также, пожалуйста, дайте мне знать, какие файлы я должен загрузить для справки
Severus Tux
2
Не совсем уверен, но я настоятельно предполагаю, что ваша проблема связана с кэшированием записи USB . Поиск сообщений о том, как отключить это. Тогда весь процесс копирования будет выглядеть медленнее, но он должен быть действительно закончен, когда он будет выглядеть законченным.
Byte Commander
@ByteCommander медленнее, вы имеете в виду фактическую скорость ??
Северус Такс
2
Я не слишком знаком с этой темой, но кэширование просто хранит данные, которые вы хотите записать на ваше USB-устройство, в памяти и фактически записывает их позже, когда считает, что шина или устройства менее загружены, или когда может оптимизировать способ сохранять вместе блоки данных ... Это не должно улучшать фактическую физическую скорость записи (намного), она будет казаться вам быстрее, потому что процесс копирования отчетов завершается, как только все данные для записи находятся в кэше. Но все равно требуется больше времени для записи кеша на устройство. Вы не можете сразу же отключить его, пока кэш не будет записан
Byte Commander
Да, фактическая скорость копирования будет такой же (возможно, немного медленнее, потому что буфер делает менее вероятным, что будет момент, когда на диск ничего не будет записано, но не так много в слегка загруженной системе), но появится диалоговое окно прогресса будет более точным.
Hobbs

Ответы:

6

Вы не должны беспокоиться об этом слишком много.
Возможно, ваш USB-накопитель имеет «более низкое качество».
Вывод диалога относительно времени вводит в заблуждение.

Другие инструменты копирования могут иметь другое поведение вывода,
но они не улучшают скорость записи на USB-накопитель.
Самое главное, что в конечном итоге действие копирования завершается успешно.

Что вы можете сделать, это оптимизировать планировщики ввода / вывода дисков.

Установите gksu(если вы этого еще не сделали), чтобы редактировать файлы с geditправами root:

sudo apt-get install gksu  

Теперь оптимизируйте приоритет всех запущенных процессов для дисков различных типов:

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

Вставьте следующие строки в этот пустой файл и затем сохраните файл:

# 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"  

Внесенные изменения вступают в силу после перезапуска операционной системы.

Также ... альтернативное решение для копирования доступно в репозиториях Ubuntu:

sudo apt-get install dirdiff  

Теперь запустите инструмент из терминала, чтобы сравнить или скопировать файлы и папки:

dirdiff

dirdiffэто графический интерфейс для diffи может обрабатывать до 5 деревьев. Он отображает главное окно со списком файлов, которые отличаются между деревьями, с цветными квадратами, чтобы указать относительный возраст версий. Меню позволяет отображать различия между любыми двумя версиями в другом окне. Другое меню позволяет копировать файлы и папки из одного дерева в другое.

Резюме: Наиболее актуальным является качество USB-диска и его скорость записи!

сл-NetBox
источник
7

Причина, по которой вы видите, что копирование происходит так, как вы делаете, заключается в том, что запись на USB-накопитель выполняется асинхронно .

Когда вы копируете файл, он фактически копирует его в буфер USB-накопителя, который находится в оперативной памяти вашего компьютера. Первая часть копии очень быстрая, потому что она просто входит в буфер. Данные сбрасываютсяиз буфера на USB-накопитель гораздо медленнее. После того, как буфер заполнен, он должен ждать, пока некоторые данные будут сброшены на диск, прежде чем он сможет больше помещаться в буфер, поэтому копирование затем замедляется, фактически до скорости USB-накопителя. Как только весь файл был помещен в буфер, кажется, что файл был скопирован. Однако не все данные были сброшены из буфера на сам USB-диск. Некоторые программы копирования просто возвращаются и позволяют этой очистке продолжаться в фоновом режиме. Некоторые будут ждать, пока все данные не будут сброшены, поэтому они останутся на 100% в течение некоторого времени.

Вы можете переключить диск в синхронный режим, что означает, что все данные немедленно записываются на USB-накопитель без использования буфера. Это создаст впечатление более плавной передачи данных, но может фактически привести к общему снижению скорости.

Если вы вручную монтируете диск из командной строки, вы можете добавить -o sync.

Если вы монтируете его с помощью fstab, вы можете добавить syncопцию.

Если вы полагаетесь на то, что Ubuntu монтирует его для вас при доступе к нему в графическом интерфейсе, вы можете изменить параметры монтирования из командной строки после его монтирования:

sudo mount -o remount -o sync /media/yourname/diskname
Majenko
источник
2
Это ответ.
Кос
2

Возможно, проблема в том, что файл полностью читается и сохраняется в памяти, прежде чем он будет полностью записан на целевой диск.

Это не означает точного ответа на вопрос, но pvв случае больших файлов можно использовать обходной путь из командной строки:

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

Всякий раз, когда нужно скопировать большой файл:

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

Следует отметить, что это страдает от аналогичной проблемы нежелательной буферизации при использовании в конвейере; в этом случае исправление ограничивает скорость передачи до значения, немного превышающего скорость записи целевого диска:

[...] | pv -L 10M >/media/username/usb/big_file # Limits the transfer rate to 10 MB/s
кос
источник
1

Есть ряд альтернатив. Вы можете использовать подход командной строки:

cp *source* *target*

где source - это файл, который вы хотите скопировать, а target - это файл или папка, в которую вы хотите скопировать. Дополнительные параметры можно найти по адресу https://softwarerecs.stackexchange.com/.

Старейшина Гик
источник
0
dd if=INPUT_FILE_PATH of=OUTPUT_FILE_PATH bs=$(( 64 * 1024 * 1024 )) oflag=sync

Это будет считывать из вашего ifфайла и записывать в ofфайл в 64-мегабайтных чанках и ждать, пока не будет записан каждый чанк, прежде чем начинать следующий. Утилита, которую вы используете, скорее всего, просто читает файл в память, а затем отправляет его на диск (и не известно, сколько байт за раз он делает). Кэширование записи может происходить и в самом USB-ключе… Так что скорость 60 МБ / с, которую вы получаете, является скоростью передачи через соединение USB во внутренний кэш электронного ключа. Но это вряд ли, если это не USB3 ключ. USB2 не обладает достаточной пропускной способностью для обработки 60 МБ / с.

Дмитрий Рубанович
источник
0

Нет необходимости во всем вышеперечисленном. Просто откройте окно терминала, когда передача показывает 0% слева, и введите « syncСо страниц справки» команда sync очищает буферы файловой системы, но, конечно, она сбрасывает только те, на которые у вас есть права. Если вы хотите сбросить их все, введитеsudo sync

Скуби-2
источник