Вопрос или проблема
Я хочу использовать “общий доступ” Samba для резервных копий MacOS Time Machine
, а также для обмена файлами (копирование файлов с использованием Finder).
Возможно ли это, и если да, то как это исправить?
Я могу выполнять резервное копирование MacOS с помощью программного обеспечения Time Machine
, однако, при копировании файлов на тот же “общий доступ” “Time Machine” возникает ошибка:
Операция не может быть завершена, так как произошла неожиданная ошибка (код ошибки 100093).
Когда я копирую файлы, создается пустой файл (ноль байт), и отображается ошибка. Я могу создавать папки, но не могу копировать файлы с помощью Finder.
Вот моя конфигурация Samba:
[homes]
comment = Home Directories
browsable = no
writable = yes
create mask = 0600
directory mask = 0700
[timemachine]
# https://www.samba.org/samba/docs/current/man-html/vfs_fruit.8.html
comment = Time Capsule
path = /media/timemachine
browseable = yes
writeable = yes
create mask = 0600
directory mask = 0700
read only = no
guest ok = no
valid users = <user_name> # измените это на вашу учетную запись
write list = <user_name> # измените это на вашу учетную запись
vfs objects = catia fruit streams_xattr
fruit:aapl = yes
fruit:time machine = yes
var/log/messages
содержит следующую запись:
Jan 8 19:21:05 pi daemon.err smbd[13131]: [2025/01/08 19:21:05.611930, 0] ../../source3/modules/vfs_fruit.c:2684(fruit_pwrite_meta_stream)
Jan 8 19:21:05 pi daemon.err smbd[13131]: fruit_pwrite_meta_stream: On-demand create [iDeaVim.txt:AFP_AfpInfo] in write failed: Нет такого файла или каталога
похоже, что сбой происходит здесь, ссылка на код github
Детали файловой системы для записи [timemachine]
/dev/sda1 on /media/timemachine type exfat (rw,relatime,uid=1000,gid=1000,fmask=0002,dmask=0002,allow_utime=0020,iocharset=utf8,errors=remount-ro)
uid
1000 и gid
1000 — это мои идентификаторы пользователя.
Вот конфигурация global
:
[global]
create mask = 0664
directory mask = 0775
veto files = /.DS_Store/lost+found/
delete veto files = true
nt acl support = no
inherit acls = yes
ea support = yes
security = user
passdb backend = tdbsam
map to guest = Bad User
vfs objects = catia fruit streams_xattr recycle
acl_xattr:ignore system acls = yes
recycle:repository = .recycle
recycle:keeptree = yes
recycle:versions = yes
fruit:aapl = yes
fruit:metadata = stream
fruit:model = MacSamba
fruit:veto_appledouble = yes
fruit:posix_rename = yes
fruit:zero_file_id = yes
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
server max protocol = SMB3
server min protocol = SMB3
workgroup = WORKGROUP
server string = NAS
server role = standalone server
dns proxy = no
Команды, которые я использовал для изменения файловой системы, после этого все работает.
1: rc-service samba stop
2: mkfs.ext4 /dev/sda1
3: vim /etc/fstab
/dev/sda1 /media/timemachine ext4 rw,defaults 0 0
4: mount -a
5: cd /media && chown -R <user_name>:<group> ./timemachine
6: rc-service samba start
У вас есть streams_xattr
, но вы используете файловую систему, которая не поддерживает xattr — exFAT не может хранить расширенные атрибуты, которые Samba пытается использовать для эмуляции альтернативных потоков (как и не может хранить реальные альтернативные потоки, как это делает NTFS в Windows).
Вы можете попробовать использовать streams_depot
вместо этого, но вам действительно стоит перейти на более надежную файловую систему с самого начала, например, Ext4 или XFS, для хранения резервных копий. (Обе эти системы поддерживают расширенные атрибуты по умолчанию.)
Ответ или решение
Чтобы успешно настроить Samba "share" для использования с "Time Machine" на MacOS для резервного копирования и одновременного копирования файлов через "Finder", необходимо учесть несколько важных аспектов, которые вы затронули в вашем вопросе.
Фактическое состояние проблемы:
Ваша текущая конфигурация Samba обеспечивает успешное резервное копирование с помощью "Time Machine", но при попытке копирования файлов через "Finder" на тот же раздел возникает ошибка с кодом 100093. Это может быть связано с тем, что файловая система exFAT, используемая для хранения, не поддерживает расширенные атрибуты (xattr), которые необходимы для работы Samba с модулями "vfs_fruit" и "streams_xattr", имитирующими потоки данных.
Решение проблемы:
-
Замена файловой системы:
Ваша файловая система exFAT не поддерживает необходимые расширенные атрибуты. Рекомендуется перейти на более подходящую файловую систему, такую как Ext4 или XFS. Эти файловые системы поддерживают необходимые возможности по умолчанию:- Вы уже успешно изменили файловую систему на ext4, что должно решить проблему с поддержкой xattr. Убедитесь, что все шаги выполнены корректно для предотвращения повторения ошибки.
-
Корректировка конфигурации Samba:
После изменений в файловой системе важно убедиться, что конфигурация Samba правильно настроена для работы с новыми условиями:-
Проверьте, что в конфигурации вы используете правильные параметры для "vfs objects". Например, при использовании ext4 вам больше не потребуется "streams_depot", и можно оставить "streams_xattr".
-
Убедитесь, что учетные данные (имя пользователя и группа) корректны и совпадают с правами доступа на новые директории.
-
-
Тестирование подключения:
Перезапустите службу Samba и протестируйте подключение с MacOS. Выполните как резервное копирование с помощью "Time Machine", так и копирование файлов через "Finder". Обратите внимание на новые сообщения об ошибках (если они появятся) в логах для быстрого устранения возможных проблем. -
Ожидаемые результаты:
После выполненных настроек вы должны иметь возможность без ошибок выполнять как резервное копирование с "Time Machine", так и копирование файлов через "Finder". -
Регулярное наблюдение и обслуживание:
После успешной настройки обеспечьте регулярный мониторинг логов и производительности системы для предотвращения возможных проблем и поддержания надежности работы вашего хранилища.
Правильная настройка файловой системы и Samba не только устранит текущие проблемы, но и улучшит производительность и надежность вашей среды резервного копирования и обмена файлами.