Se você estiver em um Linux não integrado, ou mais geralmente, se o comando cp
for do GNU coreutils, você poderá usar cp -u
para copiar somente os arquivos mais recentes que o destino. Se você ainda não tem arquivos em /root/test/backup_170213_0328
que são mais recentes que os arquivos em /root/test/BACKUP/
, isso é equivalente ao que você está fazendo agora, exceto que os arquivos não serão copiados duas vezes.
Você também deve passar a opção -p
para cp
. Na maioria das vezes, e especialmente ao fazer backups, você deve preservar as permissões. E você deve passar -d
se quiser copiar links simbólicos como tal, em vez de copiar seus alvos. -rdp
pode ser abreviado como -a
.
find /root/test/BACKUP/ -newer /root/test/BACKUP//reference -exec cp -a {} /root/test/backup_170213_0328 ';'
No entanto, não está claro para mim por que você deseja copiar uma árvore de diretórios inteira se a raiz tiver sido modificada. Por exemplo, criar um arquivo diretamente sob /root/test/BACKUP
faria com que toda a árvore fosse copiada. Você provavelmente não deve copiar diretórios.
find /root/test/BACKUP/ ! -type d -newer /root/test/BACKUP//reference -exec cp -RPp {} /root/test/backup_170213_0328 ';'
Além disso, todos os arquivos são copiados no diretório raiz, em vez de reproduzir a árvore de diretórios. Você pode consertar isso usando uma ferramenta cuja finalidade principal é copiar as árvores de diretórios, em vez de uma ferramenta cuja finalidade principal é copiar arquivos individuais. Por exemplo, com pax :
find /root/test/BACKUP/ ! -type d -newer /root/test/BACKUP//reference -exec pax -rw -pe {} /root/test/backup_170213_0328 ';'
Ou com o rsync:
find /root/test/BACKUP/ ! -type d -newer /root/test/BACKUP//reference -exec rsync -a {} /root/test/backup_170213_0328 ';'
Mas se você quiser fazer backups incrementais, eu suspeito que o que você realmente quer é o --link-dest
do rsync. Apontar para o seu backup anterior, e ele fará um backup onde os arquivos que já existiam estão com hard-link para o backup anterior.
rsync -a --link-dest=/root/test/backup_170213_0228 /root/test/BACKUP /root/test/backup_170213_0328