好吧,我担任不同级别的系统管理员已有近十年了,但我却成为一个古老错误的受害者;尽管我不明白为什么会发生这种情况。
我在服务器上整理了将近 15 年的 .tar.gz 文件,解压它们,然后整理数据。我甚至一直使用新文件夹作为沙箱。我当时在一个文件夹 ( /DATA/RAID1/ROOT/SORTME/BACKOPEN
) 中,其中包含之前 Ubuntu 安装的未压缩存档,然后我决定删除那些我知道不需要的更明显的系统文件夹。当我运行它时,rm
它运行完成,但完成后,我没有/bin
、/sbin
或任何其他与我尝试删除的文件夹同名的根关联文件夹。
违规命令:
root@dev1:/DATA/RAID1/ROOT/SORTME/BACKOPEN# rm -rfv cdrom/ boot/ bin/ calpp/ dev/ etc/ ldconfig icd-registration.tgz lib/ lib32/ lib64/ opt/ sbin/ selinux/ share/ srv/ usr/ var/
现在,我当然回想起来,我应该先有./
这些目录来解释相对路径,但我仍然不明白为什么当我特别指定并且当时不在的时候/bin
,它们会被删除。/sbin
bin/ sbin/
/
在我看来,如果我在密码下操作并且没有前面的斜杠来指定根目录,它应该只删除我在目录中的目录。
感谢上帝,我没有单独/
的 ZFS 池或任何名称,rm
所以我没事,但我非常希望永远不要再犯这个错误。
像这样破坏操作系统的想法真是令人尴尬,我禁不住想一些除了./
答案之外的东西。
我在这里没有注意到什么?
提前感谢您的努力。
更新:
好的,所以我回到家,从发布以来一直使用的 ISO 重新安装了 14.04。我重新导入了我的 ZFS 池 (/DATA/RAID1|/DATA/RAID2),并检查了 /DATA/RAID1/ROOT/SORTME/BACKOPEN,结果发现我在有问题的命令中指定的所有目录/文件仍然存在。我不想把自己搞得一团糟,我复制并粘贴了帖子中的有问题的命令,但在每个路径/文件参数前面都添加了 ./。它起作用了,并没有破坏我的操作系统。我还将 rm -rfv 的输出重定向到一个文件以供以后检查。我的操作系统没有被删除,一切都很好。我猜如果硬链接或符号链接是问题所在,我也会遇到同样的问题,但这次没有。情节越来越复杂。我觉得我可能永远得不到答案,但似乎这只是一场意外事故之一。我可以肯定地说,我以后会更加小心……