Rsync

Rsync
Тип утилита, сетевой протокол[вд] и программа для синхронизации файлов[вд]
Разработчик Эндрю Триджелл
Написана на Си[2]
Операционная система Unix-подобная операционная система
Дата выпуска 19 июня 1996
Аппаратная платформа Unix-подобная операционная система
Последняя версия
Репозиторий github.com/RsyncProject/…
Лицензия GPL 3.0 или более поздняя[3]
Сайт 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 local/directory [email protected]:/remote/directory/ — копирование из локального каталога в удалённый.
  3. rsync -arv [email protected]:/remote/data local/directory/ — копирование из удалённого каталога в локальный.
  4. rsync -arv --progress [email protected]:/remote/data local/directory/ — показать прогресс в процентах для каждого файла.
  5. rsync -arv --exclude={"*.jpg", "*.png"} [email protected]:/remote/data local/directory/ — исключить все файлы с расширением .jpg и .png.
  6. rsync -arv --delete [email protected]:/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 в качестве бэкапов и для синхронизации данных между локальными и удалёнными системами, так как она позволяет быстро, эффективно и с минимальными ресурсами выполнять инкрементальные копирования, а также сохранять права доступа и метаданные файлов.

Приложения rsync

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

Вариации rsync

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

См. также

Примечания

  1. Release 3.4.4 — 2026.
  2. The rsync Open Source Project on Open Hub: Languages Page — 2006.
  3. NEWS
  4. Grsync for Windows. Дата обращения: 31 марта 2017. Архивировано 2 мая 2015 года.
  5. GS RichCopy 360 Enterprise for Windows. Дата обращения: 31 марта 2017. Архивировано 10 февраля 2017 года.
  6. ZsyncCdImage - Community Help Wiki. help.ubuntu.com. Дата обращения: 12 мая 2019. Архивировано 28 апреля 2019 года.
  7. librsync: librsync. librsync.github.io. Дата обращения: 12 мая 2019. Архивировано 25 января 2019 года.
  8. rclone - rsync for cloud storage. rclone.org. Дата обращения: 12 мая 2019. Архивировано 17 июня 2020 года.

Литература

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

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.