- 🐧 Альтернативы команды cp на Linux для демонстрации прогресса и скорости
- Копировать на флешку очень медленно?
- 9 ответов
- Почему копирование на мой USB-накопитель происходит так медленно в Linux (и быстрее в Windows)?
- Причина 1. Кэширование файлов может сделать запись медленнее или быстрее
- Причина 2. Запись большого количества файлов, особенно маленьких, идет медленно
- Причина 3. Невозможно сравнить скорости записи на USB-накопитель и твердотельный накопитель
- скорость копирования — Mб/c или МБ/с
- Как показать прогресс и скорость передачи при копировании файлов с помощью cp?
🐧 Альтернативы команды cp на Linux для демонстрации прогресса и скорости
Вы когда-нибудь хотели увидеть скорость и прогресс при копировании файлов с помощью командной строки?
Для копирования файлов, папок и других данных вы, вероятно, использовали бы команду ditto или «cp», если вы знакомы с командной строкой операционных систем Linux или Unix.
Хотя команды ditto и «cp» полезны, иногда использование простой команды «cp» может занять много времени и утомить.
Параметр «-v» (подробный) в команде «cp» может предоставить вам дополнительную информацию о процессе копирования.
Однако недостатком является то, что эта команда не включает индикатор хода процесса копирования.
В Linux есть другие альтернативные команды, которые могут копировать файлы и папки, показывая ход и скорость процесса копирования. Ниже приведены альтернативные команды:
1. Команда rsync
«Rsync» – одна из лучших команд, которая помогает копировать файлы через терминал.
Объем данных, копируемых из удаленного места назначения, уменьшается при использовании этой утилиты.
Он также используется для создания резервных копий данных, копирования данных между компьютерами и зеркалирования.
Команда «rsync» имеет следующий синтаксис:
Использование опции «-av» с «rsync» – самая простая форма этой команды.
Как показано ниже, данная команда скопирует все файлы, находящиеся в «testfolder», в целевую папку с именем «Downloads»:
Источник
Копировать на флешку очень медленно?
Когда я копирую файлы на устройство USB, это занимает намного больше времени, чем в Windows (то же самое устройство USB, тот же порт), это быстрее, чем скорости USB 1.0 (1 МБ / с), но намного медленнее, чем скорости USB 2.0 (12 МБ / с). На копирование 1,8 ГБ у меня уходит более 10 минут (это должно быть 43
9 ответов
Почему копирование на мой USB-накопитель происходит так медленно в Linux (и быстрее в Windows)?
Причина 1. Кэширование файлов может сделать запись медленнее или быстрее
Проблема, которую я, похоже, вижу в графическом интерфейсе, заключается в том, что индикатор выполнения почти мгновенно достигает 90%, чуть медленнее завершает работу на 100% и затем зависает там в течение 10 минут.
Одна вещь, которую вы должны понять, это кеширование файлов. Linux (и Windows) будут использовать в противном случае «пустую» оперативную память для кэширования операций чтения / записи и ускорения их при последующих обращениях. Кэширование операций копирования для медленных устройств приводит к тому поведению, которое вы видите — «быстрое завершение» фактически записывает в кеш, а затем замедляется и останавливается, потому что фактическая сброс данных в кеше (синхронизация) на медленное устройство очень долго Если вы прервете в этот момент, данные будут повреждены (как вы заметили), поскольку синхронизация никогда не завершается.
Такое копирование в Windows может показаться более быстрым (включая заявленные скорости в МБ / с), поскольку иногда Windows не будет ожидать синхронизации и объявляет задание выполненным, как только данные записываются в кэш.
Причина 2. Запись большого количества файлов, особенно маленьких, идет медленно
Благодаря тому, как работают флэш-память и файловые системы, самая высокая пропускная способность (скорость) достигается при записи очень больших файлов. Запись большого количества маленьких файлов или даже смешанных данных, содержащих множество маленьких файлов, может сильно замедлить процесс. Это касается и жестких дисков, но в несколько меньшей степени.
Причина 3. Невозможно сравнить скорости записи на USB-накопитель и твердотельный накопитель
У меня есть супер талантливый 32 ГБ USB SSD в соседнем порту, и он работает с ожидаемой скоростью.
USB-флешка садового сорта обычно состоит из микросхем флэш-памяти, которые записываются последовательно (последовательно), и не имеет собственного кэша.
SSD, с другой стороны, содержит контроллер, который записывает данные на микросхемы флэш-памяти параллельно, увеличивая пропускную способность в 2 раза или более по сравнению с USB-накопителем.
- Если бы ваш SSD на 32 ГБ имел 4x 8 ГБ чипов, он все равно был бы в 4 раза быстрее, чем USB-накопитель при любой операции записи.
- Твердотельный накопитель также содержит кэш-память ОЗУ (например, жесткие диски), поэтому он может быстро сохранять входящие данные в кэш-памяти и сообщать ОС об этом, в то время как ему все еще приходится записывать эти данные во флэш-память.
Таким образом, с одним большим файлом ваши 32 ГБ ГБ с предполагаемой структурой 4x будут в 4 раза быстрее; со многими небольшими файлами это будет в 10 или более раз быстрее, поскольку он может разумно хранить их в своем кэше.
Подводя итог, можно сказать, что это причины, по которым копирование файлов на USB-накопители может выглядеть медленнее в Linux. Это на самом деле медленнее из-за проблемы с оборудованием / драйвером или что-то еще.
Источник
скорость копирования — Mб/c или МБ/с
в каких же единицах выводится скорость при копировании файлов — мегабитах/с или мегабайтах/с ? По моему правильно должно быть МБ/с или что более конкретно MByte/s
>менга
o_O.
есть «миби» есть «мега»
но «менга».
поторопился — очепятался конечно, счас поправлюсь
> По моему правильно должно быть МБ/с
Это ты сейчас про мегабайт или про мебибайт?
Я к тому, что количество комбинаций на самом деле оказывается несколько побольше двух.
я — про мегабайт
МБ — Мега Байт Мб — Мега бит бит — базовая единица измерения в СИ. (такие как кг/м/с), пишется с малой буквы. Байт — уже производная от неё.
В мегабайтах. В русской локализации ошибка. По-английски написано B/s.
В смысле, MB/s, KB/s, B/s.
мегабайты и только мегабайты. только в том виде в каком размер файлов
А может быть, в мебибайтах?
> мегабайты и только мегабайты. только в том виде в каком размер файлов
Поддерживаю. Должно быть соответствие единиц отображения размеров файлов единицам скорости их обработки. Как вариант, их неплохо было бы иметь возможность настроить, но только вместе.
а в коде МС на эту тему еще ничего не поменялось ?
Чем выводится? mc и wget пишут скорость в байтах в секунду (кило-, мега-). Причем — в правильных мегабайтах (в которых 1024 килобайта).
Сейчас, вроде бы, показывает правильно, в одних единицах (я о числовых значениях). И, возможно, давно так. Лишь бы не переломали.
Настроек на эту тему в mc не видел. Может берутся из локали? Тогда в самом mc их делать и не нужно.
> Причем — в правильных мегабайтах (в которых 1024 килобайта).
Эталонно поделил на ноль. В школу сходи.
Сам ты в школу сходи и почитай, что пишут в учебниках по информатике. Всегда было, есть и будет 1кБ == 1024Б, 1кг == 1000г.
Немя мало волнует, что пишут в говноучебниках недопредмета, который в школах имеет примерно тот же статус, что и ОБЖ, составленных неизвестно кем и неизвестно кем одобренных. Начать просвещаться можешь отсюда: http://www.bipm.org/en/si/si_brochure/chapter3/prefixes.html
Анекдот помнишь: у программиста в килограмме 1024 грамма, а у ламера в килобайте 1000 байт?
Аргументация анекдотами — это даже для ЛОРа перебор.
В кедах поступили умнее всего. По-умолчанию единицы указываются по стандарту, «МиБ», но нацменьшинства могут вручную поставить в настройках «МБ».
> Может берутся из локали? Тогда в самом mc их делать и не нужно.
Нет, не из локали.
F9 -> Настройки -> Настройки панелей. -> [ ] Вывод в единицах СИ
Привязывать к локали нет смысла, потому что в пределах одной локали есть поклонники как одной, так и второй системы отображения. Для уменьшения холиваров и ввели опцию 🙂
> пишут в учебниках по информатике. Всегда было, есть и будет 1кБ == 1024Б, 1кг == 1000г.
Меня как-то учили, что кило — это приставка системы СИ, а для 1024 есть приставка Киби.
Меня как-то учили, что кило — это приставка системы СИ, а для 1024 есть приставка Киби.
«Кило» означает 1000, как и положено для СИ. Но применительно к компьютерам «кило» означает 1024. Что здесь сложного?
нет. Кило для всех 10³. Можешь почитать этикетки винчестеров, памяти, договоров провайдеров. Это двойные стандарты, от незнания.
«Кило» как 10^3 в компьютерную индустрию вползло в конце 90-х. До этого абсолютно все знали, что килобайт — это 1024 байта. Эффективные маркетологи решили, что простым смертным голову ломать незачем с этими странными «некруглыми» (с точки зрения десятичной системы исчисления) цифрами.
Сейчас обстоит так: кто-то привык килобайты считать по 1024 (как ваш покорный слуга) и никогда не назовёт близкие сердцу 1024 байт «кибибайтом». Кто-то радеет за чистоту и порядок в умах и призывает называть согласно единиц СИ, а старые ламповые 1024 обзывают кибибайтом.
По-хорошему, если как бы отойти в сторонку и посмотреть на ситуацию со стороны, надо таки 1024 называть «киби», но я назову их так только через свой труп. Ибо привык и влёт понимаю, про что речь и насколько «по-честному» производители винтов объегоривают нас. Вот когда размер кластера будет не 512 или 4096 (а 500 или 4000) — вот тогда пусть и пишут свои «честные» гигабайты, подразумевая что они кратны 10^3, а не 2^10
Источник
Как показать прогресс и скорость передачи при копировании файлов с помощью cp?
Иначе, есть ли альтернативная утилита командной строки, которая может этого добиться?
Пока cp нет этой функциональности, вы можете использовать pv для этого:
Примечание: этот метод потеряет права доступа и владение файлом. Файлы, скопированные таким образом, будут иметь те же права доступа, что и если бы вы их создали сами и принадлежали вам.
В этом примере, в pv основном, просто выводится файл в stdout *, который вы перенаправляете в файл с помощью > оператора. Одновременно он печатает информацию о прогрессе в терминал, когда вы делаете это.
Вот как это выглядит:
Возможно, вам потребуется установить pv (или набрать текст sudo apt-get install pv ) в вашей системе.
*: Технический бит
В unix-подобной системе есть три важных потока данных: stdout (стандартный вывод), stderr (стандартная ошибка) и stdin (стандартный ввод). У каждой программы есть все три, так сказать. > Оператор перенаправления перенаправляет вывод программы в файл. Без аргументов, как вы видите выше, > перенаправляет стандартный вывод программы в файл. cp в основном не делает ничего более причудливого, чем
(где cat просто читает файл и печатает его на стандартный вывод). pv точно так же, как cat, но если вы перенаправите его поток вывода куда-то еще, он вместо этого выведет информацию о прогрессе в stdout.
Посмотрите, man pv чтобы узнать больше об этом.
Другой вариант, как DoR предлагает в этом ответе , — вместо этого использовать rsync:
Это сохранит права доступа / владение файлами при отображении прогресса.
Нет Смотрите здесь, почему. Хотя он делает больше, чем нужно, rsync имеет —progress параметр. -a Будет держать разрешение, и т.д., и -h будет читаемым человеком.
Вывод будет выглядеть примерно так:
Если вы хотите увидеть , если ваши передачи файлов правильно , вы можете использовать gcp и gcp , как сП , но по умолчанию дает вам прогресс бар , так что вы можете увидеть , что копируется. Как отмечает вики программы , gcp имеет несколько полезных функций, таких как
- индикация хода передачи
- непрерывное копирование при ошибке (перейти к следующему файлу)
- регистрация состояния копирования: gcp регистрирует все свои действия, чтобы можно было узнать, какие файлы были успешно скопированы
- изменение имени для обработки ограничений целевой файловой системы (например, удаление несовместимых символов «*» или «?» в FAT)
Однако даже когда индикатор выполнения достиг 100% при использовании инструмента, вы должны подождать, пока не появится приглашение терминала, прежде чем безопасно извлекать носитель, чтобы вы могли убедиться, что процесс передачи успешно завершен.
gcp используется для копирования файлов и имеет такие параметры, как —preserve различные атрибуты и разрешения, которые могут быть сохранены, а также —recursive возможность копирования целых каталогов. Дополнительную информацию о его параметрах можно найти, войдя в систему man gcp или перейдя на веб-страницы Ubuntu . Учебник также доступен на этом сайте .
Установить gcp из репозиториев с
( Примечание : в Ubuntu 12.10 новой точкой автомонтирования является, например, /media/user/usbdisk )
Вы можете скопировать файл на свой носитель, введя
и скопируйте папку на носитель с помощью
Пример вывода gcp с помощью индикатора выполнения:
Конечно, вы можете указать несколько файлов или папок для копирования на ваш диск, и есть много других опций man gcp .
Источник