Вот сценарий:
Мне нужно авторизовать пользователя для выполнения действий в / opt / dev-folder /
. Разработчик часто вносит изменения в файл, иногда они заменяют или удаляют исходный файл.
Я назначил привилегии с помощью sudo. Теперь я хочу понять, как сделать автоматическое резервное копирование файла, когда разработчик запускает rm -f имя-файла
.
например:
sudo rm -rf file-name.php
в фоновом режиме, он должен делать что-то вроде ниже:
mv file-name.php /backup/
любая идея или лучшая рекомендация будут высоко оценены.
Вы не можете.
(Что ж, вы можете - есть хаки для некоторых файловых систем, например EXT3 Copy on Write , на которые указал Сирекс, но универсального способа сделать это на всех платформах Unix нет.)
Давайте рассмотрим некоторые из них. возможные реализации и проблемы / обходные пути, просто для удовольствия:
Копирование при записи Расширения файловой системы
Это наиболее надежные, но они требуют, чтобы вы использовали файловую систему с расширением копирования при записи. Реализация варьируется от ОС к ОС (и может быть даже недоступна на вашей целевой платформе), и они занимают много места на диске, храня теневые копии.
Псевдоним rm
на что-то еще
Это отлично работает, пока кто-то не запустит / bin / rm
(или не использует другой инструмент, кроме команды rm
, чтобы удалить файл: GUI File Explorer,
Этот подход, вероятно, сломается, если будет задействовано sudo
.
Заменить rm
скриптом или пользовательским двоичным кодом
Хорошая идея, но замена основных системных двоичных файлов обычно плохая Вещь.
Это может сработать, но вам все равно понадобится что-то, что действительно заставит данные исчезнуть , или вы снова окажетесь в той же лодке, что и вариант (1), поглощающий кучи дискового пространства. Это означает, что либо rm
зависает, переименованный во что-то другое, например / bin / realrm
(сокращено до случая (2) - кто-то может просто запустить realrm
). Вы можете уменьшить немного, сделав его исполняемым только с правами root) или у вас есть другой процесс очистки.
Вы можете это сделать, но это много работы.
Мой анализ, приведенный выше, ни в коем случае не является исчерпывающим - с учетом множества проблем контроль версий является лучшим вариантом (поместите важные каталоги под контроль версий. Когда что-то будет удалено, вы всегда можно восстановить, вытащив версию до удаления.)
Еще одна традиционная мера предосторожности против незакрепленных гаек на клавиатуре - это РЕЗЕРВНОЕ КОПИРОВАНИЕ , из которого вы можете восстановить случайно удаленные файлы.