rsync

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

rsync
220x80px
Тип утилита, сетевой протокол[d], дифференциальный бэкап[d] и передача данных
Разработчик Wayne Davison
Написана на Си[1]
Операционная система Кроссплатформенное программное обеспечение
Первый выпуск 19 июня 1996
Последняя версия 3.1.3 (28 января 2018)
Лицензия GPLv3
Сайт rsync.samba.org

rsync (англ. Remote Synchronization) — программа для UNIX-подобных систем, которая выполняет эффективно синхронизацию файлов и каталогов в двух местах (необязательно локальных) с минимизированием трафика, используя кодирование данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то, что зеркалирование осуществляется одним потоком в каждом направлении (а не по одному или несколько потоков на каждый файл). rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию. rsync передает только изменения файлов, что отражается на производительности программы.

Выпущен под лицензией GNU GPL .

Синтаксис[править | править код]

Подобно rcp и scp, rsync требует указания источника и назначения; любой из них может быть удаленным, но не оба одновременно.

Общий синтаксис:

rsync [OPTION] … SRC … [USER@]HOST:DEST

rsync [OPTION] … [USER@]HOST:SRC [DEST]

где SRC - это файл или каталог (или список из нескольких файлов и каталогов) для копирования, DEST - файл или каталог для копирования, а квадратные скобки указывают необязательные параметры.

Демон[править | править код]

rsyncd — демон, реализующий протокол rsync. По умолчанию использует TCP-порт 873.

Rsync так же может быть запущен в режиме демона, который принимает следующие параметры:

--daemon # запустить rsync как демон

--address=ADDRESS  # связаться с определенным адресом

--config=FILE      # определить конфигурацию rsyncd "rsyncd.conf"

--port=PORT        # указать порт подключения

--log-file=FILE    # переписать настройки логирования ("log file")

--sockopts=OPTIONS # указать TCP параметры

-h, --help         # посмотреть дополнительные опции (если указать после флага --daemon)

Примеры[править | править код]

  1. rsync -arv somedirectory otherplace # Сохранить все аттрибуты, синхрозировать рекурсивно, "богатый" вывод
  2. rsync -arv localdirectory user@remote.server.address:/remote/directory/ # копирование с локальной директории на удаленную
  3. rsync -arv user@remote.server.address:/remote/data local/directory/ # копирование с удаленной директории на локальную
  4. rsync -arv --progress user@remote.server.address:/remote/data local/directory/ # показать прогресс в процентах для каждого файла
  5. rsync -arv --exclude={"*.jpg", "*.png"} user@remote.server.address:/remote/data local/directory/ # исключить все файлы с расширением .jpg и .png
  6. rsync -arv --delete user@remote.server.address:/remote/data local/directory/ # удалить файлы в директории назначения, если в директории источнике больше таких файлов нет

Некоторые дополнительные функции rsync[править | править код]

  • поддержка копирования ссылок, устройств, владельцев, групп и разрешений;
  • exclude и exclude-from опции, похожие на GNU tar;
  • режим исключения CVS для игнорирования тех же файлов, которые CVS игнорировал бы;
  • может использовать любую прозрачную удаленную оболочку, включая ssh или rsh;
  • не требует привилегий суперпользователя;
  • конвейерная передача файлов для минимизации затрат времени;
  • поддержка анонимных или аутентифицированных демонов rsync (идеально подходит для зеркалирования).

Алгоритм[править | править код]

Утилита rsync использует алгоритм, разработанный австралийским программистом Эндрю Триджеллом для эффективной передачи структур (например, файлов) по коммуникационным соединениям в том случае, когда принимающий компьютер уже имеет отличающуюся версию этой структуры.

Принимающий компьютер разделяет свою копию файла на неперекрывающиеся куски фиксированного размера S и вычисляет контрольную сумму для каждого куска: MD4-хеш и более слабый кольцевой хеш, и отправляет их серверу, с которым синхронизируется.

Сервер, с которым синхронизируются, вычисляет контрольные суммы для каждого кусочка размера S в своей версии файла, в том числе перекрывающиеся куски. Вычисления производятся эффективно ввиду особого свойства кольцевого хеша: если кольцевой хеш байт от n до n + S − 1 равняется R, то кольцевой хеш байт от n + 1 до n + S может быть посчитан, исходя из R, байта n и байта n + S без необходимости учитывать байты, лежащие внутри этого интервала. Таким образом, если уже подсчитан кольцевой хеш байт 1—25, то для подсчета кольцевого хеша байт 2—26 используется предыдущее значение и байты 1 и 26.

Применение[править | править код]

rsync была создана как замена для rcp и scp. Одним из первых применений rsync стало зеркалирование или резервное копирование клиентских Unix-систем на центральный Unix-сервер с использованием rsync/ssh и обычной учетной записи Unix. С планировщиком задач, таким как cron, возможно организовать автоматизированное основанное на rsync зеркалирование по защищенному криптографически каналу между многими компьютерами и центральным сервером.

Приложения rsync[править | править код]

Program Операционная система Бесплатное программное обеспечение Описание
Linux macOS Windows
Back In Time (англ.) Да Нет Нет Да Интегрируются в GNOME и KDE SC 4 и доступны непосредственно из репозиториев многих дистрибутивов Linux
BackupAssist (англ.) Нет Нет Да Нет Прямое зеркало или с историей, VSS.
cwRsync Нет Нет Да Нет На основе Cygwin.
Grsync (англ.) Да Да Да[2] Да Графический интерфейс для rsync в Linux и Windows-системах
GS RichCopy 360 (англ.) Нет Нет Да [3] Нет Предназначен только для рабочих станций MS Windows и серверов с поддержкой VSS.
LuckyBackup (англ.) Да Да Да Да Он предоставляет графический интерфейс, основанный на кросс-платформенной библиотеке Qt

Вариации rsync[править | править код]

  • zsync - это инструмент, похожий на rsync, оптимизированный для множества загрузок в каждой версии файла. zsync используется дистрибутивами Linux, такими как Ubuntu, для распространения быстро меняющихся файлов бета-образа ISO. zsync использует протокол HTTP и файлы. zsync с предварительно рассчитанным скользящим хешем, чтобы минимизировать нагрузку на сервер и разрешить передачу различий для оптимизации сети.[4]
  • Библиотека librsync, используемая rdiff, является независимой реализацией алгоритма rsync. Он не использует сетевой протокол rsync и не делится каким-либо кодом с приложением rsync. Он используется Dropbox, rdiff-backup, duplicity и другими утилитами.[5]
  • rclone - это инструмент с открытым исходным кодом, вдохновленный rsync, который ориентирован исключительно на поставщиков облачных систем хранения. Он поддерживает более 10 различных поставщиков и предоставляет rsync-подобный интерфейс для резервного копирования локальных данных этим поставщикам.[6]

См. также[править | править код]

Примечания[править | править код]

  1. The rsync Open Source Project on Open Hub: Languages Page — 2006.
  2. Grsync for Windows
  3. GS RichCopy 360 Enterprise for Windows
  4. ZsyncCdImage - Community Help Wiki. help.ubuntu.com. Дата обращения 12 мая 2019.
  5. librsync: librsync. librsync.github.io. Дата обращения 12 мая 2019.
  6. rclone - rsync for cloud storage. rclone.org. Дата обращения 12 мая 2019.

Литература[править | править код]

  • Preston, W. C. Backup & Recovery: Inexpensive Backup Solutions for Open Systems. — O'Reilly Media, 2007. — P. 114-118. — 768 p. — ISBN 9780596555047.

Ссылки[править | править код]