Linux cp命令,临时命名文件,直到复制完成为止,然后将整个文件复制到目标位置

问题描述

有一种方法,当我们在Linux上使用copy命令时:

$ cp ../dir_a/a.txt ../dir_b/a.txt

要在复制开始复制时将文件a.txt命名为a.tmp.txt,然后在复制所有文件时将其自动重命名为a.txt原始名称我有一个Java程序,在完全从共享复制到共享之前,它消耗文件的速度太快,因此请注意消耗所有文件

$ cp ../dir_a/a.txt ../dir_b/a.txt
$ ls ../dir_b/ #copying in progress
$ a.tmp.txt
$ ls ../dir_b/ #copying done
$ a.txt

谢谢

解决方法

复制到临时名称,然后重命名。重命名是原子的,因此不会有任何部分内容。

cp ../dir_a/a.txt ../dir_b/a.txt.temp
mv ../dir_b/a.txt.temp ../dir_b/a.txt