Eu tenho um diretório de origem que eu estou periodicamente sincronizando com um alvo usando o rsync:
rsync --bwlimit=1600 --recursive --times
--omit-dir-times --copy-links --modify-window=30
--inplace --delete-before --progress --stats --whole-file
--itemize-changes --human-readable ./ /media/0123-4567/
A mídia de destino é apenas o tamanho certo para a sincronização: o destino é uma partição de 1000 MB, a origem tem 990 MB de arquivos; a sincronização da origem para um destino vazio funciona bem.
O problema é quando estou sincronizando com um destino que contém uma versão mais antiga: alguns dos arquivos de origem existentes são menores na versão atual e alguns novos são adicionados. O tamanho total permanece 990 MB; mas o rsync parece escolher uma estratégia "copie primeiro os novos arquivos, depois atualize o existente", a primeira parte não funcionará, porque o espaço que deveria ser liberado com a atualização ainda não está disponível.
version 1 version 2
files not changed: 800 MB 800 MB
new files in v2: 0 MB 80 MB
files changed between versions: 190 MB 110 MB
total 990 MB 990 MB
Em outras palavras, como posso fazer o rsync atualizar o alvo primeiro (o que, no meu caso, liberar espaço), e só então adicionar novos arquivos ?
Até agora, eu invadi isso com duas invocações separadas, diferindo apenas nesse parâmetro:
rsync --existing [...]
rsync --ignore-existing [...]
Isso atualizará os arquivos existentes primeiro e copiará os novos posteriormente; Existe uma maneira de fazer isso com um comando?