以原子方式删除路径列表

时间:2013-05-07 19:41:11

标签: bash unix

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

1 个答案:

答案 0 :(得分:3)

不太可能有一个完全通用的命令。 O / S不支持以原子方式删除多个路径,因此命令很难做到这一点。考虑一下SIGKILL;命令无法恢复,并且内核不知道它必须撤消已完成的操作,因此原子性已被破坏。

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