Поиск по сайту:

Расширенное копирование — добавление индикатора выполнения к командам cp и mv в Linux

Инструменты GNU cp и GNU mv используются для копирования и перемещения файлов и каталогов в операционной системе GNU/Linux. Одна недостающая функция в этих двух утилитах — они не показывают индикатор выполнения. Если вы копируете большой файл или каталог, вы действительно не знаете, сколько времени займет процесс копирования или какой процент скопированных данных. Вы не увидите, какой файл копируется в данный момент или сколько файлов уже скопировано. Все, что вы увидите, это только мигающий курсор и светодиодный индикатор жесткого диска. Благодаря Advanced Copy, патчу для Gnu Coreutils, мы теперь можем добавлять индикатор выполнения в cp и mv команды в Linux и показывать индикатор выполнения при копировании и/или перемещении больших файлов и каталогов.

Что такое расширенное копирование?

Advanced Copy — это модификация программ GNU cp и GNU mv . Он добавляет индикатор выполнения и предоставляет некоторую информацию о том, что происходит во время копирования или перемещения файлов и папок. Не только индикатор выполнения, он также показывает скорость передачи данных, расчетное оставшееся время и имя файла, который в данный момент копируется. В конце вы увидите краткую сводку о том, сколько файлов было скопировано и сколько времени потребовалось для копирования файлов.

Установите патч «Advanced Copy», чтобы добавить индикатор выполнения к командам cp и mv в Linux

Команды cp и mv являются частью GNU coreutils. Поэтому вам необходимо загрузить последнюю версию GNU coreutils здесь.

wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz

Распакуйте скачанный архив командой:

tar xvJf coreutils-8.32.tar.xz

Эта команда распакует архив coreutils в папку с именем coreutils-8.32 в текущем каталоге. Перейдите к нему:

cd coreutils-8.32/

Загрузите патч Advanced Copy, используя следующую команду:

wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.8-8.32.patch

Наконец, примените патч, выполнив одну за другой следующие команды:

patch -p1 -i advcpmv-0.8-8.32.patch
./configure
make

Теперь в папке coreutils-8.32/src будут созданы два новых исправленных двоичных файла, а именно cp и mv. Просто скопируйте их в свой путь `, как показано ниже:

sudo cp src/cp /usr/local/bin/cp
sudo cp src/mv /usr/local/bin/mv

Вот и все. Команды cp и mv теперь имеют функцию индикатора выполнения.

Если вам нужен индикатор выполнения при копировании или перемещении файлов и каталогов, просто добавьте флаг -g, как показано ниже:

cp -g archlinux.iso mydownload/

Или используйте флаг --progress-bar:

cp --progress-bar archlinux.iso mydownload/

Пример вывода:

Copying at  25.7 MiB/s (about 0h 0m 1s remaining)
archlinux.iso                                                          568.1 MiB / 646.0 MiB
[=========================================================================>                  ] 87.9 %

Добавить индикатор выполнения к командам cp и mv в Linux

В конце процесса копирования вы увидите, сколько файлов было скопировано, сколько времени потребовалось для копирования файла(ов) и скорость передачи данных в секунду. Приятно, не так ли?

1 files (646.0 MiB) copied in 11.8 seconds ( 54.7 MiB/s).

Чтобы рекурсивно скопировать каталог и его подкаталоги, просто добавьте флаг -R:

cp -gR directory1/ directory2/

Аналогично, чтобы переместить файлы с помощью команды mv, выполните:

mv -g archlinux.iso mydownload/

Или используйте флаг --progress-bar:

mv --progress-bar archlinux.iso mydownload/

Чтобы переместить каталоги с помощью команды mv, используйте:

mv -g directory1/ directory2/

Вы также можете создавать псевдонимы, чтобы сохранить несколько нажатий клавиш. Для этого отредактируйте файл ~/.bashrc:

nano ~/.bashrc

Добавьте в конце следующие строки:

alias cp='/usr/local/bin/cp -gR'
alias mv='/usr/local/bin/mv -g'

Нажмите Ctrl+o и Ctl+x, чтобы сохранить и закрыть файл.

Теперь выполните следующую команду, чтобы изменения вступили в силу:

source ~/.bashrc

С этого момента вы можете просто использовать команды cp или mv без -g (или --progress-bar). ) флаг.

Обратите внимание, что оригинальные программы не перезаписываются. Вы по-прежнему можете вызывать их в любое время через /usr/bin/cp или /usr/bin/mv.

Добавление функциональности индикатора выполнения в команды cp и mv — хорошая идея, если вы часто копируете или перемещаете много больших файлов и каталогов. Теперь вы можете видеть, что именно происходит при копировании и перемещении файлов, вместо того, чтобы смотреть на экран.

Примечание:

Первоначальный автор отправил патч команде, которая поддерживает GNU CoreUtils. Они не будут объединять этот патч, потому что mv и cp являются полнофункциональными.

Ресурсы:

  • Репозиторий GitHub с расширенными копиями
  • Расширенное копирование в Интернет-архиве

Связанное чтение:

  • gcp - расширенная утилита копирования файлов для Linux
  • Как отслеживать движение данных по каналу с помощью команды «pv»

Статьи по данной тематике