Копирование файлов в 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 для передачи файлов между удаленными системами.
Редко мне приходится видеть ход копирования в командной строке. Но приятно знать, что есть варианты, которые могут помочь с этой задачей.
Дайте мне знать, если у вас есть какие-либо вопросы или предложения.