Linux 我的脚本应该使用cp还是mv来更健壮?
我有一个bash脚本(科学Linux)。 脚本必须对文件进行操作。比如说“file.dat”(大约1GB大小) 一段时间后,脚本将重新启动并执行以下操作:Linux 我的脚本应该使用cp还是mv来更健壮?,linux,bash,error-handling,fault,robustness,Linux,Bash,Error Handling,Fault,Robustness,我有一个bash脚本(科学Linux)。 脚本必须对文件进行操作。比如说“file.dat”(大约1GB大小) 一段时间后,脚本将重新启动并执行以下操作: if [ -f file.dat ]; then cp file.dat file.previous.dat fi 要备份该文件。 然后一个进程启动并覆盖“file.dat” 为了最安全(断电或任何意外情况)。最好的选择是什么:cp还是mv? 谢谢。我会使用以下组合: mv file.dat file.dat.previous c
if [ -f file.dat ]; then
cp file.dat file.previous.dat
fi
要备份该文件。
然后一个进程启动并覆盖“file.dat”
为了最安全(断电或任何意外情况)。最好的选择是什么:cp还是mv?
谢谢。我会使用以下组合:
mv file.dat file.dat.previous
cp file.dat.previous file.dat
这样一来,
file.dat.previous
将始终是完整的,因为mv
是原子的。在这里可能没有太大帮助,但是rsync
是这类工作的工具。如果传输中断,它可以从需要的地方重新启动。错误问题的正确答案
如果你想要一个快速的原子移动,那么mv就是你要做的事情,因为Man2 rename
说:
如果newpath已经存在,它将被原子地替换(取决于一些条件;请参阅下面的错误),这样就不会有另一个试图访问newpath的进程发现它丢失的情况
也许更重要的是,mv在很大程度上是一种目录输入操作,因此与任何正常情况下的文件拷贝相比,它的速度非常快
正确问题的正确答案
如果您担心停电或意外的系统关闭,那么:
file.dat
”,您的意思是文件被截断为零,然后再次填充吗?是的,larsman。。。。。(添加点以符合mimimun字符长度)