Иначе, есть ли альтернативная утилита командной строки, которая может этого добиться?
источник
Иначе, есть ли альтернативная утилита командной строки, которая может этого добиться?
Пока cp
нет этой функциональности, вы можете использовать pv
для этого:
pv my_big_file > backup/my_big_file
Примечание: этот метод потеряет права доступа и владение файлом. Файлы, скопированные таким образом, будут иметь те же права доступа, что и если бы вы их создали сами и принадлежали вам.
В этом примере, в pv
основном, просто выводится файл в stdout *, который вы перенаправляете в файл с помощью >
оператора. Одновременно он печатает информацию о прогрессе в терминал, когда вы делаете это.
Вот как это выглядит:
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
138MB 0:00:01 [73.3MB/s] [=================================>] 100%
Возможно, вам потребуется установить pv (или набрать текст sudo apt-get install pv
) в вашей системе.
*: Технический бит
В unix-подобной системе есть три важных потока данных: stdout (стандартный вывод), stderr (стандартная ошибка) и stdin (стандартный ввод). У каждой программы есть все три, так сказать. >
Оператор перенаправления перенаправляет вывод программы в файл. Без аргументов, как вы видите выше, >
перенаправляет стандартный вывод программы в файл. cp
в основном не делает ничего более причудливого, чем
cat source > destination
(где cat
просто читает файл и печатает его на стандартный вывод). pv
точно так же, как cat, но если вы перенаправите его поток вывода куда-то еще, он вместо этого выведет информацию о прогрессе в stdout.
Посмотрите, man pv
чтобы узнать больше об этом.
Другой вариант, как DoR предлагает в этом ответе , - вместо этого использовать rsync:
$ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
621.22M 57% 283.86MB/s 0:00:01
Это сохранит права доступа / владение файлами при отображении прогресса.
pv
не обрабатывает разрешения так же, какcp
делает ... (на основе одного быстрого теста, который я пробовал:pv
не копировал бит выполнения через ...rsync
сделал.alias cp="rsync -avz"
cp устарел.pv
, вы можете подглядывать/proc/PID of cp/fd
и/proc/PID of cp/fdinfo
выяснять прогресс. (Это зависит от вас, чтобы определить скорость.) Я использую эту технику, чтобы посмотретьupdatedb
.-z
вероятно, следует использовать только для сетевых копий; сжатие и распаковка данных для локальной копии - это просто накладные расходы.rsync
убедитесь, что не добавляете трейлинг/
к исходному пути (или удаляете, если, например, bash complete помещает его туда автоматически). В противном случае вы получите результаты, отличные от использованияcp
(илиgcp
).Нет Смотрите здесь, почему. Хотя он делает больше, чем нужно,
rsync
имеет--progress
параметр.-a
Будет держать разрешение, и т.д., и-h
будет читаемым человеком.Вывод будет выглядеть примерно так:
источник
-r
флаг для рекурсии каталогов. Это может даже быть псевдоним как прямая замена для cp:alias cp="rsync -ah --progress"
--progress
заставляет мою голову крутиться 🙃, наблюдая за всем выводом на дисплей в терминале. Таким образом, те, кто приходят сюда из поиска по ключевым словам AOL,rsync -ah --info=progress2 [source] [destination]
представляют результаты немного более вменяемым образом, ИМХО.Если вы хотите увидеть , если ваши передачи файлов правильно , вы можете использовать
gcp
иgcp
, как сП , но по умолчанию дает вам прогресс бар , так что вы можете увидеть , что копируется. Как отмечает вики программы ,gcp
имеет несколько полезных функций, таких какОднако даже когда индикатор выполнения достиг 100% при использовании инструмента, вы должны подождать, пока не появится приглашение терминала, прежде чем безопасно извлекать носитель, чтобы вы могли убедиться, что процесс передачи успешно завершен.
gcp
используется для копирования файлов и имеет такие параметры, как--preserve
различные атрибуты и разрешения, которые могут быть сохранены, а также--recursive
возможность копирования целых каталогов. Дополнительную информацию о его параметрах можно найти, войдя в системуman gcp
или перейдя на веб-страницы Ubuntu . Учебник также доступен на этом сайте .Установить
gcp
из репозиториев с( Примечание : в Ubuntu 12.10 новой точкой автомонтирования является, например,
/media/user/usbdisk
)Вы можете скопировать файл на свой носитель, введя
и скопируйте папку на носитель с помощью
Пример вывода
gcp
с помощью индикатора выполнения:Конечно, вы можете указать несколько файлов или папок для копирования на ваш диск, и есть много других опций
man gcp
.источник
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
export DISPLAY=:0.0
перед запуском gcp. Если машина безголова, вам нужно запустить xsession в виртуальный фрейм-буфер или что-то в этом роде, в этот момент вам, вероятно, следует просто поискать другую программуgcp
довольно прилично, но требование DBUS / X странно. Я справился с этим по SSH с помощью пересылки ssh:ssh -X user@host
и это позволило мне запустить его.Я получаю удовольствие от использования cURL для этой цели. Страница man содержит список поддерживаемых протоколов «FILE», поэтому просто используйте его как любой другой протокол в URL:
Скорость, прогресс, оставшееся время и многое другое - все в привычном формате.
источник
pv
, что он не будет сохранять разрешения.Несмотря на то, что он не отображает скорость, при копировании нескольких файлов
-v
опция дляcp
команды предоставит вам информацию о ходе выполнения. напримеристочник
Ядро знает большую часть данных, таких как скорость, и часто также процент. Современные ядра предоставляют это через файловую систему / proc.
ShowSpeed из https://github.com/jnweiger/showspeed использует эту информацию. Он может прикрепляться к уже запущенным программам и периодически давать обновления:
источник
pkill -USR1 dd
чтобыdd
показать его состояние, другой вариант -watch -n 1 pkill -USR1 dd
периодически показывать его прогресс (каждую секунду).В
progress
репозиториях есть инструмент, который может проверять различные команды и отображать для них информацию о ходе выполнения.Установите его с помощью команды
Этот инструмент можно использовать так:
Выход:
источник
В то время как
pv
может работать с локальнымиcp
задачами, использованиеdd
withpv
может работать как с локальными (cp
), так и с удаленными (scp
) задачами.Пожалуйста, убедитесь, что
path/to/dest.mkv
выходыtouch path/to/dest.mkv
Это может показать прогресс, но если вы хотите процентную информацию,
Замените
100M
выше реальный размер вашего исходного файла.Здесь приходит удаленная часть
В то время как
scp
вряд ли можно показать текущий прогресс, использованиеdd
сpv
это кусок пирога.источник
dd
имеетstatus=progress
: askubuntu.com/a/824895/52975Существует новый инструмент cv, который может найти любой дескриптор, связанный с запущенной командой, и показать прогресс и скорость: https://github.com/Xfennec/cv
выводит статистику для всех запущенных операций cp, mv и т. д.
источник
watch cv -q
еще аккуратнееcp
копирует ли каталог рекурсивно или нет.Как многие говорили, CP не включает эту функциональность.
Просто, чтобы бросить мои 0,02 доллара, что я обычно делаю в тривиальных ситуациях копирования (т.е. нет
-R
):Посмотрите, насколько большой файл и помните
Начать копирование
Откройте другой терминал
Запустите
watch ls -lh DIR
каталог, в котором находится цельЭто может держать меня в курсе целевого размера файла, с минимальными хлопотами.
В качестве альтернативы для менее тривиальных ситуаций, например, рекурсивного копирования каталогов, вы можете использовать,
watch du -hs DIR
чтобы увидеть сводку размера DIR. Однако для вычислений du может потребоваться много времени и даже замедлить копирование, поэтому вы можете использовать-n INTERVAL
аргумент для просмотра, чтобы компромисс был приемлемым.Обновление: если вы используете подстановочные знаки с командой, используемой с watch du, например
watch du -hs backup/*
, не забудьте процитировать:в противном случае дикие карты будут расширены только один раз , когда часы начали так дю не будет смотреть на новые файлы / подкаталоги.
источник
dd status=progress
Опция добавлена в GNU Coreutils 8.24+ (Ubuntu 16.04):
Терминал показывает строку типа:
Смотрите также: Как вы контролируете прогресс дд?
источник
Если у вас есть rsync 3.1 или выше (
rsync --version
), вы можете копировать (cp -Rpn) при сохранении разрешений и владения, повторять каталоги, «нет клоббера» и отображать общий прогресс (а не только прогресс по файлу), скорость копирования и ( очень грубо) расчетное время осталось с:Обратите внимание, что sudo требуется только в том случае, если вы имеете дело с каталогами / файлами, которые вам не принадлежат. Кроме того, без
--no-i-r
, процент может быть сброшен до меньшего числа в некоторый момент во время копирования. Возможно, более поздние версии rsync по умолчанию будут no-ir с info = progress2, но в текущей версии 3.1.2 это не так.Я обнаружил, что процент и оставшееся время сильно переоцениваются при копировании в каталог, который уже содержит файлы (например, когда вы обычно используете cp -n "no clobber").
источник
Используйте скрипт оболочки:
Это будет выглядеть так:
Источник
источник
В зависимости от того, что вы хотите сделать, Midnight Commander (
mc
) может быть ответом. Я удивлен, что это еще не было упомянуто.Инструменты вроде
pv
илиrsync
хороши для отображения прогресса передачи одного огромного файла, но когда дело доходит до копирования целых каталогов / деревьев,mc
вычисляет размер и затем очень хорошо отображает прогресс. Плюс он доступен из коробки на большинстве систем.источник
Еще один вариант сохранения атрибутов может быть (если
source
это папка, в которой он будет созданdestination
)надеюсь, что это может быть полезно для кого-то. Чтобы рассчитать время передачи, это можно сделать, сделав
do -s source
заранее и передав его в качестве-s <size>
параметраpv
.источник
-f -
избыточноtar
По умолчанию для выводаc
и вводаx
используются stdout и stdin.Вы можете скопировать использовать любую программу. В то же время вы можете запустить
sudo iotop
и увидеть фактическую скорость чтения / записи диска, но без прогресса.источник
Проверьте исходный код для progress_bar в приведенном ниже хранилище git
https://github.com/Kiran-Bose/supreme
Кроме того, попробуйте пользовательский пакет Баш скрипт верховная
Загрузите файл deb и установите его в дистрибутив Debian или загрузите исходные файлы, измените их и используйте для других дистрибутивов
Обзор функциональности
(1) Открытые приложения ---- Firefox ---- Калькулятор ---- Настройки
(2) Управление файлами ---- Поиск ---- Навигация ---- Быстрый доступ
(3) Управление телефоном ---- перемещение / копирование с телефона ---- перемещение / копирование на телефон ---- синхронизация папок
(4) Управление USB ---- перемещение / копирование с USB ---- перемещение / копирование на USB
источник
pv знает, как смотреть дескрипторы файлов по pid, будь то cp или что-то еще
Из документации:
Пример:
источник