Утилита Rsync

В этой статье разбирается утилита 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 довольно известная, и многими используемая, особенно в скриптах. Поэтому о ней необходимо помнить.