Este é um trabalho para o rsync . Não há nenhum benefício em fazer isso manualmente com um loop de shell, a menos que você queira mover o arquivo em vez de copiá-lo.
rsync -a /images/ /images2/
(Anote a barra no final em images
, caso contrário, copie para /images2/images
.)
Se houver imagens com o mesmo nome nos dois diretórios, o comando acima sobrescreverá /images2/SOMEPATH/SOMEFILE
com /images/SOMEPATH/SOMEFILE
. Se você quiser substituir apenas arquivos mais antigos, adicione a opção -u
. Se você quiser manter sempre a versão em /images2
, adicione a opção --ignore-existing
.
Se você quiser mover os arquivos de /images
, com rsync, poderá passar a opção --remove-source-files
. Em seguida, o rsync copia todos os arquivos por vez e remove cada arquivo quando é feito. Isso é muito mais lento do que mover se os diretórios de origem e destino estiverem no mesmo sistema de arquivos.