我正在设计一个构建系统,需要注意以原子方式操作文件系统。
我遇到过一种情况,我有一个包含文件的临时目录,现在我想把它移到一个更永久的家。我知道如何rename atomically,但如果完整的目标路径不存在,这不起作用。如果我不关心原子,答案就是简单的mkdir -p ... && mv ...
。是否可以以创建父目录的方式原子重命名临时目录?我不能提前这样做,因为计算了父目录名。
这将在Node.js程序中运行,因此需要来自npm生态系统的东西,但调用命令行程序或C / C ++库来完成工作是微不足道的
示例:
/tmp/mytempbuild - a directory containing files
/myproject/build/dev/0.2.2 - the desired destination, whose parent may not exist
/myproject/build/master - an older, existing directory that must not be changed