В этой статье разбирается утилита rsync, которая может применяться для синхронизации файлов между локальным и удалённым компьютером.
Об утилите
Утилита rsync — это утилита для быстрого копирования файлов с локального компьютера на удалённый или наоборот.
Установить её можете из стандартных репозиториев:
# apt install rsync
Получить справку по этой утилите можно здесь, или выполнив команду:
# man rsync
В качестве транспорта может использовать протокол SSH. И, настроив подключение с одного сервера на другой по ssh-ключам, вы можете использовать rsync в скриптах которые выполняются по расписанию.
Синтаксис команды:
# rsync [option] /src/... /dst/...
А при использовании ssh синтаксис будет следующим:
# rsync [option] -e ssh /src/... <user>@<host>:/dst/...
Опции и примеры использования
Рассмотрим некоторые опции которые имеет утилита rsync:
--timeout <N>
— оборвать выполнение команды, если I/O не будет отвечать указанное количество секунд;
--bwlimit <RATE>
— установить лимит скорости передачи в килобитах;
--remove-source-files
— удалить файлы на источнике после их передачи;
-W
— отключить алгоритм delta-transfer, это рекомендуют применять когда скорость сети между компьютерами выше, чем пропускная способность диска;
-q
— уменьшить выводимую информацию;
-v
— сделать выводимую информацию более подробной;
--progress
— показать прогресс передачи файлов;
-z
— использовать сжатие;
-h
— выводить числа в удобном для человека формате;
-e
— указать с помощью чего подключаться к удалённому хосту, например-e 'ssh -p 2234'
.
Пример использования:
# rsync --timeout 5 --bwlimit 25000 --remove-source-files -W -q -e ssh /dump1c/ut.dump.gz root@192.168.0.12:/storage/pg_store
Здесь я копирую дамп базы /dump1c/ut.dump.gz на удалённый сервер root@192.168.0.12:/storage/pg_store. Для передачи использую ssh. Указал timeout равным 5 секундам, и если удалённый сервер не ответит, то передача оборвётся. Ещё указал лимит скорости в 25000, это примерно 25 Mbit/s.
Утилита позволяет копировать файлы или каталоги локально, например:
# rsync -zvh --progress file /tmp/backups/ # rsync -zvh --progress /home/alex/documents /tmp/backups/
Кстати, вместо SSH вы можете использовать демон rsync, но в статье этот способ не будет показан.
Итог
Утилита rsync довольно известная, и многими используемая, особенно в скриптах. Поэтому о ней необходимо помнить.