O GNU cp(1)
tem uma opção de backup:
cp --backup SOURCE [SOURCE...] [DESTINATION]
Isso tem os seguintes efeitos que podem ser controlados com outras opções, conforme descrito na página de manual de cp(1)
:
--backup[=CONTROL] make a backup of each existing destination file -b like --backup but does not accept an argument -S, --suffix=SUFFIX override the usual backup suffix
The backup suffix is
~
, unless set with--suffix
orSIMPLE_BACKUP_SUFFIX
. The version control method may be selected via the--backup
option or through theVERSION_CONTROL
environment variable. Here are the values:
none
,off
: never make backups (even if--backup
is given)numbered
,t
: make numbered backupsexisting
,nil
: numbered if numbered backups exist, simple otherwisesimple
,never
: always make simple backups
Exemplo
cp --backup=existing --suffix=.orig ~/Music/* ~/Videos
Isso copiará todos os arquivos em ~/Music
para ~/Videos
. Se um arquivo com o mesmo nome existir no destino, ele será renomeado anexando .orig
ao seu nome como backup. Se houver um arquivo com o mesmo nome do backup, o backup será renomeado anexando .1
e, se houver, .2
e assim por diante. Só então o arquivo de origem é copiado para o destino.
Se você deseja copiar arquivos em subdiretórios, use recursivamente -R
:
cp -R --backup=existing --suffix=.orig ~/Music ~/Videos