rsync продолжает изменять два каталога.

Вопрос или проблема

Я пытаюсь синхронизировать каталог с локальной файловой системы ext4 на три файловые системы FreeBSD ufs, используя rsync. Вот моя настройка:

  • Локальная машина на GNU/Linux, файловая система ext4, смонтированная в /mnt
  • Удалённая машина на FreeBSD 14.1 с тремя файловыми системами ufs, смонтированными под /media/m1, /media/m2, /media/m3

Сначала я синхронизируюсь с локальной на первый удалённый диск с помощью:

sudo rsync -auv --delete -A -X --exclude=lost+found --rsync-path="sudo /usr/local/bin/rsync" --numeric-ids /mnt/ username@hostname:/media/m1/backup

Обратите внимание, что rsync запускается с привилегиями root как на локальной, так и на удаленной машине. Также на машине FreeBSD файловые системы смонтированы с опцией acls:

sudo mount -o acls -t ufs ...

поэтому опция rsync -A должна работать правильно.

После однократного запуска rsync (ошибок не сообщалось) я запустил его второй раз и ожидал, что изменений не будет. Однако во время второго запуска две папки были записаны так, как будто они были изменены снова:

sending incremental file list
backup/folder/subfolder1/
backup/folder/subfolder2/

Неважно, сколько раз я запускаю команду, эти две подпапки всегда перечислены. Похоже, что rsync пытается установить некоторые атрибуты на папки, но ему это не удаётся.

Интересно, что когда я пытаюсь синхронизировать папки между смонтированными файловыми системами ufs на удалённой машине, например, с помощью

sudo rsync -auv --delete -A -X --numeric-ids /media/m1/backup/ /media/m2/backup

я получаю такое же поведение: во время первого запуска все файлы из оригинальной папки перечислены; во время последующих запусков одни и те же два каталога сообщаются снова и снова:

sending incremental file list
backup/folder/subfolder1/
backup/folder/subfolder2/

Как будто rsync пытается что-то изменить, неудачно, не сообщая об ошибке, и пытается снова и снова. В итоге: мои резервные копии отличаются от оригинала.

У вас есть объяснение этого поведения или какие-то подсказки, на что мне следует обратить внимание, чтобы решить эту проблему?

Ответ или решение

Конечно, я постараюсь помочь вам разобраться в проблеме с использованием rsync для синхронизации файловых систем. Ваша ситуация включает в себя использование rsync для синхронизации данных с локальной машины Linux на три файловые системы UFS на удаленной машине FreeBSD. Проблема заключается в том, что две папки постоянно отмечаются как измененные после каждой синхронизации.

Возможные причины проблемы

  1. Атрибуты файлов и папок: Опция -A в rsync используется для передачи ACL (Access Control Lists), которые могут управлять разрешениями на доступ к файлам и папкам. Несмотря на то, что обе ваши системы поддерживают ACL, может быть несовместимость или проблема в их реализации на разных системах, что приводит к невозможности корректного копирования или применения ACL.

  2. Атрибуты расширенной метыданных (xattrs): Опция -X передает расширенные атрибуты файлов. Проблема может возникать, если UFS на FreeBSD не поддерживает все атрибуты, которые пытается передать rsync.

  3. Различия в файловых системах: EXT4 и UFS имеют разные характеристики и поведение, что может привести к небольшим отличиям в том, как метаданные файлов интерпретируются или сохраняются после переноса файлов между системами.

Рекомендации по решению проблемы

  1. Проверка и удаление несущественных метаданных: Попробуйте отключить флаги -A и -X и выполните синхронизацию только с основными параметрами переноса. Если проблема исчезнет, она связана с ACL или расширенными атрибутами. В этом случае возможно стоит вручную или отдельно переносить ACL, либо исключить их перенос, если это не критично.

  2. Логирование и диагностика: Используйте дополнительные флаги rsync, такие как -i (для подробного вывода изменений) и -vv (для увеличения уровня детализации), чтобы точно увидеть, что rsync пытается изменить при каждой синхронизации.

  3. Проверка и корректировка монтирования в FreeBSD: Попробуйте изменить способ монтирования файловых систем на FreeBSD для учета различий ACL или включения или исключения определенных опций, влияющих на метаданные.

  4. Тестирование без удаленного сервера: Если возможно, протестируйте синхронизацию в пределах одной операционной системы или между системами с идентичными файловыми системами, чтобы увидеть, возникает ли проблема.

  5. Обновление и проверка rsync: Убедитесь, что у вас установлены последние стабильные версии rsync на обеих системах, чтобы избежать ошибок, которые могли быть исправлены в новых версиях.

Заключение

Чтобы устранить разницу между оригиналом и резервной копией, следует внимательно проанализировать метаданные папок, особенности работы с ACL и обеспечением совместимости между файловыми системами. Ваша задача как ИТ-специалиста — выявить источник проблемы и по возможности адаптировать конфигурацию для гарантии полной синхронизации данных.

Если вы выполните перечисленные шаги и симптомы сохранятся, рекомендуется обратиться к специализированным форумам FreeBSD и Linux, где вы сможете получить советы от более широкого сообщества.

Оцените материал
Добавить комментарий

Капча загружается...