Премиальное программное обеспечение и практические уроки
RsyncПодробное объяснение
1. Что такое Rsync
RsyncRsync (удалённая синхронизация) — это инструмент удалённой синхронизации данных, позволяющий быстро синхронизировать файлы между несколькими хостами в локальной или глобальной сети. Rsync использует так называемый «алгоритм Rsync» для синхронизации файлов между локальными и удалёнными хостами. Этот алгоритм передаёт только отдельные части двух файлов, а не весь файл целиком, что обеспечивает очень высокую скорость.
Rsync изначально был разработан как замена rcp и в настоящее время поддерживается rsync.samba.org, поэтому формат файла rsync.conf аналогичен основному конфигурационному файлу Samba. Rsync можно использовать через rsh или ssh, а также в режиме демона. В режиме демона сервер Rsync открывает порт 873 и ожидает подключения клиентов. При подключении сервер Rsync проверяет пароль на совпадение. Если пароль подтверждён, можно начинать передачу файла. Весь файл передаётся после установки первого соединения. После этого требуется только инкрементальное резервное копирование.
Rsync поддерживает большинство Unix-подобных систем, независимо от того,Линукс, Solaris и BSD. Кроме того, он хорошо протестирован наокнаСуществуют также соответствующие версии для этой платформы, такие как cwRsync и Sync2NAS, а также другие инструменты.
Основные возможности Rsync следующие:
- Все дерево каталогов и файловая система могут быть зеркально отображены;
- Легко сохранять исходные права доступа к файлам, время, мягкие и жесткие ссылки и т. д.
- Для установки не требуется никаких специальных разрешений;
- Оптимизированный процесс и высокая эффективность передачи файлов;
- Для передачи файлов можно использовать rsh, ssh и другие методы, а также можно использовать прямое сокетное соединение;
- поддерживатьанонимныйпередача инфекции.
2. Алгоритм синхронизации Rsync
Причина, по которой Rsync может синхронизировать файлы так быстро, заключается в том, что «алгоритм синхронизации Rsync» может очень быстро вычислять данные, требующие резервного копирования. Описание алгоритма синхронизации Rsync следующее:
Предположим, вам нужно синхронизировать похожие файлы A и B между двумя компьютерами: 1 и 2. Компьютер 1 имеет доступ к файлу A, а компьютер 2 — к файлу B. Также предположим, что пропускная способность сети между хостами 1 и 2 очень низкая. Алгоритм rsync выполняет следующие пять шагов:
- Номер 2 разбивает файл B на набор неперекрывающихся блоков данных фиксированного размера S байт, где последний блок может быть меньше S.
- № 2 выполняет две проверки для каждого сегментированного блока данных: одна — 32-битная скользящая слабая проверка, а другая — 128-битная сильная проверка MD4.
- № 2 отправляет эти результаты проверки № 1.
- Номер 1 просматривает все блоки данных размером S в файле A (смещение может быть произвольным и не обязательно кратным S), чтобы найти блок данных с той же слабой контрольной суммой и сильной контрольной суммой, что и у блока в файле B. Эту задачу можно быстро выполнить с помощью функции скользящей контрольной суммы.
- Номер 1 отправляет номеру 2 набор инструкций для создания копии файла A на номере 2. Каждая инструкция здесь является либо доказательством того, что файл B уже содержит определенный блок данных без повторной передачи, либо блоком данных, который определенно не соответствует ни одному блоку данных в файле B.
3. Описание параметров Rsync
3.1 Файл конфигурации rsyncd.conf
Глобальные параметры
Все параметры до [module] в файле являются глобальными. Конечно, вы также можете определить параметры модуля в разделе глобальных параметров. В этом случае значение параметра будет значением по умолчанию для всех модулей.
Порт: Указывает номер порта, используемого фоновой программой. Значение по умолчанию — 873.
Файл motd: Параметр «файл motd» используется для указания файла сообщения.серверСодержимое этого файла отображается клиенту. По умолчанию файл motd отсутствует.
Файл журнала: "log file" указывает файл журнала для rsync вместо отправки журнала в syslog. Например, можно указать "/var/log/rsyncd.log".
pid-файл: указывает pid-файл rsync, обычно указывается как «/var/run/rsyncd.pid».
Функция Syslog: определяет уровень сообщений, которые rsync отправляет в syslog. Распространенные уровни сообщений: uth, authpriv, крон, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3, local4, local5, local6 и local7. Значение по умолчанию — daemon.
Параметры модуля
Это имя, в основном, определяет, какой каталог на сервере нужно синхронизировать. Формат должен быть "[модуль]". Это имя видит клиент rsync, аналогично имени общего ресурса, предоставляемому сервером Samba. Фактические данные, синхронизируемые сервером, определяются путём. При необходимости можно указать несколько модулей. В модуле можно определить следующие параметры:
Комментарий: Задаёт описание модуля. Это описание вместе с именем модуля отображается клиентам при подключении для получения списка модулей. По умолчанию описание не задано.
Путь: Указывает путь к модулю, резервная копия которого будет создана. Этот параметр является обязательным.
Использование chroot: Если параметр «использовать chroot» установлен в значение true, rsync выполнит chroot в каталог, указанный параметром path, перед передачей файлов. Это делается для дополнительной безопасности, но имеет недостатки: требуются права root и невозможность резервного копирования каталогов и файлов, на которые указывают символические ссылки, указывающие на внешние каталоги. По умолчанию параметр chroot установлен в значение true.
uid: Этот параметр определяет UID, который должен быть у демона при передаче файлов модулем. При использовании с параметром gid он определяет, к каким файлам возможен доступ и какие у них разрешения. Значение по умолчанию — «nobody».
gid: Этот параметр определяет gid, который должен использовать демон при передаче файлов этим модулем. Значение по умолчанию — «nobody».
Максимальное количество подключений: определяет максимальное количество одновременных подключений для этого модуля для защиты сервера. Запросы на подключение, превышающие лимит, будут уведомлены и повторены. Значение по умолчанию — 0, что означает отсутствие ограничений.
list: Этот параметр определяет, следует ли включать модуль в список доступных модулей при запросе клиентом. Если этот параметр установлен в значение false, могут быть созданы скрытые модули. Значение по умолчанию — true.
Только для чтения: этот параметр определяет, разрешено ли клиентам загружать файлы. Если значение true, любой запрос на загрузку будет отклонен. Если значение false, и каталог сервера имеет разрешения на чтение и запись, загрузка разрешена. Значение по умолчанию — true.
Исключить: используется для указания нескольких файлов или каталогов (относительных путей), разделённых пробелами, и добавления их в список исключений. Это эквивалентно указанию шаблона с помощью --exclude в клиентской команде. Модуль может указать только один параметр исключения. Однако важно отметить, что этот параметр влияет на безопасность, поскольку клиенты могут легко обойти список исключений. Чтобы гарантировать недоступность определённых файлов, лучше всего использовать его вместе с параметрами uid/gid.
исключить из: Указывает имя файла, содержащего определение шаблона исключения. Сервер считывает определение списка исключений из этого файла.
include: указывает, что соответствующие файлы или каталоги не следует исключать. Это эквивалентно использованию --include для указания шаблона в клиентской команде. Сочетание include и exclude может определять сложные правила исключения/включения.
include from: Указывает имя файла, содержащего определение шаблона включения. Сервер считывает определение списка включения из этого файла.
auth users: Этот параметр задаёт список имён пользователей, разделённых пробелами или запятыми, которым разрешено подключаться к модулю. Эти пользователи не связаны с системными пользователями. Если задан параметр «auth users», то последующие клиентские запросы на подключение к модулю будут проверяться rsync для проверки личности с использованием протокола аутентификации «запрос/ответ». Имена пользователей и пароли хранятся в виде открытого текста в файле, указанном параметром «secrets file». По умолчанию подключения к модулю разрешены без пароля (то есть анонимно).
Файл секретов: этот параметр указывает файл, содержащий пары имя пользователя:пароль. Этот файл используется только в том случае, если определен параметр «auth users». Каждая строка файла содержит одну пару имя пользователя:пароль. Как правило, длина паролей не должна превышать 8 символов. Имя файла секретов по умолчанию отсутствует, поэтому необходимо указать его (например, /etc/rsyncd.passwd). Примечание: права доступа к файлу должны быть 600, иначе клиент не сможет подключиться к серверу.
Строгие режимы: этот параметр определяет, следует ли контролировать разрешения для файла паролей. Если значение этого параметра равно true, доступ к файлу паролей будет только у пользователя, запустившего сервер rsync. Другие пользователи не смогут получить доступ к файлу. Значение по умолчанию — true.
hosts allow: Этот параметр определяет, каким IP-клиентам разрешено подключаться к модулю. Определения шаблонов клиентов могут быть представлены в следующих формах:
Один IP-адрес, например: 192.167.0.1
Весь сегмент сети, например: 192.168.0.0/24 или 192.168.0.0/255.255.255.0
Несколько IP-адресов или сегментов сети необходимо разделять пробелами, «*» означает все, и по умолчанию всем хостам разрешено подключаться.
hosts deny: определяет машины, которым запрещено подключаться к серверу rsync. Это можно сделать с помощью определения hosts allow. По умолчанию определение hosts deny отсутствует.
Игнорировать ошибки: указывает, что rsyncd будет игнорировать ошибки ввода-вывода на сервере при определении необходимости удаления во время передачи. Как правило, rsync пропускает операцию --delete при возникновении ошибки ввода-вывода, чтобы предотвратить серьёзные проблемы, вызванные временной нехваткой ресурсов или другими ошибками ввода-вывода.
Игнорировать нечитаемые: указывает, что сервер rysnc полностью игнорирует файлы, к которым у пользователя нет прав доступа. Это имеет смысл, если в каталоге, требующем резервного копирования, есть файлы, которые не должны быть доступны пользователю, выполняющему резервное копирование.
Файл блокировки: определяет файл блокировки, поддерживающий параметр максимального количества подключений. Значение по умолчанию — /var/run/rsyncd.lock.
Ведение журнала передачи: позволяет серверу rsync использовать файлы в формате ftp для записи операций загрузки и выгрузки в отдельных журналах.
Формат журнала: с помощью этой опции пользователи могут настраивать поля файла журнала при использовании журнала передачи. Формат файла определяется символом определения формата.НитьМожно использовать следующие спецификаторы формата:
%h имя удаленного хоста
%a удаленный IP-адрес
%l Длина файла в символах
%p Идентификатор процесса этого сеанса rsync
%o Тип операции: «отправить» или «получить»
Имя файла %f
Путь к модулю %P
Имя модуля %m
%t Текущее время
%u Имя пользователя для аутентификации (null, если анонимно)
%b Количество фактически переданных байтов
%c При отправке файла в это поле записывается контрольная сумма файла
Формат журнала по умолчанию — «%o %h [%a] %m (%u) %f %l». Обычно в начало каждой строки добавляется «%t [%p]». В исходный код включён Perl-скрипт rsyncstats для генерации статистики для этого формата журнала.
Тайм-аут: этот параметр позволяет переопределить тайм-аут IP-адреса, заданный клиентом. Это гарантирует, что сервер rsync не будет ждать вечно отказавшего клиента. Тайм-аут указывается в секундах; 0 означает отсутствие тайм-аута, что является значением по умолчанию. Для анонимных серверов rsync подходящее значение — 600.
Параметры отклонения: этот параметр позволяет указать список параметров команды, которые клиентам запрещено использовать с этим модулем. Необходимо использовать полное имя команды, а не её аббревиатуру. В случае отклонения команды сервер сообщит об ошибке и завершит работу. Чтобы предотвратить сжатие, укажите «dont compress = *».
Не сжимать: указывает файлы, которые не нужно сжимать перед передачей. Значение по умолчанию: *.gz *.tgz *.zip *.z *.rpm *.deb *.изо *.бз2 *.tbz
3.2 Команда Rsync
После настройки сервера rsync следующим шагом будет выполнение команды rsync на клиенте для резервного копирования файлов с сервера на клиент. rsync — очень мощный инструмент с множеством функций и возможностей. Ниже мы подробно проанализируем и объясним все его возможности.
Формат команд Rsync может быть одним из следующих шести:
- rsync [ОПЦИЯ]... ИСТОЧНИК НАЗНАЧЕНИЕ
- rsync [ПАРАМЕТР]... ИСТОЧНИК [ПОЛЬЗОВАТЕЛЬ@]ХОСТ:НАЗНАЧЕНИЕ
- rsync [ПАРАМЕТР]... [ПОЛЬЗОВАТЕЛЬ@]ХОСТ:ИСТОЧНИК НАЗНАЧЕНИЕ
- rsync [ПАРАМЕТР]... [ПОЛЬЗОВАТЕЛЬ@]ХОСТ::ИСТОЧНИК НАЗНАЧЕНИЕ
- rsync [ПАРАМЕТР]... ИСТОЧНИК [ПОЛЬЗОВАТЕЛЬ@]ХОСТ::НАЗНАЧЕНИЕ
- rsync [ПАРАМЕТР]... rsync://[ПОЛЬЗОВАТЕЛЬ@]ХОСТ[:ПОРТ]/ИСТОЧНИК [НАЗНАЧЕНИЕ]
В соответствии с шестью форматами команд, указанными выше, rsync имеет шесть различных режимов работы:
- Копировать локальные файлы. Этот режим используется, когда ни путь SRC, ни путь DES не содержат ни одного двоеточия (разделителя ":"). Например: rsync -a /data /backup
- Используйте программу удалённой оболочки (например, rsh, ssh) для копирования содержимого локальной машины на удалённую. Этот режим включается, если адрес пути DST содержит один разделитель — двоеточие ":". Например: rsync -avz *.c foo:src
- Используйте программу удалённой оболочки (например, rsh, ssh) для копирования содержимого удалённой машины на локальную. Этот режим запускается, когда путь к адресу SRC содержит один разделитель — двоеточие ":". Например: rsync -avz foo:src/bar /data
- Копирует файлы с удалённого rsync-сервера на локальный компьютер. Этот режим включается, если путь к исходному файлу содержит разделители "::". Например: rsync -av root@172.16.78.192::www /databack
- Копирует файлы с локального компьютера на удалённый сервер rsync. Этот режим включается, если информация о пути DST содержит разделители "::". Например: rsync -av /databack root@172.16.78.192::www
- Вывести список файлов на удалённой машине. Это похоже на передачу по rsync, но просто опустите информацию о локальной машине в команде. Например: rsync -v rsync://172.16.78.192/www
Конкретное объяснение параметров rsync следующее:
- -v, --verbose подробный режим вывода
- -q, --quiet Тихий режим вывода
- -c, --checksum Включите параметр контрольной суммы, чтобы принудительно проверить передачу файлов.
- -a, --archive режим архивации, который означает рекурсивную передачу файлов с сохранением всех атрибутов файлов, что эквивалентно -rlptgoD
- -r, --recursive Обрабатывать подкаталоги рекурсивно
- -R, --relative Использовать информацию об относительном пути
- -b, --backup создаёт резервную копию, то есть, если файл с таким же именем уже существует в месте назначения, переименовывает старый файл в ~имя_файла. Вы можете использовать опцию --suffix, чтобы указать другой префикс для файла резервной копии.
- --backup-dir сохраняет файл резервной копии (например, ~filename) в каталоге.
- -suffix=SUFFIX определяет префикс файла резервной копии
- -u, --update только обновляет, то есть пропускает все файлы, которые уже существуют в DST и время создания которых позже, чем у файлов, подлежащих резервному копированию. (Обновленные файлы не перезаписываются.)
- -l, --links сохранять мягкие ссылки
- -L, --copy-links Обрабатывать программные ссылки как обычные файлы
- --copy-unsafe-links копировать только ссылки, указывающие за пределы дерева каталогов пути SRC
- --safe-links Игнорировать ссылки, указывающие за пределы дерева каталогов пути SRC
- -H, --hard-links сохранять жесткие ссылки
- -p, --perms сохранить права доступа к файлам
- -o, --owner сохранить информацию о владельце файла
- -g, --group сохранить информацию о группе файлов
- -D, --devices сохранить информацию о файле устройства
- -t, --times сохранять информацию о времени файла
- -S, --sparse Специальная обработка разреженных файлов для экономии места DST
- -n, --dry-run показывает, какие файлы будут переданы
- -W, --whole-file копировать файл без инкрементной проверки
- -x, --one-file-system Не пересекать границы файловой системы
- -B, --block-size=SIZE Размер блока, используемый алгоритмом проверки, по умолчанию — 700 байт.
- -e, --rsh=COMMAND указывает использование rsh или ssh для синхронизации данных
- --rsync-path=PATH указывает путь к команде rsync на удаленном сервере.
- -C, --cvs-exclude Использовать тот же метод, что и CVS, для автоматического игнорирования файлов, используемый для исключения файлов, которые вы не хотите передавать.
- --existing обновляет только файлы, которые уже существуют в DST, и не создает резервные копии вновь созданных файлов
- --delete Удалить файлы, которых нет в SRC в DST
- --delete-excluded Также удалить файлы на принимающей стороне, которые исключены этой опцией.
- --delete-after удалить после завершения передачи
- --ignore-errors Удалить, даже если произошли ошибки ввода-вывода
- --max-delete=NUM Удалить не более NUM файлов
- --partial сохраняет файлы, которые по какой-то причине не были полностью переданы, тем самым ускоряя последующие повторные передачи
- --force принудительно удалить каталог, даже если он не пустой
- --numeric-ids Не сопоставлять числовые идентификаторы пользователей и групп с именами пользователей и групп
- --timeout=TIME Время ожидания IP-адреса в секундах
- -I, --ignore-times Не пропускать файлы с одинаковым временем и длиной
- --size-only При принятии решения о необходимости резервного копирования файла обращайте внимание только на его размер, не принимая во внимание время создания файла.
- --modify-window=NUM определяет временной интервал, используемый при определении одинакового времени файлов. Значение по умолчанию — 0.
- -T --temp-dir=DIR создать временные файлы в DIR
- --compare-dest=DIR Также сравнить файлы в DIR, чтобы определить, нужно ли их резервное копирование.
- -P эквивалентно --partial
- --progress Отображение хода резервного копирования
- -z, --compress сжимает файлы резервных копий во время передачи
- --exclude=PATTERN указывает шаблон файлов, которые не нужно переносить
- --include=PATTERN указывает шаблон файла, который не следует исключать и который следует перенести
- --exclude-from=FILE исключить файлы с указанным шаблоном в FILE
- --include-from=FILE не исключает файлы, соответствующие шаблону, указанному FILE
- --version распечатать информацию о версии
- --address Привязать к определенному адресу
- --config=FILE указывает другой файл конфигурации вместо файла rsyncd.conf по умолчанию
- --port=PORT указывает другой порт службы rsync
- --blocking-io Использовать блокирующий ввод-вывод для удаленной оболочки
- -stats выдает статус передачи определенных файлов
- --progress Отображать ход передачи во время передачи
- --log-format=formAT указывает формат файла журнала
- --password-file=FILE получить пароль из ФАЙЛА
- --bwlimit=KBPS Ограничить пропускную способность ввода-вывода, Кбайт в секунду
- -h, --help Отобразить справочную информацию
Настройка rsync под liunx
Выпущен Rsync 3.2.4
15 апреля 2022 г.
Выпущена версия Rsync 3.2.4. Ещё один типичный релиз с исправлениями ошибок и некоторыми улучшениями. Он также включает в себя встроенную версию zlib 1.2.8. Исправления безопасности , которые могут использоваться или не использоваться в вашей конкретной конфигурации сборки.
Уведомление:Теперь естьПатч исправляет проверку конфигурации на наличие "signed char" при действии "-pedantic-errors". Это работает в системах, где "char" по умолчанию имеет значение "unsigned char" (например, ARM), и возвращает алгоритму rsync полную эффективность (без патча передача данных приводила бы к отправке большего количества литеральных данных, чем к поиску соответствующих локальных данных).
Смотрите также3.2.4 Новости См. подробный журнал изменений. Последние страницы руководства также доступны по адресу:
Исходный tar-архив доступен здесь: rsync-3.2.4.tar.gz (знак), tar-архив каталога «patch» распространяется в отдельном файле: rsync-patches-3.2.4.tar.gz (знак), а разница для версии 3.2.2 доступна здесь: rsync-3.2.3-3.2.4.diffs.gz (знак).
конфигурация сервера rsync
- Кратковременная установка rsync
- Измените файл конфигурации Vim etc/rsyncd.conf
uid=root
gid=root
максимальное количество подключений=4
использовать chroot=no
файл журнала=/var/log/rsyncd.log
pid-файл=/var/run/rsyncd.pid
файл блокировки=/var/run/rsyncd.lock
файл секретов=/etc/rsyncd.pwd
хосты разрешают = 10.10.0.200
хосты запрещают = 0.0.0.0/0
[оа]
path=/home/sxit/appbak
комментарий = файл резервной копии
игнорировать ошибки
только для чтения = нет
список = да
аутентификация пользователей = root
- Создайте файл pwd и измените права доступа к файлу.
Vim rsyncd.pwd
root:пароль
Chmod 600 rsyncd.pwd
- Запуск /usr/bin/rsync –daemon --config=/etc/rsyncd.conf может потребовать привилегий root.
(Проверьте файлы /etc/init.d/rsyncd и /etc/xinetd.d/rsync, чтобы определить, запускается ли служба супердемоном или независимым процессом: Service xinetd start / service rsyncd start )
Конфигурация клиента Rsync10.10.0.200
- Создайте файл для хранения паролей
Vim /etc/rsyncd.pwd
Пароль
Chmod 600 rsyncd.pwd
- Синхронизировать данные сервера /usr/bin/rsync –vazp –progress –password-file=/etc/rsyncd.pwd root@10.10.1.3::oa /home1/sxit/appbak (локальный каталог хранилища)
- Вы можете включить эту команду в план и выполнять ее регулярно.
Vim /etc/crontab
01 04 * * * root /usr/bin/rsync -vzau --progress --password-file=/etc/rsyncd.pwd root@10.10.1.3::oa /home1/sxit/appbak
rsyncсуществоватьокнаКонфигурация под
Конфигурация сервера Rsync
- Установить rsync
Официальный сайт rsync:
https://rsync.samba.org/
[ WINDOWS RSYNC Сервер ]
https://itefix.net/dl/free-software/cwrsync_6.2.4_x64_free.zip
https://itefix.net/dl/free-software/cwrsync_5.5.0_x86_free.zip
выбиратьПуть установки E:\cwRsyncServer, Примечание: rsync — это оболочка для cgywin под Windows
Во время установки Rsync выполнит следующие действия:
а. Создайте нового пользователя с именем SvcwRsync и назначьте ему права администратора. Пароль для него будет сгенерирован.
б. Настройте права доступа к каталогу установки E:\cwRsyncServer. Не меняйте права доступа самостоятельно.
в) Создайте службу RsyncServer.
В более ранних версиях вам, возможно, потребуется выполнить описанные выше шаги и создать службу вручную, как показано ниже. Однако три этапа установки здесь уже выполнены.
cygrunsrv.exe -I "Rsync" -p /cygdrive/d/cwRsyncServer/bin/rsync.exe -a "--config=/cygdrive/d/cwRsyncServer/etc/rsyncd.conf --daemon --no-detach"
-f "Rsync" -u Администратор -w 123456
- Измените файл конфигурации conf
использовать chroot = false
строгие режимы = false
хосты разрешают = 10.10.1.3
файл журнала = rsyncd.log
pid-файл = rsyncd.pid
файл секретов = /cygdrive/e/cwRsyncServer/etc/rsyncd.txt
Определения модуля #
# Помните соглашения об именовании cygwin: c:\work становится /cygwin/c/work
#
[почта]
путь = /cygdrive/d/MDaemon/Users
только для чтения = ложь
игнорировать ошибки
аутентификация пользователей = root
ведение журнала передачи = да
- Создайте учетную запись и назначьте разрешения
В файле конфигурации я использую учетную запись root, поэтому мне нужно создать новую учетную запись root, настроить пароль, добавить учетную запись root в группу администраторов и предоставить учетной записи root права полного управления в d/MDaemon/Users
- Создать текстовый файл
root:пароль
- Запустить службу
Запустите службу rsyncserver в сервисе, настройте её на автоматический запуск. Если всё работает нормально, вы увидите, что порт 873 прослушивается.
Конфигурация клиента Rsync
- Создайте новый файл хранения паролей
Vim /etc/rsync.pwd
Пароль
Chmod 600 rsync.pwd
2./usr/bin/rsync –auv –progress –password-file=/etc/rsync.pwd root@10.10.3.1::mail /home/maiusers (без параметра Z может подключаться, но не может передавать файлы)