
Моя ситуация: у меня есть NAS, который обслуживает общие ресурсы через CIFS/Samba. Внутри он использует файловую систему ext3, но это не имеет значения (я думаю). У меня есть несколько компьютеров Linux (использующих файловые системы ext4), которые я хочу резервировать на этих общих ресурсах.
Моя проблема: использование общего ресурса для резервного копирования создает 2 основные проблемы. С одной стороны, я не могу скопировать все файлы на NAS, потому что некоторые файлы имеют очень длинные имена, которые CIFS не может обработать. С другой стороны, разрешения файлов и каталогов копируются неправильно. Например, у каждого файла на общем ресурсе установлены все биты «выполнения», независимо от разрешений исходного файла.
Мой вопрос: как проще всего обойти эти «недостатки», чтобы можно было создавать резервные копии и восстанавливать файлы без ручной обработки имен файлов и разрешений?
Дополнительная информация о моих экспериментах на данный момент:
Моя первая идея состояла в том, чтобы просто создать файловые системы ext4 внутри (разреженных) файлов на общем ресурсе, затем смонтировать их и использовать для настоящих резервных копий. Недостаток здесь в том, что удаление файлов из файловых систем не уменьшает размер "файлов" ext4 на общем ресурсе, и файловые системы должны быть ограничены по размеру с самого начала. Изменять их размер после создания обременительно.
Я пытался использоватьecryptfsпотому что я надеялся, что он зашифрует имена файлов и разрешения таким образом, чтобы обойти ограничения CIFS. Это не сработало, поскольку имена файлов зашифрованы, но снова используются как имена файлов (поэтому длинные имена файлов становятся только длиннее, а не короче). Кроме того, разрешения не «скрыты» ecryptfs. Зашифрованные файлы просто сохраняют разрешения оригиналов, поэтому любой расшифрованный файл снова будет иметь все установленные биты «выполнения».
Дружелюбный человек на IRC порекомендовал использовать динамическое количество больших файлов и использовать их как тома для LVM. Я еще не проверял это, но в теории это должно работать. У меня был бы логический том с ext4, который был бы распределен между несколькими файлами на общем ресурсе. Если бы мне нужно было больше места, я бы создал больше файлов и добавил их в том, если бы я использовал меньше места, я бы мог удалить некоторые из них. Единственный недостаток здесь в том, что мне все равно пришлось бы выполнять изменения размеров (и периодически проверять, сколько места на самом деле нужно). Оглядываясь назад, это дает мало или вообще никаких преимуществ по сравнению с использованием отдельных файлов, поскольку я мог бы обрезать/увеличить их, а затем также изменить размер файловой системы ext4.
Я представляю себе, например, FUSE, который сохраняет имена файлов и разрешения, скажем, в базе данных и не полагается на базовую файловую систему для поддержки всего. К сожалению, я пока ничего подобного не нашел.
решение1
У меня Samba с ecryptfs, похоже, работает на Ubuntu 14.04.
Я использовал это руководство:http://www.cyberciti.biz/faq/adding-a-user-to-a-samba-smb-share/
Мне кажется, что трюк в том, чтобы ввести тот же пароль:
passwd USER
и
smbpasswd -a USER
Я предполагаю, что ecryptfs подбирает пароль, когда он передается Samba. Мне бы хотелось услышать разъяснения о том, как это происходит.