De man cp
(a versão GNU, encontrada no Linux e no Cygwin)
--backup[=CONTROL]
make a backup of each existing destination file
-b like --backup but does not accept an argument
Exemplo
touch 1 2
cp -bv 2 1
‘2’ -> ‘1’ (backup: ‘1~’)
Observe que isso não verifica os arquivos de backup existentes, ou seja, se 1~
existir, ele será substituído. Usando a versão longa, você pode evitar isso. Por exemplo,
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~’)