Bash:确定部分删除的内容

  • 本文关键字:删除 定部 Bash linux bash
  • 更新时间 :
  • 英文 :


我想删除一个符号链接

rm -rf name

而是使用

rm -rf name/

我想我花了一秒钟才意识到这个错误并取消了它。这是一个包含数百 GB 数据的庞大目录。因此,无论如何删除都需要很长时间。

  1. 由于命令不完整,部分处理的文件是恢复(如mv)还是已经永久删除?

  2. 如果它们被不可恢复地删除,是否可以找出已删除的内容?删除顺序是否与ls相同(按字母顺序)?

  3. 是否有从系统中删除的文件日志?

操作系统是科学的Linux。文件系统是 nfs ( df -T )。

请注意,我仍然认为这个问题在这里是题外话......但是在一个地方对问题的每个分支都有明确的答案并没有什么坏处,如果这个答案与问题一起迁移到超级用户,那就更好了:


  1. 由于命令不完整,部分处理的文件是恢复(如 mv)还是已经永久删除?

就像单个文件系统中的递归mv期间单个rename()系统调用一样,单个文件的单个unlink()是原子的 - 它要么完成,要么不逐个文件完成。没有"半完成"状态,也没有跨多个文件可以回滚的更大事务;每个单独的目录条目都将被删除或不被删除。

同样,任何没有剩余目录条目(又名"硬链接")指向它的文件或在unlink()末尾打开的文件句柄都将立即被删除 - 尽管文件系统可以自行决定是否,何时以及在什么情况下实际擦除或重用存储其数据的底层块, 或指定哪些块与每个现已删除的文件相关联的跟踪数据。

  1. 如果它们被不可恢复地删除,是否可以找出已删除的内容?它是否按照与ls(字母顺序)相同的顺序删除?

一般不行。存在特定的后端文件系统,可以使用它们来跟踪快照之间的更改,甚至可以执行时间点恢复(尽管这些通常是商业性的,因此只有在管理员付费时才可用),以及记录单个系统调用的监视工具(例如sysdig)。

例如,如果您的系统管理员正在运行带有弯曲快照的 ZFS 或 btrfs,他们可以将当前存在的文件列表与截至上次快照时存在的文件列表进行比较。

  1. 是否有从系统中删除的文件日志?

一般不行。如果你的站点运行的是Sysdig Cloud,或者具有非默认行为的商业文件服务器,那么也许 - 但你的系统管理员人员将是可以回答这个问题的人。

最新更新