[Поиграйтесь с сервером] CentOS реализует синхронизацию файлов через rsync (режим демона)
[Поиграйтесь с сервером] CentOS реализует синхронизацию файлов через rsync (режим демона)

Введение в rsync

rsync — это инструмент удаленной синхронизации данных под Liunx. Он может быстро синхронизировать файлы и каталоги между несколькими серверами, а также обеспечить инкрементную синхронизацию для сокращения передачи данных.

Существует два часто используемых метода аутентификации для rsync: один — метод rsync-daemon, а другой — метод ssh.

Метод daemon имеет следующие отличия от метода ssh:

1. Нет необходимости полагаться на службу sshd удаленного сервера, но на удаленном сервере необходимо включить службу rsyncd. Локальную службу rsyncd включать не нужно. 2. Реальная системная учетная запись удаленного сервера не используется напрямую, а используется виртуальная учетная запись и виртуальный пароль, при этом нет необходимости вводить пароль вручную. При этом модуль конфигурации ограничивает каталоги для удаленной синхронизации. . 3. По сравнению с методом ssh метод демона более безопасен.

В этой статье в основном представлены шаги по реализации rsync-daemon в операционной системе CentOS.

Установить rsync

CentOS Версии 7.x и выше по умолчанию имеют функцию «Установить». rsync,Можетк Проверьте успешность установки с помощью команды

Язык кода:javascript
копировать
rpm -qa |grep rsync
# rsync-3.1.2-12.el7_9.x86_64 значит установлен

Если он не установлен, вы можете установить его с помощью следующей команды

Язык кода:javascript
копировать
yum -y install rsync

Подготовка сервера

Удаленный сервер 192.168.1.1 предоставляет службы. rsyncd необходимо включить и настроить.

Локальный сервер 192.168.1.2, нет необходимости включать и настраивать rsyncd

Настройка удаленного сервера

1. Настройте rsyncd.conf

Язык кода:javascript
копировать
vim /etc/rsyncd.conf

2. Введите следующий контент. Некоторый контент можно изменить в зависимости от ситуации.

Язык кода:javascript
копировать
# к rsync Пользователь запускает процесс
uid = rsync
gid = rsync

# Нет необходимости запускать rsync-root,Позволяет получить полные атрибуты файла
fake super = yes

# Ограничивает передаваемые данные определенным каталогом и не позволяет выйти из каталога.
# Разрешите chroot для повышения безопасности. Когда клиент подключается к модулю, сначала выполните chroot в каталог, указанный параметром пути к модулю.
# Если chroot имеет значение «да», необходимо использовать права root, а резервное копирование файлов ссылок за пределами пути невозможно.
use chroot = no

# Максимальное количество подключений
max connections = 200

# тайм-аут
timeout = 300

# путь к файлу pid
pid file = /var/run/rsyncd.pid

# Заблокировать путь к файлу
lock file = /var/run/rsync.lock

# Устраните рассинхронизацию определенных файлов или каталогов
exclude = lost+found/

# Запись журнала передачи файлов
transfer logging = yes

# Укажите файл журнала
log file = /var/log/rsyncd.log

# Формат файла журнала
log format = %t %a %m %f %b

# Игнорировать сообщение об ошибке
ignore errors

# Доступные для чтения и записи данные резервного копирования
read only = false

# Не разрешено просматривать информацию о модуле
list = false

# Определите виртуального пользователя в качестве пользователя аутентификации соединения.
auth users = rsync_backup

# Определите путь к файлу пароля аутентификации подключения пользователя службы rsync.
secrets file = /etc/rsync.password

# Установить файлы, не требующие сжатия
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# Определить информацию о модуле
[backup]

# Информация аннотации модуля
comment = "backup dir"

# Определите каталог резервных данных, настройте здесь в соответствии с реальной ситуацией.
path = /backup

3. Создайте пользователя rsync.

Язык кода:javascript
копировать
id rsync
# может вернуться id: rsync: No such user

useradd -s /sbin/nologin -M rsync
#(-s создает оболочку пользователя, /sbin/nologin означает отсутствие входа в систему, -M rsync означает не создавать домашний каталог пользователя rsync)

4. Создайте каталог хранения резервных копий данных и измените свойства.

Язык кода:javascript
копировать
# каталог создан /backup/ Путь к rsyncd.conf в файле конфигурации на шаге 2 должен быть таким же.

mkdir /backup/
chown -R rsync:rsync /backup/

5. Создайте файл пароля пользователя для аутентификации.

Язык кода:javascript
копировать
# Пользователь rsync_backup в команде должен соответствовать имени виртуального пользователя, определенному в /etc/rsync.password.
# В команде test888 — это пароль аутентифицированного пользователя. Настройте его в соответствии с реальной ситуацией.

echo "rsync_backup:test888" >> /etc/rsync.password

chmod 600 /etc/rsync.password

6. Запустите службу rsync.

Язык кода:javascript
копировать
rsync --daemon

Если вам нужно завершить работу, введите команду pkill rsync, и служба остановится.

7. Проверьте, нормально ли работает служба

Язык кода:javascript
копировать
ps -ef |grep rsync

netstat -antlp |grep rsync

Если netstat не установлен, вы можете установить его с помощью команды yum install net-tools

Конфигурация локального сервера

Создать файл сертификации

Язык кода:javascript
копировать
# В команде test888 — это пароль пользователя аутентификации удаленного сервера, который должен быть последовательным.
echo "test888" >> /etc/rsync.password

chmod 600 /etc/rsync.password

Синхронизировать локальный сервер с удаленным сервером (интерактивно)

Каждый раз, когда вы отправляете данные в интерактивном режиме, вам необходимо вручную вводить пароль аутентифицированного пользователя (в данном примере — test888).

Язык кода:javascript
копировать
rsync -avuz /home/ rsync_backup@192.168.1.1::backup

Синхронизировать локальный сервер с удаленным сервером (взаимодействие не требуется)

Никакого взаимодействия не требуется, поскольку файл /etc/rsync.password настроен, поэтому нет необходимости вводить пароль каждый раз при отправке.

Язык кода:javascript
копировать
rsync -avuz /home/ rsync_backup@192.168.1.1::backup --password-file=/etc/rsync.password

Синхронизировать удаленный сервер с локальным сервером

Язык кода:javascript
копировать
# В интерактивном режиме вам необходимо вручную ввести пароль пользователя для аутентификации, в данном примере — test888.
rsync -a rsync_backup@192.168.1.1::backup /home/

# Интерактивный и не требует пароля
rsync -a rsync_backup@192.168.1.1::backup /home/ --password-file=/etc/rsync.password

Уведомление: К исходному каталогу добавляется косая черта. В результате содержимое каталога переносится в целевой каталог. Например, /test/ означает синхронизацию файлов и каталогов в каталоге test (за исключением самого тестового каталога) с целевым. каталог. Если в исходном каталоге нет косой черты, каталог будет перенесен в целевой каталог. Например, /test означает синхронизацию файлов и каталогов в тестовом каталоге (включая сам тестовый каталог) с целевым каталогом. Если целевой каталог не существует, он будет создан автоматически.

Часто используемые параметры

Язык кода:javascript
копировать
-v, --verbose подробный режим вывода
-a, --archive режим архива,Указывает на рекурсивную передачу файлов,и сохранить все атрибуты файлапостоянный
-u, --update Только обновление, то есть пропуск существующего целевого местоположения, а время файла должно быть позже, чем время файла для резервного копирования, и новые файлы не будут перезаписаны.
-z, --compress сжимает файлы резервных копий во время передачи.
--delete, удалить файлы, существующие в целевом каталоге, но не в исходном каталоге
--exclude=PATTERN,Укажите шаблон для исключения файлов, которые не нужно переносить

Все параметры

Язык кода:javascript
копировать
-v, --verbose Подробный вывод в режиме
-q, --quiet Режим пониженной мощности
-c, --checksum Включите переключатель проверки, чтобы принудительно проверять передачу файлов.
-a, --archive Режим архива,Указывает на рекурсивную передачу файлов,и сохранить все атрибуты файла,равный-rlptgoD
-r, --recursive Обработка подкаталогов в рекурсивном режиме
-R, --relative Использовать информацию об относительном пути
# rsync foo/bar/foo.c remote:/tmp/      ## Rsync Параметр создает файл foo.c в каталоге /tmp, и если используется параметр -R:
# rsync -R foo/bar/foo.c remote:/tmp/   ## Rsync Параметр создаст файл /tmp/foo/bar/foo.c, что означает, что будет сохранена полная информация о пути.
-b, --backup Создать резервную копию,То есть, если такое же имя файла уже существует для места назначения.,Переименуйте старый файл в~filename。Можеткиспользовать--suffixвозможность указать другой префикс файла резервной копии。
--backup-dir Сохраните файл резервной копии (например, ~filename) в каталоге.
-suffix=SUFFIX Определить префикс файла резервной копии
-u, --update Просто обновите, то есть пропустите все файлы, которые уже существуют в DST и находятся позже файлов, подлежащих резервному копированию. (Не перезаписывает обновленные файлы)
-l, --links Сохраняйте мягкие ссылки
-L, --copy-links Хотите обращаться с программными ссылками как с обычными файлами
--copy-unsafe-links Копирует только ссылки, указывающие за пределы дерева каталогов путей SRC.
--safe-links Игнорируйте ссылки, указывающие за пределы дерева каталогов путей SRC.
-k, --copy-dirlinks  transform symlink to a dir into referent dir
-K, --keep-dirlinks  treat symlinked dir on receiver as dir
-H, --hard-links Сохраняйте жесткие ссылки
-p, --perms Сохраняйте права доступа к файлам
-o, --owner Сохранение информации о владельце файла
-g, --group Сохранять информацию о группе файлов
-D, --devices Сохраняйте информацию о файлах устройства
-t, --times Сохраняйте информацию о времени файла
-S, --sparse Специальная обработка разреженных файлов. Экономия места на летнее время.
-n, --dry-run определяет, какие файлы будут переданы
-W, --whole-file Копирование файлов без инкрементного обнаружения
-x, --one-file-system Не пересекайте границы файловой системы
-B, --block-size=SIZE Размер блока, используемый алгоритмом проверки, по умолчанию — 700 байт.
-e, --rsh=COMMAND Укажите программу-оболочку для замены rsh
--rsync-path=PATH Укажите информацию о пути команды rsync на удаленном сервере.
-C, --cvs-exclude Используйте тот же метод, что и CVS, для автоматического игнорирования файлов и исключения файлов, которые вы не хотите передавать.
--existing Обновляйте только те файлы, которые уже существуют в DST, без резервного копирования вновь созданных файлов.
--delete Удалить файлы в DST, которых нет в SRC
--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 Также сравните файлы в каталоге, чтобы решить, требуется ли резервное копирование.
-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 Ограничение пропускной способности ввода-вывода, Кбайт per second
-h, --help Показать справочную информацию
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose