Rsync, --delete não remove arquivos no destino

0

Eu corro um servidor de jogo com um plug-in que coloca backups de servidor por hora em / backups. Após 1 dia, o plug-in salva 2 backups / dia. Eu quero sincronizar este diretório de backup para um servidor remoto com arquivos com mais de 2 dias para que ele não sincronize arquivos que eventualmente serão excluídos até o final do dia. Para fazer isso, eu corro este script:

find /path/backups/ -type f -mtime +2 -exec rsync -vPhd -e "ssh -p 512" --ignore-existing --delete {} me@host:/remote/path/server-backups/ \;

No entanto, --delete na verdade não exclui arquivos antigos no host de destino. Isso é por causa do mtime? Existe uma solução alternativa?

    
por Ayys 09.01.2017 / 14:31

2 respostas

0

O exec em sua localização irá rsync cada arquivo separadamente, porque find retornará 1 arquivo de cada vez. Portanto, seu --delete não funcionará porque sua linha é basicamente um scp

O que você poderia fazer é

find /path/backups/ -type f -mtime -2 -printf '%P\n' | rsync -avz --progress --delete --exclude-from=- -e "ssh -p 512" /path/backups/ me@host:/remote/path/server-backups/

Isso rsync a pasta backups to server-backups , mas exclui arquivos com menos de 2 dias. Você pode colocar um --dry-run no rsync para testá-lo primeiro.

    
por Carl 09.01.2017 / 15:58
0

Tente usar --recursivo

Deveria ser assim:

find /path/backups/ -type f -mtime +2 -exec rsync -vPhd -e "ssh -p 512" --ignore-existing --recursive --delete {} me@host:/remote/path/server-backups/ \; 
    
por ZeroFirst 09.01.2017 / 14:37