Como limpar após falha no rsync?

12

Eu matei um processo local "rsync -ah".
Deixou arquivos indesejados como ".abc.vmdk.zxivMN" no diretório de destino.
Os arquivos indesejados não são excluídos em execuções consecutivas "rsync -ah".

Detalhes:
Executei o diff nas duas pastas que estava sincronizando e relatou: "Somente em / mnt / archive1 / documents / general: .abc.vmdk.zxivMN"

Qual é a melhor maneira de limpar os arquivos rsync temporários?

user27465
fonte

Respostas:

12

Diga rsyncpara excluir arquivos que não estão na fonte, com --delete-duringou --delete-after. Tenha cuidado e use esta opção apenas se você não tiver arquivos legítimos no destino que não estejam na origem.

Veja man rsync.

Claro, você sempre pode excluir manualmente os arquivos detectados com diff...

Sven
fonte
Isso não é bom quando você está fazendo uma cópia e não uma mudança.
Sridhar Sarnobat
6

Eu faço isso usando

find -type f -iname ".*.*.??????" -ls

para teste e

find -type f -iname ".*.*.??????" -delete

para claro

Andrés R. Gard
fonte
-1

Eu encontrei o seguinte comando funcionou para mim ao tentar excluir arquivos temporários deixados para trás pelo rsync após uma falha na transferência.

find vod-content/ -path '*/.*' -print0 | xargs -0 -r rm -v

O que isso faz é encontrar todos os arquivos "ocultos" (arquivos que começam com o caracter ".") E os passa para o comando "rm" para excluí-los.

Um problema óbvio conhecido sobre o código acima é que, se o seu conteúdo contiver arquivos ocultos, esse comando os excluirá também.

arrayown
fonte
-2

Estou procurando uma solução melhor, mas a única que consigo pensar é mover todos os emptyarquivos começando com a ., e com mais dois pontos neles, para uma pasta de lixo (usar rmé um pouco arriscado):

find -type f -empty -iname ".*.*.*" | xargs -n 1 -d'\n' mv -v -t /tmp/

De maneira alguma à prova de falhas.

Sridhar Sarnobat
fonte
Downvoted sem nenhuma explicação
Sridhar Sarnobat