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