Чи є хороший інструмент для копіювання файлів?


8

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

Кожен раз, коли я намагаюся скопіювати великі файли на свій USB pendrive (у будь-якому форматі), він завжди зупиняється в останній момент. Він закінчується через тривалий час .

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

Отже ... Чи існує якийсь альтернативний інструмент копіювання, такий як Teracopy у Windows?

Або якісь виправлення я можу зробити?

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


Також, будь ласка, повідомте мені, які файли я повинен завантажити для довідки
Severus Tux

2
Не дуже впевнений, але я напевно припускаю, що ваша проблема пов'язана з кешуванням запису через USB . Шукайте публікації про те, як відключити це. Весь процес копіювання буде потім повільніше, але він повинен бути дійсно закінчений, коли він виглядає закінченим.
Байт командир

@ByteCommander Повільніше, Ви маєте на увазі фактичну швидкість ??
Severus Tux

2
Я не надто знайомий з цією темою, але кешування просто зберігає дані, які ви хочете записати на свій USB-пристрій, і фактично записує їх пізніше, коли він вважає, що шина або пристрої менш зайняті, або коли він може оптимізувати спосіб щоб разом зберегти блоки даних ... Це не повинно покращити фактичну фізичну швидкість запису (значно), вона просто з’явиться вам швидше, тому що процес копіювання звітів буде закінчений, як тільки всі дані для запису будуть в кеш-пам'яті. Але ще потрібно більше часу, щоб записати кеш на пристрій. Ви не могли негайно відключити його від мережі, перш ніж буде записано кеш
Byte Commander

Так, фактична швидкість копіювання була б однаковою (можливо, трохи повільнішою, оскільки буфер робить меншою ймовірність того, що настане момент, коли нічого не записується на диск, але не сильно в систему з легким завантаженням), але діалог прогрес було б точніше.
поварки

Відповіді:


6

Не варто надто хвилюватися з цього приводу.
Можливо, ваш USB-накопичувач "нижчої якості".
Діалоговий висновок про час вводить в оману.

Інші засоби копіювання можуть мати різну поведінку на виході,
але вони не покращують швидкість запису USB-накопичувача.
Найголовніше - це, що нарешті дія копіювання вдається.

Що ви можете зробити, це оптимізувати планувальники вводу / виводу дисків.

Встановіть gksu(коли ви ще цього не зробили) для редагування файлів з використанням geditroot:

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-диска та його швидкість запису!


7

Причина того, що ви бачите, що копіювання відбувається так, як ви це робите, - це те, що запис на USB-накопичувач є асинхронним .

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

Ви можете переключити диск в синхронний режим, що означає, що всі дані негайно записуються на USB-накопичувач, не використовуючи буфер. Це створить враження більш плавної передачі даних, але може призвести до загального зниження швидкості.

Якщо ви вручну змонтуєте диск з командного рядка, ви можете додати його -o sync.

Якщо ви встановите його за допомогою fstab, ви можете додати цю syncопцію.

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

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

2
Це відповідь.
kos

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*

де джерелом є файл, який ви хочете скопіювати, а цільовим є файл або папка, в яку ви хочете скопіювати Інші параметри можна знайти на веб- сайті https://softwarerecs.stackexchange.com/


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

Це зчитується з вашого ifфайлу і ofзаписується до файлу в 64MiB шматки і чекає, поки кожен фрагмент буде виписаний, перш ніж починати наступний. Утиліта, яку ви використовуєте, швидше за все, просто прочитає файл у пам'яті і потім надішле його на диск (і не говорить про те, скільки байтів одночасно це робить). Кешування запису може бути у самому донглі usb .... Отже, швидкість 60MiB в секунду, яку ви отримуєте, - це швидкість передачі через usb-з'єднання до внутрішнього кеша dongle. Але це мало ймовірно, якщо це не ключ USB3. USB2 не має достатньої пропускної здатності для обробки 60MiB в секунду.


0

Немає потреби у всьому вищесказаному. Просто відкрийте вікно терміналу, коли при передачі відображається 0% ліворуч і введіть syncзі сторінки man команда синхронізації промиває буфери файлової системи, але, звичайно, вона буде вимивати лише ті, на які ви маєте права. Якщо ви хочете їх змити всі, наберітьsudo sync

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.