1

我需要能够删除任意路径列表(文件和目录),如果任何删除失败,我需要能够回滚。有没有可以适应这个的 Unix 命令?如果没有,bash 脚本也可以。

4

1 回答 1

3

不太可能有一个命令可以完全通用地执行此操作。操作系统不支持原子删除多条路径,因此命令很难做到这一点。考虑一个 SIGKILL;该命令无法恢复,内核将不知道它必须撤消所做的事情,因此原子性被破坏。

您可以通过将已删除的文件或目录移动到垃圾文件夹来近似原子性,然后仅在其他所有操作都成功后才删除垃圾文件夹的内容(如果出现任何问题,则从垃圾文件夹中恢复数据)。但它不能保证是原子的。当文件位于不同的文件系统上时,您必须担心将垃圾放在哪里,因此您需要每个文件系统的垃圾文件夹。您还需要担心自动删除 30 个名为“makefile”的文件;这意味着您将需要垃圾目录中的目录层次结构信息(可能是垃圾目录下的实际目录,因为其他任何内容最终都是模棱两可的)。

于 2013-05-07T19:59:54.487 回答