Вопрос или проблема
Я использую задачи 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.
Применение
Чтобы исправить эту проблему, необходимо провести ряд шагов:
-
Проверка поддержки расширенных атрибутов: Убедитесь, что файловая система на обеих машинах поддерживает расширенные атрибуты. Например, на Debian часто используется ext4 (который поддерживает xattr), однако конкретные настройки могут повлиять на его работу.
-
Проверка версии ядра и библиотек: Разные версии ядра или библиотек C могут обрабатывать расширенные атрибуты по-разному. Убедитесь, что Debian и FreeBSD используют совместимые версии ядра и библиотек.
-
Изучение и сравнение атрибутов: На FreeBSD можно использовать команду
getextattr
для извлечения списка атрибутов, которые могут вызвать ошибки. На Debian для этого может быть полезенgetfattr
. -
Тестирование без xattr: Попробуйте удалить флаг
-X
из командыrsync
, чтобы понять, являются ли расширенные атрибуты основной проблемой. -
Настройка резервного копирования: Если руки не достигают разобраться с атрибутами, возможно, стоит использовать альтернативные подходы к резервному копированию этих файлов, например, с помощью архивирования их в tar, что поддерживает xattr, и дальнейшей передачи архива.
-
Обновление ОС: Проверьте наличие обновлённых версий операционных систем и установите их, так как они могут содержать исправления, касающиеся работы с расширенными атрибутами.
-
Обращение к документации: Изучение мануалов и специальной документации по ZFS на FreeBSD и ext4 на Debian может дать дополнительную информацию о совместимости и потенциальных настройках, которые можно изменить для успешного завершения операции.
-
Журналы ошибок: Всегда анализируйте и сохраняйте логи ошибок, так как дополнительные сообщения могут указать на другие проблемы, связанный с передачей файлов.
Таким образом, подход к решению проблемы будет комплексным, требующим внимания к деталям систем и их конфигурации на уровне файла и метаданных. Рассмотрение данной проблемы в контексте системного администрирования также подскажет, где могут возникать параметры несовместимости, и каких можно ожидать последствий от них в процедуре резервного копирования.