Ubuntu 20.04.1, Samba pkg 2:4.11.6+dfsg-0ubuntu1.2
Недавно установил общий ресурс Samba на моей машине Ubuntu; ничего причудливого, просто общий ресурс под названием "media" с тремя подкаталогами - Movies, TV, & Photos.
Все было нормально в течение недели, но со вчерашнего дня все файлы в каталоге Photos отображаются как каталоги. При доступе к ресурсу Samba из MacOS (smb://myserver/media) все файлы отображаются значком "папка", а при cd
в папку через терминал все файлы перечислены как drwx при выполнении ls -al
. В таком состоянии файлы невозможно нормально использовать. Даже если я скопирую этот файл на машину MacOS, он останется в виде каталога. Доступ к файлам на самой машине Ubuntu (т.е. локально) показывает, что файлы целы и все выглядит нормально.
Что я пробовал для решения проблемы:
min protocol = SMB2
и client min protocol = SMB2
в /etc/samba/smb.confЭто странно, потому что файлы в других каталогах на ресурсе ведут себя нормально, и файлы в каталоге Photos вели себя нормально в течение недели, прежде чем это внезапно произошло.
Интересно, что это похоже на старую ошибку, но я использую версию Samba, которая исправляет эту проблему.
Любая помощь будет очень признательна; поскольку я не делал никаких изменений, которые привели к такому поведению, я не уверен, что стирание и перезагрузка (навсегда) исправят это. Я надеялся использовать эту коробку в качестве NAS, но невозможность доступа к файлам является серьезным препятствием.
*** EDIT: Похожее поведение на Windows
У меня возникла та же проблема, и решение было найдено для меня следующим образом:
Все затронутые файлы/папки имели расширенный атрибут user.DOSATTRIB
. При выполнении getfattr #filename
результат «плохого» файла будет примерно таким:
getfattr Borat\ \(2006\).mp4
# file: Borat (2006).mp4
user.DOSATTRIB
Чтобы решить эту проблему, я удалил расширенный атрибут с помощью команды setfattr -x user.DOSATTRIB # имя файла
. Итак, для приведенного выше примера выполнение:
setfattr -x user.DOSATTRIB Borat\ \(2006\).mp4
getfattr Borat\ \(2006\).mp4
не вернуло расширенных атрибутов, и мой общий сетевой файл снова стал доступным.
В настоящее время я выясняю, как запустить setfattr -x user.DOSATTRIB
рекурсивно для моих папок. Я отредактирую этот ответ, когда разберусь.
Обновление: Итак, я сделал небрежное решение.
getfattr -R Movies > DOS-Movies.txt
в каталоге НАД папкой с фильмами. Приведенная выше команда запускает getfattr
рекурсивно для папки с фильмами и возвращает все файлы и папки с расширенными атрибутами, а затем сохраняет их в текстовом файле. (?-is)^.+\Ruser.encryptable\R
для
удалите строку, содержащую этот атрибут, И ПРЕДЫДУЩУЮ СТРОКУ
(имя файла). Я также удалил все пустые строки и получил файл #: Movies/Dune (1984)/Dune (1984).mp4
= только файлы с расширенным атрибутом DOSATTRIB, по одному элементу в строке.Я также использовал Find/Replace, чтобы найти \r\n
и заменить на "\r\n
, чтобы добавить символ " в конце каждой строки. setfattr -x user.DOSATTRIB
, поэтому я выполнил простой поиск/замену, и каждая строка в конце выглядела так: setfattr -x user.DOSATTRIB «Movies/Dune (1984)/Dune (1984).mp4»
Надеюсь, это поможет!