Linux move with progress

Как посмотреть прогресс dd Linux

Если вы пользователь Linux то часто используете команды, которые выполняются некоторое время, например, команда копирования файлов cp, распаковка архивов с помощью tar, перемещение файлов в mv, конвертирование и копирование файлов с помощью dd. Прогресс выполнения команды нужен чтобы приблизительно оценить время до завершения выполнения задачи, или просто чтобы убедиться что все работает и утилита не зависла.

Однако команда dd, как известно, при копировании файла не отображает прогресс бар для пользователя, поэтому непонятно сколько процентов файлов уже скопировано.

В этой статье мы рассмотрим как посмотреть прогресс dd в linux, этот метод подходит не только для dd, но и для всех подобных ей утилит.

Но есть очень простое решение, и даже два. Первое, это утилита Coreutils Viewer или progress (раньше известная как cv). Программа написана на С и ищет выполняемые в данный момент в системе программы такие как: mv, cp, dd, tar, unzip и т д и отображает процент скопированных данных. Второе, более интересное. Мы можем направить данные через туннель pv, который будет считать с какой скоростью они передаются и сколько еще осталось. Рассмотрим сначала первый способ.

Прогресс команды Linux с помощью progress

Установка progress

Эта утилита не поставляется с системой по умолчанию. Но установить ее очень просто, программа есть в официальных репозиториях большинства дистрибутивов. Например, в Ubuntu:

sudo apt install progress

В других дистрибутивах она может быть более старой версии и назваться cv. Также вы можете собрать программу из исходников. Единственная зависимость — библиотека ncurces. В Ubuntu 16.04 ее можно установить такой командой:

sudo apt-get install libncurses-dev

В прежних версиях Ubuntu:

sudo apt-get install ncurses-dev

В Fedora и CentOS:

sudo yum install ncurses-devel

Когда удовлетворите зависимости утилиты, выполните следующую команду для загрузки исходников с GitHub:

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

Измените текущий каталог с помощью cd:

Запустите сборку и установку:

sudo make install

Программа готова к работе.

Смотрим прогресс команды с помощью progress

После завершения установки запустите progress следующей командой:

В результате получится что-то вроде:

Теперь давайте запустим копирование видео из папки на рабочий стол и посмотрим что произойдет:

Команда progress покажет прогресс копирования cp:

Выполним progress еще раз:

Как видите, утилита показывает информацию о прогрессе копирования файла, процент скопированных данных, количество скопированных данных и общий размер файла. Это очень полезно при копировании больших файлов, например, при копировании фильмов или образов дисков. То же самое будет если запустить dd, mv, tar, zip или другую подобную утилиту.

В утилиты есть много полезных опций. Опция -w заставляет программу показывать время, оставшееся до окончания операции:

Если вы хотите видеть упрощенный вывод без дополнительных сообщений используйте опцию -q. И наоборот для показа всех предупреждений и ошибок воспользуйтесь -d. Например, лучше использовать cv со следующими опциями:

Вы можете отслеживать состояние процесса пока он запущен:

Если вы хотите постоянно наблюдать за прогрессом всех команд используйте опцию -М:

Или ее эквивалент:

Очень популярный вот такой вариант:

watch progress -w

Также можно посмотреть прогресс linux только нужной программы, например, прогресс загрузки файла в firefox:

Читайте также:  Universaltermsrvpatch x64 exe windows 10

watch progress -wc firefox

Или проверить активность web-сервера:

progress -c httpd

Способ второй — создание туннеля

То, что мы рассмотрели выше — не единственный способ посмотреть прогресс команды linux. Еще есть утилита pv. Она намного проще и выполняет только одну задачу — считает все данные проходящие через нее. Может читать поток из файла или стандартного ввода.

Поэтому ее можно использовать чтобы посмотреть прогресс выполнения команды в Linux. Например, создадим такой туннель для dd:

dd if=/dev/zero | pv | dd of=/file

Здесь мы выдаем содержимое нужного нам файла на стандартный вывод, передаем утилите pv, а затем она отдает его другой утилите, которая уже выполняет запись в файл. Для cp такое сделать не получиться, но мы можем поступить немного по-другому:

pv /ваш_файл | cat > новый_файл

Готово, здесь мы тоже получим прогресс команды копирования.

Выводы

Чтобы использовать всю мощь Linux пользователям часто приходится работать в командной строке. Чаще всего мы смотрим содержимое, копируем файлы, распаковываем архивы. В этой инструкции мы рассмотрели утилиту process, которую можно использовать для просмотра прогресса dd и других системных команд.

Мне всегда было интересно посмотреть прогресс копирования cp для больших файлов. Честно говоря, я часто имею дело с большими файлами при просмотре фильмов на своем ноутбуке.

Источник

Команда mv

Описание команды mv

Команда mv используется для перемещения одного или нескольких файлов (или директорий) в другую директорию, а также для переименования файлов и директорий.

Синтаксис

исходные_файлы — это то, что мы будем перемещать или переименовывать. То есть это либо один файл, либо несколько файлов, либо директория, либо несколько директорий.

куда — это название директории, в которую мы перемещаем исходные файлы или директории. Или же это новое название файла или директории, если выполняется переименование. То есть это либо директория, либо новое название файла или директории.

Команда mv может:

  • Переместить один или несколько файлов в другую директорию.
  • Переместить одну или несколько директорий в другую директорию.
  • Переименовать файл.
  • Переименовать директорию.

Опции

  • none или off — не делать резервных копий, даже если включена опция —backup
  • numbered или t — имя резервной копии получит числовой индекс (пример: myfile.txt

).

  • existing или nil — если в директории уже есть резервные копии с числовыми индексами, то использовать числовые индексы для новых резервных копий, во всех остальных случаях использовать метод simple .
  • simple или never — делать обычные резервные копии (пример: myfile.txt

    Примеры использования команды mv

    Рассмотрим несколько примеров использования команды mv в Linux.

    Рекомендуется всегда использовать опцию -v , чтобы получать информацию о том, что именно команда mv делает с файлами.

    Также крайне рекомендуется использовать опцию -i , чтобы выдавался запрос на перезапись существующих файлов. В примерах ниже мы эти опции опускаем.

    Переместить файл

    Переместим файл myfile1.txt в директорию mydir/ (директория должна существовать). Для этого выполняем команду без каких-либо аргументов:

    Переименовать файл

    Переименуем файл myfile1.txt в myfile2.txt :

    Переименовать директорию

    Переименуем директорию mydir1 в mydir2 . Выполняется точно также, как и переименование файлов.

    Создавать резервные копии существующих файлов

    Предположим, что нам нужно переименовать файл myfile1.txt в myfile2.txt , но файл myfile2.txt уже существует. Можно воспользоваться опцией -b , чтобы создать резервную копию существующего файла:

    В результате сначала существующий файл myfile2.txt будет переименован в myfile2.txt

    , то есть будет создана его резервная копия, и только потом файл myfile1.txt будет переименован в myfile2.txt .

    Вместо значка тильда

    можно добавлять к именам резервных копий произвольный суффикс. Например, добавим суффикс .bak . Для этого воспользуемся опцией -S

    Переместить несколько файлов

    Рассмотрим примеры использования команды mv для перемещения нескольких файлов в другую директорию.

    Переместим сразу три файла в директорию mydir/

    Переместим все файлы из текущей директории в директорию mydir/

    Переместим все файлы с расширением .jpg в директорию mydir/

    Переместить только те файлы, которых нет в директории назначения

    Предположим, что нам нужно переместить все файлы из одной директории в другую, но если в директории назначения уже есть файлы с такими же именами, то их не перемещать. Для этого используем опцию -n

    Переместить только те файлы, которые новее

    Предположим, что нам нужно переместить все файлы из одной директории в другую, но если в другой директории уже есть файлы с такими же именами, то заменять существующие файлы только если исходный файл новее (по дате). Для этого используем опцию -u

    Если в имени файла есть пробелы

    Если в имени файла есть пробелы, то имя файла нужно заключить в кавычки или перед каждым пробелом добавлять символ \

    Предположим, что нам нужно переименовать файл в имени которого содержится пробел — My file1.txt . Для этого можно заключить имя файла в кавычки (для файла назначения аналогично).

    Или использовать символ косой черты перед пробелом.

    Источник

    How to Show Progress Bar for Linux Commands

    Many Linux commands like dd, cp, rsync, and mv are progressive but have no progress bars showing as they run. There is no built-in way to check the progress of ongoing operations except few commands that recently had commits ( dd command has status=progress from GNU coreutils version 8.24).

    In this article, we’ll look at certain Linux tools and options which allow you to monitor the progress of data being transferred.

    1) PV Command

    Pv is a command-line based tool that allows you to monitor the progress of data being transferred using pipe. The pv command gives you a visual view of the following information.

    • Time elapsed
    • Percentage completed using a progress bar.
    • Current throughput rate.
    • Total data transferred.
    • ETA (Estimated Time).

    Installing Pv

    You can install pv on your distro using the following commands

    Fedora, CentOS and RHEL

    Debian, Ubuntu and Linux Mint

    Gentoo Linux

    FreeBSD Linux

    Pv Usage with Examples

    The general syntax for pv is pv [Options] [File]

    The -p option turns the progress bar on, -t option activates the total elapsed time pv has been running for, the -e option provides the ETA to completion based on the transfer rate and data size, the -r option shows the current rate of the transfer and finally the -b option shows the total amount of data transferred so far.

    Monitor the progress of creating an archive using gzip

    In this example, we use pv with gzip in the following example:

    In this example, we provide the options and the file in question and then pipe it to gzip with a redirection to the file we want to archive.

    Monitor the progress when copying a file with pv

    Using pv without any options will automatically run with the default p , t , e , r and b options.

    Using pv and dialog commands to create a dialog progress bar

    2) Progress

    Progress, formerly known as cv, is a tool that displays the percentage of copied data from coreutils basic commands like p, mv, dd, tar, gzip/gunzip, cat, etc. It can also provide additional information such as ETA and throughout.

    Installing Progress

    You can install progress on any distro with these steps.

    Progress Usage with Examples

    The general syntax for progress is watch progress -q . This lets you monitor all current and upcoming transfers in a terminal window. Now, any coreutils utility you invoke like cp and mv will be detected and indicated in the progress window.

    Monitoring Downloads

    The -c option can be used to monitor a command name like google-chrome or firefox

    3) Rsync

    Rsync is used to sync files locally and remotely. Rsync can be used to copy files and also has the ability to show the progress without the use on an external application.

    Installing Rsync

    Fedora, CentOS and RHEL

    Debian, Ubuntu and Linux Mint

    Rsync Usage with Examples

    You need to use rsync with the -P or —progress option to show progress during file transfer. The basic syntax for rsync is

    To copy a zip file from the desktop to newfolder, enter:

    To copy files from a /example/*.tar to a remote server called dummy@linoxide.com, enter:

    4) Advanced Copy

    Advanced Copy, or advcpmv, is a mod for the cp and mv utilities which adds a progress bar and provides some information on ongoing transferred.

    Installing Advanced Copy

    You can install progress on any distro with these steps.

    You might get this error, while running “./configure” command.

    Run the following command to fix that error and rerun the ./configure command again:

    Replace the original cp and mv commands with these two new commands

    Advanced Copy Usage with Examples

    The cp and mv commands stay same, the only change is adding the -g or -progress-bar option to the cp command. The -R option is used to copy directories recursively. Here is an example of the command:

    We’ve seen a couple of tools and how they can be used to monitor progress on commands. The pv command is easy to set up and can monitor any command line activity. The progress utility is limited to only coreutils commands. Rsync has the inbuilt ability to monitor file transfers and advanced copy is a patch applied to only the cp and mv commands to show progress. Based on your trial, you can decide which of these is best for you.

    Источник

    mv, cp, dd etc с прогресс-баром

    Какой костыль/аналог сейчас модно использовать чтобы при выполнении mv, cp, dd etc для файлов и каталогов видеть прогресс-бар с информацией о скопированных и оставшихся до конца байтах/процентах/секундах. Как у wget, например. В первую очередь интересуют решения для Debian. Надстройки над стандартными утилитами в виде алиасов/скриптов приветствуются.

    dd сам умеет показывать прогресс (запусти «watch -n1 killall -s USR1 dd» на соседней консоли). Для всяких пайпов есть pv. Для mv и cp, насколько я знаю, пока ещё ничего нормального не сделали.

    Кстати вместо mv и cp можно просто использовать mc. Там есть прогрессбары.

    Хотелось бы какое-то универсальное решение, чтобы можно было сделать алиас и вводить стандартные команды с привычными ключами вроде cp -r или mv -iv.

    Ишь чего захотел.. mc юзай, если так сильно прогрессбары нужны.

    Вот, это уже интересно, т.к. есть поддержка стандартных ключей dd. Нужно будет потыкать. Если бы ещё что-то такое для mv и cp…

    21 век же, ну. Смотришь и думаешь на каком оно сейчас этапе и когда же оно закончит.

    О чем можно говорить, если даже линупсовый пинг не умеет показывать, что пакет не дошел, базовая функциональность пинга в винде! — все молчком, молчком..

    Вроде нашёл что-то годное из похожего треда 2005 года: Command Line Progress Bar. Попробую потыкать на досуге.

    Ты там террабайты копируешь, что ли? Если так важно, сделай du -sh /destination_dir

    Терабайты нет, но десятки или пару сотен гигабайт иногда приходится. Странно что такой очевидный функционал, вызываемый с помощью какого-то ключика ещё не реализовали.

    О чем можно говорить, если даже линупсовый пинг не умеет показывать, что пакет не дошел, базовая функциональность пинга в винде! — все молчком, молчком..

    Там хоть по контексту понятно, если пишет — пинг идёт, если молчит — нет. Тут странно то, что такой функционал уже сто лет реализован в том же wget, казалось бы бери оттуда код и впиливай, опенсорц же! Ан нет.

    Там хоть по контексту понятно, если пишет — пинг идёт, если молчит — нет.

    Да не фига не понятно. У тебя 10 пакетов пришло, один потерялся, и чтобы это понять надо вглядываться в эти цифири, правильный там порядок или что пропущено. Виндовый прямо пишет — пакет не пришел, и это сразу видно. Я охренел, когда узнал, что в линуксовом пинге нельзя так сделать. Да-да, есть какие-то левые костыли и мокрописьки..

    И вместо того, чтобы просто скопировать твои гигобайты он сначала размер их будет считать. Зачем?

    Можно ссылку? Главная сайта, на котором они видимо когда-то были размещены, отдаёт лишь ZWICKE.ORG .

    mv, cp для файлов и каталогов видеть прогресс-бар с информацией о скопированных и оставшихся до конца байтах/процентах/секундах

    гугели патчи для корутилс. хз. что там для новых версий но.. погугели.

    Источник

    Читайте также:  Установка windows с флешки disk read error occurred
  • Оцените статью