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

Копирование файлов в Linux с помощью Visual Progress


Хотите увидеть ход копирования файлов? Вот два способа сделать это в терминале Linux.

В отличие от графического режима, вы не видите статус копирования файла с помощью команды cp.

Если это огромный файл, терминал просто ждет завершения команды cp.

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

Вы можете использовать специальный инструмент CLI и наблюдать за ходом выполнения команды cp:

cp bigfile destination & progress -mp $!

Вы также можете использовать команду rsync для отображения прогресса при передаче файлов:

rsync -r --progress source_file destination_file

Сначала поговорим о первом способе.

Использование cp с прогрессом

🤚
Сначала вам необходимо установить progress. Используйте для этого менеджер пакетов вашего дистрибутива. В Ubuntu и Debian вы можете использовать прогресс установки sudo apt

Команда Progress — это средство просмотра прогресса Coreutils. Он ищет запущенные в данный момент команды coreutils, такие как cp, mv, dd, tar и т. д., и отображает процент скопированных данных.

Это поведение по умолчанию.

Например, я создал очень большой файл размером 20 ГБ и запустил команду cp, чтобы скопировать его в другое место. Если я ввожу прогресс (в другом терминале), он показывает ход выполнения всех активных команд Coreutil в тот самый момент.

Но это не очень полезно, если вы хотите отслеживать ход копирования файлов в терминале Linux.

Не волнуйтесь! У команды Progress есть несколько опций, и вы можете комбинировать некоторые из них, чтобы использовать ее так же, как вы комбинируете команду watch и free.

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

cp bigfile destination & progress -mp $!

Вот пример, показывающий ход выполнения команды cp для копирования файла размером 20 ГБ.

Здесь,

  • Опция -m предназначена для циклического мониторинга, пока отслеживаемый процесс работает.

  • Опция -p требует PID процесса, который вы хотите отслеживать. Поэтому вы используете специальную переменную $!, которая дает вам идентификатор процесса последней фоновой команды.

Да, вы использовали & для отправки команды cp в фоновом режиме, а затем получили идентификатор процесса с помощью $! и использовали его для мониторинга с помощью команда прогресс.

Как это супер круто!

Используйте rsync, чтобы показать ход копирования файлов

Универсальную команду rsync также можно использовать для копирования файлов с отображением прогресса с помощью флага --progress:

rsync -r --progress source_file destination_file

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

Заключение

Я предпочитаю использовать команду cp для локального копирования файлов и rsync для передачи файлов между удаленными системами.

Редко мне приходится видеть ход копирования в командной строке. Но приятно знать, что есть варианты, которые могут помочь с этой задачей.

Дайте мне знать, если у вас есть какие-либо вопросы или предложения.

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