当用户运行rm -f时closures文件的备份

这是情景;

我需要授权用户在/opt/dev-folder/执行活动。 开发人员经常更改文件,有时他们replace或删除原始文件。

我已经与sudo分配权限。 现在我想要一些想法,当开发人员运行rm -f file-name时,如何将文件自动备份。

例如:

 sudo rm -rf file-name.php 

在后台,应该像下面这样做:

 mv file-name.php /backup/ 

任何想法或更好的build议将不胜感激。

你不能。
(你可以 – 对于某些文件系统有黑客攻击,比如Sirex指出的“ 写入时EXT3复制” ,但在所有的Unix平台上都没有通用的方法。

让我们看看一些可能的实现和问题/规避,只是为了好玩:

  1. 复制写入文件系统扩展
    这些是最简单的,但是它们要求你使用一个具有写入时拷贝扩展的文件系统。 不同的操作系统到操作系统的实现(甚至可能不在你的目标平台上),他们咀嚼大量的磁盘空间,保持阴影副本。

  2. 别名rm到别的东西
    直到有人运行/bin/rm (或使用rm命令以外的工具删除文件:GUI文件浏览器, unlink()调用等)
    如果sudo涉及,这种方法很可能会中断。

  3. rmreplace为脚本或自定义二进制文件
    一个好主意,但是取代核心系统二进制文件通常是一件坏事。
    它可能工作,但是你仍然需要一些实际上使数据消失的东西,或者你回到了同一条船上,select(1)咀嚼磁盘空间的gobs。 这意味着或者rm挂在/bin/realrm类的东西上(减less到大小写(2) – 某人只能运行realrm ,你可以通过使它只能被root执行来缓解)或者你有其他的清理过程。
    你可以做到,但是这是很多的工作。


我上面的分析绝不是详尽无遗 – 考虑到一些问题,版本控制是更好的select(将敏感目录置于版本控制之下,删除某些东西时,可以通过删除预删除版本来恢复)。

另一个防止键盘松动的传统预防措施是使用BACKUP ,从中恢复意外删除的文件。