Rsync с FreeBSD на Debian не удается с ошибкой llistxattr(“…”) failed: Invalid argument (22)

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

Я использую задачи Rsync на TrueNAS для резервного копирования определенных пулов на сервер Debian. Я использую rsync через SSH через аккаунт root как на клиенте (в данном случае TrueNAS), так и на сервере. Команда выглядит примерно так:

/usr/local/bin/rsync -a --delay-updates --delete-delay -X -p -r -t --exclude ‘clone-auto-*’ -M --log-file=/var/log/rsync/mypool.log -e ‘ssh -p 22 -o BatchMode=yes -o StrictHostKeyChecking=yes’ /mnt/Vol03/Subvol01/MyPool [email protected]:/mnt/backups

В некоторых пулах есть десятки тысяч файлов, но задача rsync не завершится успешно, так как несколько десятков файлов выдают эту ошибку:

rsync: get_xattr_names: llistxattr(“/some/old/file”,1024) failed: Invalid argument (22)

Мой вопрос: знает ли кто-нибудь, в чем корень этой проблемы? Я не могу понять, почему определенные файлы выдают эту ошибку, а подавляющее большинство — нет.

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

Теория

Когда вы используете rsync для синхронизации данных между различными системами, может возникнуть несколько проблем, связанных с атрибутами файлов. Ваша проблема конкретно связана с функцией llistxattr и ошибкой "Invalid argument (22)". Эта ошибка указывает на несоответствие в поддержке расширенных атрибутов (xattr) между файловыми системами или различиями в реализации этих атрибутов системами FreeBSD и Debian.

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

Пример

В вашем конкретном случае, rsync выполняется с использованием команды:

/usr/local/bin/rsync -a --delay-updates --delete-delay -X -p -r -t --exclude ‘clone-auto-*’ -M --log-file=/var/log/rsync/mypool.log -e ‘ssh -p 22 -o BatchMode=yes -o StrictHostKeyChecking=yes’ /mnt/Vol03/Subvol01/MyPool [email protected]:/mnt/backups

Сообщение об ошибке из-за llistxattr может возникнуть, если на исходной или целевой системе нет поддержки определённых расширенных атрибутов, которые пытается обработать rsync. Debian и FreeBSD могут использовать разные файловые системы или разные версии библиотек, которые обрабатывают расширенные атрибуты по-разному, особенно если учесть возможные различия в реализациях ZFS в FreeBSD и ext4 в Debian.

Применение

Чтобы исправить эту проблему, необходимо провести ряд шагов:

  1. Проверка поддержки расширенных атрибутов: Убедитесь, что файловая система на обеих машинах поддерживает расширенные атрибуты. Например, на Debian часто используется ext4 (который поддерживает xattr), однако конкретные настройки могут повлиять на его работу.

  2. Проверка версии ядра и библиотек: Разные версии ядра или библиотек C могут обрабатывать расширенные атрибуты по-разному. Убедитесь, что Debian и FreeBSD используют совместимые версии ядра и библиотек.

  3. Изучение и сравнение атрибутов: На FreeBSD можно использовать команду getextattr для извлечения списка атрибутов, которые могут вызвать ошибки. На Debian для этого может быть полезен getfattr.

  4. Тестирование без xattr: Попробуйте удалить флаг -X из команды rsync, чтобы понять, являются ли расширенные атрибуты основной проблемой.

  5. Настройка резервного копирования: Если руки не достигают разобраться с атрибутами, возможно, стоит использовать альтернативные подходы к резервному копированию этих файлов, например, с помощью архивирования их в tar, что поддерживает xattr, и дальнейшей передачи архива.

  6. Обновление ОС: Проверьте наличие обновлённых версий операционных систем и установите их, так как они могут содержать исправления, касающиеся работы с расширенными атрибутами.

  7. Обращение к документации: Изучение мануалов и специальной документации по ZFS на FreeBSD и ext4 на Debian может дать дополнительную информацию о совместимости и потенциальных настройках, которые можно изменить для успешного завершения операции.

  8. Журналы ошибок: Всегда анализируйте и сохраняйте логи ошибок, так как дополнительные сообщения могут указать на другие проблемы, связанный с передачей файлов.

Таким образом, подход к решению проблемы будет комплексным, требующим внимания к деталям систем и их конфигурации на уровне файла и метаданных. Рассмотрение данной проблемы в контексте системного администрирования также подскажет, где могут возникать параметры несовместимости, и каких можно ожидать последствий от них в процедуре резервного копирования.

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

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