如何在覆盖之前备份我正在复制的所有文件?

如何在覆盖之前备份我正在复制的所有文件?

我有一个这样的文件夹:

./folder-a/index.html
./folder-b/index.html
./folder-c/subdir/index.html
./new-content/folder-a/index.html
./new-content/folder-b/index.html
./new-content/folder-c/subdir/index.html

new-content文件夹包含我更新的持续更新的内容。当我想更新我的内容时,我将复制它们以覆盖现有的内容,如下所示:

\cp -rf new-content/* ./

但是如何为将要被覆盖的文件设置备份呢?

有什么简单的方法可以实现这个吗?

答案1

来自man cp(GNU 版本,在 Linux 和 Cygwin 上找到)

--备份[=控制]

备份每个现有的目标文件

-b 类似 --backup 但不接受参数

例子

touch 1 2
cp -bv 2 1
‘2’ -> ‘1’ (backup: ‘1~’)

请注意,这不会检查现有的备份文件,即如果1~存在,它将被覆盖。使用长版本可以避免这种情况。例如

cp -v --backup=numbered 2 1
‘2’ -> ‘1’ (backup: ‘1.~1~’)
cp -v --backup=numbered 2 1
‘2’ -> ‘1’ (backup: ‘1.~2~’)
cp -v --backup=numbered 2 1
‘2’ -> ‘1’ (backup: ‘1.~3~’)

相关内容