Rsync означает «удаленная синхронизация», это бесплатная утилита для синхронизации файлов из командной строки с открытым исходным кодом, используемая для передачи файлов и каталогов в локальные и удаленные места назначения. Это эффективная утилита, поскольку она копирует только изменения из источника. Следовательно, она сводит к минимуму объем данных, копируемых в удаленное место назначения. Используется для резервного копирования данных, зеркального отображения и передачи данных из одного места в другое.
Обычно, когда вы копируете файл с помощью rsync, она не показывает индикатор выполнения или показатель скорости или размера передаваемых данных. Во время передачи больших файлов иногда может потребоваться просмотреть ход передачи и размер переданных данных.
В этой быстрой подсказке мы собираемся показать, как измерить и показать прогресс rsync при копировании файлов в Linux. Мы также покажем вам, как просмотреть статистику передачи файлов.
Это синтаксис основной команды rsync:
$ rsync options SOURCE DESTINATION
Например, чтобы скопировать каталог с именем sample и его содержимое в каталог Downloads, команда будет выглядеть так:
$ rsync -av sample/ Downloads/
Где опция используется для рекурсивного синхронизации и V используется для подробного вывода.
Это результат выполнения вышеупомянутой команды rsync, которая показывает подробный вывод процесса передачи файла. Однако, как вы можете видеть, он не показывает прогресс или статистику передачи файлов.
Чтобы показать ход процесса копирования Rsync, используйте параметр rsync built-in – progress.
Вот синтаксис команды:
$ rsync --progress SOURCE DESTINATION
Например, чтобы просмотреть прогресс при копировании каталога с именем sample и его содержимого в каталог Downloads, команда будет выглядеть так:
$ rsync -av --progress sample/ Downloads/
Где -progress используется, чтобы показать индикатор выполнения переводов, а вариант для рекурсивной синхронизации и V для отображения подробного вывода.
Это результат выполнения вышеупомянутой команды rsync, которая показывает прогресс копирования каждого файла в другое место. В конце передачи файла вы увидите итоговую строку, показывающую количество отправленных/полученных байтов, скорость передачи, общий размер и скорость передачи.
В приведенных выше выходных данных вы можете видеть, что средняя скорость передачи составляет 78 078 648,67 байт/сек, общий размер файла составляет 169 746 317 байт, а для завершения передачи потребовалось 1,45 секунды.
Есть еще одна опция — stats, которая содержит дополнительную статистику о передаче файлов, например, количество файлов и количество переданных файлов, общий размер файла и общий размер переданного файла и т. д. Чтобы включить эту статистику в ваш вывод вместе с прогрессом передачи файлов, вы можете используйте параметр –stats с rsync следующим образом:
$ rsync –progress –stats SOURCE DESTINATION
Например, чтобы просмотреть прогресс и статистику при копировании каталога с именем sample и его содержимого в каталог Downloads, команда будет выглядеть так:
$ rsync -av --progress --stats sample/ Downloads/
Где -progress используется, чтобы показать индикатор передач, -stats для отображения статистики, вариант рекурсивной синхронизации и v для отображения подробного вывода.
Это результат выполнения вышеупомянутой команды rsync, которая показывает прогресс копирования каждого файла в другое место. В конце передачи файла вы увидите статистику передачи файлов и итоговую строку, показывающую количество отправленных/полученных байтов, скорость передачи, общий размер и скорость передачи.
В этом посте вы узнали, как измерить и показать, как rsync копирует файлы из источника в место назначения. Параметр –progress показывает ход передачи, а параметр –stats отображает статистику передачи файла. Эти параметры дают пользователю возможность посмотреть, когда он передает большие файлы.
Здравствуйте.
Вопросик. а если процесс rsync уже начался? по кронтабу, к примеру, как можно узнать состояние прогресса?
Rsync присваивает каждому запущенному процессу уникальный идентификатор PID (Process ID). Вы можете использовать команду ps или pidof, чтобы найти PID процесса rsync, запущенного вашим заданием crontab. Затем, зная PID, вы можете использовать команду top или htop, чтобы отслеживать его работу.
Вы можете сделать (в оболочках POSIX, включая bash):
strace -e open,openat $(ps -o lwp= -LC rsync | sed ‘s/^/-p/’)
Или в zsh:
strace -e open,openat -p${^$(ps -o lwp= -LC rsync)}
Или вfish
strace -e open,openat -p(ps -o lwp= -LC rsync)
Или в rc/es:
strace -e open,openat -p`{ps -o lwp= -LC rsync}
Чтобы увидеть, что он делает, или
lsof -ad3-999 -c rsync
чтобы увидеть, какие файлы он открыл в данный момент.
Благодарю!