Я обычно использую *.txt
для общих текстовых файлов, out.build.NN
для вывода от сборки, *.lst
поскольку новая строка разграничила последовательность, это будет питаться в программу (как xargs
) и programname.log
для вывода из продолжительных программ. И я использую много чисел (a'la out.build.NN
) если я буду последовательно запускать ту же программу многократно. Но это - просто моя собственная конвенция.
Я обычно использую нижний регистр, так как это наиболее распространено в UNIX/Linux. Я использую дефисы, символы нижнего подчеркивания и периоды и избегаю "специальных символов" (как пространство, вкладка, возвратите символ). Размер имени файла зависит от того, что Вы пытаетесь получить. Если у Вас будет файл в течение долгого времени, может быть лучше иметь немного более длительное имя файла, чтобы помочь помнить, что это - цель.
rsync
назвали флаг progress2
который показывает полный процент:
rsync --info=progress2 source dest
Если Вы позволяете другие инструменты, чем cp
это, конечно, возможно. Для единственного файла можно использовать pv
. Это - мелкий инструмент, обеспечивающий хорошую статистику.
pv inputfile > outputfile
Если у Вас есть несколько файлов или каталогов, можно использовать tar:
tar c sourceDirectory | pv | tar x -C destinationDirectory
Можно перенести его в функцию оболочки. Это меньше для ввода, и Вы получаете семантику близко к тем cp
. Вот очень простое (и не защищенный от ошибки!) функция:
cpstat () {
tar c "$1" | pv | tar x -C "$2"
}
Обратите внимание что некоторые версии tar
не поддерживайте вышеупомянутый синтаксис (например, Солярис tar
) и необходимо использовать следующий вариант:
cpstat () {
tar cf - "$1" | pv | (cd "$2";tar xf -)
}
Вы называете его как это
cpstat sourceDirectory destinationDirectory
Можно улучшить его далее, так, чтобы pv
обеспечивает оценку остающегося времени.
Другое решение (как frostschutz упомянутый в комментарии) состоит в том, чтобы использовать rsync с --progress
опция:
rsync --progress -a sourceDirectory destinationDirectory
pv
не знает, сколько данных проникнет через канал. Можно указать это использование -s
. Например, сначала сделайте du -sh sourceDirectory
получить (грубую) идею и затем передать его pv
, как это: pv -s 100m
.
– Jan Fabry
11.05.2014, 18:25
vbuf
(debian, человечность), хороший бит быстрее, чем pv
, вероятно, из-за его виртуального кольцевого буфера
– Skaperen
04.10.2015, 13:56
vbuf
. Но поскольку кажется, что это находится в Debian, нестабильном в данный момент и поэтому часто не доступно на Серверах, которые обычно выполняют стабильный Debian.
– Marco
04.10.2015, 21:35
Не в стандартной версии cp
.
Вы могли фон CP и перечислять размер при ожидании cp
закончиться.
Я использую этот жемчуг для контроля роста единственного файла, но он работает внешне к CP (или независимо от того, что я делаю),
rsync
работает лучшее на показ прогресса во время прогресса копирования.
исключая:
rsync -avh --progress sourceDirectory destinationDirectory
заметил, что эта публикация была несколько старым. Но, как я сделал решение вопросу под рукой, я думал, что выложу свое решение.
Сценарий: у нас очень большая структура каталога, которую мы хотим скопировать, поэтому мы выпускаем команду cp -r sourcedir destdir в одно окно терминала.
Откройте другое окно терминала или подтолкните процесс на фоновом режиме (Ctrl + Z, BG
, а затем давайте сделаем индикатор прогресса в качестве способом гетто:
мы сначала получим общий размер Из структуры каталогов, которую мы хотим скопировать, вы делаете это с:
DU -SH / PATH / SOUSHCEDIRECTORY /
Преобразовать результат к гигабатам (G), затем замените N для результата, который вы попали в вариабельные источники. Отказ После того, как вы вставили источники и DestDir (каталог назначения), запустите команду ниже.
while true; do sourcesize=n destdir=/path/destinationdirectory/ copyprogress="$(export | du -sh $destdir | awk '{print $1}' | sed 's/[^0-9.]*//g' )" ; echo "scale=3 ; $copyprogress / $sourcesize * 100" | bc | xargs echo -n ; echo % completed ; sleep 10 ; done
Это будет распечатать прогресс каждые 10 секунд с такими сообщениями, такими как:
0.100% completed
0.200% completed
0.300% completed
... etc
Я знаю, что это решение не устраивало скорость копирования, но можно было бы добавить, что, расширяя команды выше, возможно, делая Это в скрипт Bash, так что было бы легче читать. Например, проверяя, сколько данных копируется PR. N Устройство, скорость должна быть тривиальной для расчета и отображения.
Как объяснено в других ответах, CP не обеспечивает ту функциональность. Однако прогресс (раньше названная условная цена) является мелким инструментом, который очень полезен в обеспечении этой недостающей возможности.
Этот инструмент может быть описан как Крошечный Грязный Linux Только* команда C, которая ищет coreutils основные команды (CP, mv, dd, tar, gzip/gunzip, кошка...) в настоящее время работа вашей системы и отображает процент скопированных данных.
я использовал его в течение прошлых нескольких месяцев, и это твердо.
Для улучшения ответа Марко, сегодня я написал эту версию CPStat
, поэтому вы можете скопировать много каталогов и использовать последний параметр в качестве пути назначения. Обратите внимание, что если вы используете относительный глубокий путь в качестве источника, вы можете благодарить TAR
, автоматически создавать одно и то же зависимое дерево каталогов.
function cpstat () {
tar -cf - "${@: 1: $#-1}" |
pv -s "$( du -cs -BK --apparent-size "${@: 1: $#-1}" |
tail -n 1 |
cut -d "$(echo -e "\t")" -f 1)" |
( cd "${@: $#}"; tar -xf - )
;}
Это утилита Linux, которая ищет базовые команды coreutils (cp, mv, dd, tar, gzip/gunzip, cat и т.д.), выполняемые в настоящее время на Вашей системе, и отображает процент скопированных данных:
Другое простое решение - просто посмотреть выходную папку следующим образом:
Linux/Cygwin:
watch -n 10 --differences du -sk --apparent-size
FreeBSD:
gnu-watch -n 10 --differences du -sk
Эта удобная утилита запустит du
и выделит различия.
Другим потенциальным решением может быть написание простого скрипта, который будет циклически вызывать du
и выдавать приблизительную оценку пропускной способности.
Я нашел это для использования, работает отлично:
sudo watch lsof -p`pgrep -x cp`
из комментария Mike на вопрос как проверить прогресс выполнения cp
Использование такого инструмента, как mc
(полуночный командир), может быть хорошей альтернативой другим ответам.
Это простой файловый менеджер, показывающий прогресс копирования / перемещения.
Можно ли увидеть скорость копирования и процент копирования?
Да, можно отобразить ход выполнения команды cp
на терминале.
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
, откройте другой терминал, поэтому просто попробуйте эту команду:
# progress -m
См. Вывод:
[30904] cp /home/user/file.mp4
2.3% (200.9 MiB / 8.4 GiB) 3.6 MiB/s remaining 0:38:58
cp
) Или загрузите GNU coreutils
и исправьте его.
cd /tmp
wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz
tar -xvJf coreutils-8.21.tar.xz
cd coreutils-8.21
wget https://raw.githubusercontent.com/atdt/advcpmv/master/advcpmv-0.5-8.21.patch
patch -p1 -i advcpmv-0.5-8.21.patch
Выполнить:
export FORCE_UNSAFE_CONFIGURE=1
./configure
make
Скопируйте два файла cp
и mv
, расположенные в coreutils-8.21 / src /
, в / usr / local / bin
:
cp src/cp /usr/local/bin/cp
cp src/mv /usr/local/bin/mv
Или скопируйте его с помощью файлового менеджера от имени пользователя root
Добавьте следующие строки в свой ~ / .bashrc
:
alias cp='cp -gR'
alias mv='mv -g'
Выйти и войти в систему
Индикатор выполнения может отображаться без –g
или –progress-bar
, как рекомендовано Автором
См. вывод:
0 files copied so far... 194.4 MiB / 8.4 GiB
[||--------------------------------------------------------------------------------] 2.3 %
Copying at 3.3 MiB/s (about 0h 5m 47s remaining)
/home/user/file.mp4 194.4 MiB / 446.1 MiB
[||||||||||||||||||||||||||||||||||||----------------------------------------------] 43.6 %
dd status=progress
Опция, добавленная в GNU Coreutils 8.24+ (Ubuntu 16.04):
dd if=src of=dst status=progress
Stdout - это периодически обновляемая строка типа:
462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s
VCP – copy files in a curses interface (Show the Progress Bar in Linux).
DESCRIPTION: vcp copies files and directories in a curses interface, with text only output available. its options and output are similar to BSD's cp while adding some new features.
It provides information on:
- files copied and left to copy
- data written and total data size
- data being written every second
- two status bars, one showing current file status, the other total status (except with 1 file, both show current), and percentage
when output is sent to the console:
- a status bar
- size copied and speed
Справочная страница 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 установите:
sudo apt-get install libncurses-dev
или
sudo apt-get install libncurses5-dev
make && make install
man vcp
В BSD cp
, если вы используете ctrl + t , вы получите обновление в процентах, если вы должны использоватьcp
На определенных устройствах, таких как VMWare ESXi, где вы либо не контролируете то, что установлено, либо не имеете прав на установку, вы можете увидеть процент на файл и скорость, используя scp на локальном хосте вместо обычногоcp
:
scp -rv item-to-copy your-user@127.0.0.1:/path/to/destination
--info=progress2
наконец включенный вversion 3.1.0 protocol version 31
. Возможно, Вы могли отредактировать свой ответ, yzT. – Sopalajo de Arrierez 10.05.2015, 00:14--info=progress2
это rsync сверкает быстро! 200 МБ/с, в то время как Windows goesn't далее, чем 90 МБ/с! – ReneFroger 28.06.2016, 21:12--progress
. версия 3.0.9 – adrianTNT 08.03.2017, 19:11