Как защитить себя от случайного удаления/изменения файлов?

Как защитить себя от случайного удаления/изменения файлов?

Я использую 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, она поможет вам отслеживать изменения в файловой системе

После этого случая я выработал еще одно непреложное правило: «Никогда не прикасайся к компьютеру, если хочешь спать».

Связанный контент