场景如下;
我需要授权用户在 中执行活动/opt/dev-folder/
。开发人员经常更改文件,有时他们会替换或删除原始文件。
我已使用 sudo 分配权限。现在我想知道如何在开发人员运行时自动备份文件rm -f file-name
。
例如:
sudo rm -rf file-name.php
在后台,它应该做如下的事情:
mv file-name.php /backup/
任何想法或更好的建议都将受到高度赞赏。
答案1
你不能。
(当然可以——有些文件系统有 hack,比如EXT3 写入时复制Sirex 指出,但是在所有 Unix 平台上没有通用的方法来做到这一点。
让我们看看一些可能的实现和问题/规避措施,只是为了好玩:
写时复制文件系统扩展
这些是最万无一失的,但它们要求您使用具有写时复制扩展的文件系统。 实现因操作系统而异(甚至可能不适用于您的目标平台),并且它们会占用大量磁盘空间,使影子副本闲置在那里。rm
其他东西的别名
这种方法很有效,直到有人运行/bin/rm
(或使用命令以外的工具rm
来删除文件:GUI 文件资源管理器、调用unlink()
等)
这种方法很可能会因为sudo
参与而中断。rm
用脚本或自定义二进制文件替换
这个想法不错,但替换核心系统二进制文件通常是一件坏事。
它可能会起作用,但你仍然需要一些能够真正使数据离开否则,您又会陷入选项 (1) 的困境,占用大量磁盘空间。这意味着要么rm
将其重命名为其他名称/bin/realrm
(简化为案例 (2) - 有人可以运行realrm
。您可以通过使其只能由 root 执行来缓解这种情况),要么您有其他清理过程。
您可以这样做,但这需要大量工作。
我上面的分析绝不是详尽无遗的——考虑到一系列的问题,版本控制是更好的选择(将敏感目录置于修订控制之下。当某些内容被删除时,您可以随时通过提取删除前的版本来恢复它。)
防止键盘螺母松动的另一种传统预防措施是备份您可以从中恢复意外删除的文件。