
Я использую Ubuntu 10.04. У меня есть большой каталог с (множеством подкаталогов) и файлами данных, которые я довольно часто использую в своих скриптах. Я хотел бы быть уверенным, что никогда случайно не удалю/не перезапишу/не изменю ни один из файлов/каталогов в этом суперкаталоге.
Как мне это сделать?
решение1
В основном сортируется по убыванию защиты и возрастанию удобства:
Сохраняйте файлы на физических носителях, доступных только для чтения, например, на CD-ROM.
Сохраните файлы в отдельной файловой системе, которую вы монтируете только для чтения.
Если вы являетесь администратором, создайте другого пользователя и сделайте эти файлы его владельцем.
Используйте ПРЕДОХРАНИТЕЛЬbindfs(Пакет Ubuntu
bindfs
) для создания представления дерева каталогов, доступного только для чтения, и указания вашим скриптам этого представления, доступного только для чтения:bindfs -p a-w /path/to/actual/tree /path/to/readonly/view myscript -d /path/to/readonly/view
Сделайте дерево каталогов доступным только для чтения с помощью
chmod a-w /path/to/tree
.Создайте копию дерева с жестко связанными файлами и укажите ваш скрипт на копию. Тогда ваши скрипты все еще могут изменять существующие файлы, но если они создают, удаляют или заменяют файлы, это повлияет только на копию.
cp -al /path/to/actual/tree /path/to/readonly/view myscript -d /path/to/readonly/view
Я рекомендую вам использовать bindfs. Единственная причина, по которой я бы сделал что-то еще, учитывая ваши требования, это если бы это было недоступно.
Если вы хотите, чтобы скрипты могли записывать данные в дерево каталогов, но не затрагивая при этом сами файлы, вы можете использовать объединенную файловую систему, например:funionfsилиunionfs-предохранитель.
решение2
Реального способа нет, потому что в любом случае вы всегда сможете их удалить.
Тем не менее, вы можете попробовать с разрешениями файлов. Щелкните правой кнопкой мыши по каталогу и установите доступ к папке на Access files и установите доступ к файлу на read-only. После этого щелкните Apply Permissions to Enclosed Files. Таким образом, вам придется вручную отменить эту настройку, когда вы решите удалить файлы в этом каталоге.
решение3
Вы можете rsync
переместить один каталог в другой и использовать его --link-dest
для создания жестких ссылок, чтобы они не занимали лишнего места.
Хорошая статья - этоTime Machine для всех существующих Unix-систем.
решение4
Человеку свойственно ошибаться. Однажды я удалил важный файл, потому что только что проснулся и был еще сонный (никакого похмелья) :) К счастью, это произошло намного позже, чем я узнал несколько трюков, которые помогают смягчить негативное влияние таких глупых действий. Вот они:
- всегда делайте резервные копии, периодически проверяйте, что резервные копии действительно содержат то, что они должны содержать, чтобы избежать ситуации, когда вы теряете файл, попробуйте восстановить его из резервной копии и обнаружите, что по какой-то причине он не содержится в резервной копии
- использовать контроль версий
- используйте систему учета, например inotify, она поможет вам отслеживать изменения в файловой системе
После этого случая я выработал еще одно непреложное правило: «Никогда не прикасайся к компьютеру, если хочешь спать».