У меня проблемы при копировании больших файлов с помощью nautilus (он застревает). Мне нужно скопировать, используя cp
. Я хотел бы знать, есть ли какие-либо параметры, которые показывают скопированный%, а также скорость передачи.
251
rsync
вместоcp
. У него есть--progress
опция.Midnight Commander
также хорошо работает, и имеет симпатичный текстовый интерфейс с индикаторами выполнения, но может быть не установлен. Попробуйтеmc
в командной строке. Кроме того, очевидно, это не такcp
.rsync
с--progress
только что заставило меня понять, что происходит. Он застревает, когда достигает 100%, а затем длится пару минут в итоге. Я думаю, что то же самое, что происходит с наутилусом. В любом случае, это уже другой вопрос, поэтому лучший ответ на этот вопрос -rsync --progress
он показывает размер,%, скорость и прошедшее время.-W
опцией? на всех моих хостахrsync
почти так же быстро, какcp
... так близко, что я регулярно используюrsync
вместоcp
.Ответы:
rsync
имеет флаг,progress2
который показывает общий процент:источник
--info=progress2
наконец включенversion 3.1.0 protocol version 31
. Может быть, вы могли бы отредактировать свой ответ, YZT.--info=progress2
что rsync пылает быстро! 200 МБ / с, в то время как Windows идет не дальше 90 МБ / с!--progress
. rsync версия 3.0.9Если вы разрешите другие инструменты, чем
cp
это возможно. Для одного файла вы можете использоватьpv
. Это небольшой инструмент, предоставляющий хорошую статистику.Если у вас есть несколько файлов или каталогов, вы можете использовать tar:
Вы можете обернуть его в функцию оболочки. Меньше печатать, и вы получаете семантику, близкую к семантике
cp
. Вот очень простая (и не защищенная от ошибок!) Функция:Обратите внимание, что некоторые версии
tar
не поддерживают вышеупомянутый синтаксис (например, Solaristar
), и вы должны использовать следующий вариант:Вы называете это так
Вы можете улучшить его, чтобы
pv
получить оценку оставшегося времени.Другое решение (как упомянуто в комментарии о frostschutz) - использовать rsync с
--progress
опцией:источник
pv
что не знает, сколько данных поступит через канал. Вы можете указать это, используя-s
. Например , сначала сделать ,du -sh sourceDirectory
чтобы получить (грубый) идею, а затем передать егоpv
, как это:pv -s 100m
.vbuf
(Debian, Ubuntu) работает немного быстрее, чемpv
, вероятно, из-за своего виртуального кольцевого буфераvbuf
. Но, как кажется, в настоящий момент он нестабилен в Debian и поэтому часто недоступен на серверах, на которых обычно работает стабильная версия Debian.rsync
работает лучше всего для отображения прогресса во время процесса копирования.например:
источник
Как объяснено в других ответах, cp не предоставляет такую функциональность. Тем не менее, progress (ранее назывался cv) - небольшой инструмент, который очень полезен для предоставления этой недостающей функции.
Я использую его в течение последних нескольких месяцев, и это хорошо.
источник
Да, можно отображать ход выполнения команды
cp
на терминале.Способ № 1: (использовать
progress
)Откройте новый терминал и введите
progress
его, чтобы отобразить ход выполненияcp
команды и других команд, таких как:cp, mv, dd, tar, cat, rsync, grep, fgrep, egrep, cut, sort, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, adb, gzip, gunzip, bzip2, bunzip2, xz, unxz, lzma, unlzma, 7z, zcat, bzcat, lzcat, split, gpg
Если вы не установили
progress
, вы можете установить его из репозитория, например , вCentOS
этой команде:yum -y install progress
.Затем, после запуска
cp
команды в фоновом режиме или послеcp
обычного запуска , откройте другой терминал, поэтому просто попробуйте эту команду:Смотрите вывод:
Способ № 2: (используйте патч
cp
)Или загрузите GNU
coreutils
и исправьте его.Бегать:
Скопируйте два файла
cp
иmv
loacated подcoreutils-8.21/src/
к/usr/local/bin
:Или скопируйте его, используя ваш файловый менеджер от имени root
Добавьте следующие строки в ваш
~/.bashrc
:Выйти и Войти
Индикатор выполнения может отображаться без
–g
или–progress-bar
в соответствии с рекомендациями автораСмотрите вывод:
Источник: linuxhelp
источник
cp
патча: web.archive.org/web/20131115171331/http://beatex.org/web/…progress
командеЗаметил, что это сообщение было несколько старым. Но когда я решил проблему, я решил опубликовать свое решение.
Сценарий: у нас очень большая структура каталогов, которую мы хотим скопировать, поэтому мы запускаем команду cp -R sourcedir destdir в одном окне терминала.
Откройте другое окно терминала или перенесите процесс в фоновый режим
(Ctrl+Z,bg<CR>)
, а затем сделаем индикатор прогресса в гетто:Сначала мы получаем общий размер структуры каталогов, которую мы хотим скопировать, вы делаете это с помощью:
du -sh /path/sourcedirectory/
Преобразуйте результат в гигабайты (G), затем замените n на результат, полученный в переменной sourcesize. После того, как вы вставили sourceize и destdir (каталог назначения), выполните команду ниже.
Это будет печатать прогресс каждые 10 секунд с сообщениями, такими как:
Я знаю, что это решение не учитывает скорость копирования, но можно было бы добавить это, расширив приведенные выше команды, возможно превратив его в сценарий bash, чтобы его было легче читать. Например, проверяя, сколько данных копируется pr. В единицу времени скорость должна быть тривиальной для расчета и отображения.
источник
Чтобы улучшить ответ Марко, сегодня я написал эту версию
cpstat
, так что вы можете скопировать много каталогов и использовать последний параметр в качестве пути назначения. Обратите внимание, что если вы используете относительный глубокий путь в качестве источника, вы можете, благодаря этомуtar
, автоматически создать то же самое зависимое дерево каталогов.источник
Не в стандартной версии
cp
.Вы можете создать фоновый рисунок и указать размер в ожидании
cp
завершения.Я использую этот Perl для мониторинга роста одного файла, но он работает внешне по отношению к cp (или что бы я ни делал)
источник
Я нашел это для использования, работал отлично:
из комментария Майка на вопрос, как проверить ход выполнения cp
источник
Даже если
rsync
вы получите некоторую статистику прогресса, если вы хотите использовать индикатор выполнения, вы должны использоватьpv
.Вы можете использовать
cpv
оболочкуpv
с более простым синтаксисом, более похожим на тот,cp
который вы можете использовать для рекурсивного копирования каталоговВы можете получить это здесь
источник
pv
. Хорошая находка!Использование такого инструмента, как
mc
(полночный командир), может быть хорошей альтернативой другим ответам.Это простой файловый менеджер, который показывает вам процесс копирования / перемещения.
источник
dd status=progress
Опция добавлена в GNU Coreutils 8.24+ (Ubuntu 16.04):
Stdout - это периодически обновляемая строка, например:
Смотрите также: Как вы контролируете прогресс дд? | Спросите Ubuntu
источник
Другое простое решение - просто просмотреть выходную папку следующим образом:
Linux / Cygwin:
watch -n 10 --differences du -sk --apparent-size <WATCHED_FOLDER>
FreeBSD:
gnu-watch -n 10 --differences du -sk <WATCHED_FOLDER>
Эта удобная утилита будет работать
du
и выделять различия.Еще одно потенциальное решение - написать простой сценарий, который зацикливает, вызывает
du
и выдает приблизительную оценку пропускной способности.источник
Этот инструмент представляет собой команду утилиты Linux, которая ищет основные команды coreutils (cp, mv, dd, tar, gzip / gunzip, cat и т. Д.), Которые в настоящее время выполняются в вашей системе, и отображает процент скопированных данных:
https://github.com/Xfennec/cv
источник
У меня просто был случай, когда cp был более или менее заблокирован из-за ошибки FUSE в принимающей файловой системе.
Если вы не можете просто переключиться с cp (т. Е. Потому что --sparse = всегда) и хотите что-то действительно надежное для прогресса, перейдите через / proc.
источник
Страница руководства VCP: https://linux.die.net/man/1/vcp
Загрузите vcp-2.2.tar.gz с:
http://distfiles.gentoo.org/distfiles/vcp-2.2.tar.gz
Зависимость: curses.h (libncurses-dev).
В Ubuntu установите:
или же
УСТАНОВИТЬ VCP:
Руководство по эксплуатации:
источник