O rsync (verificado com a versão 3.0.9) possui uma opção chamada --remove-source-files
, que faz o que diz. Se você quiser apenas excluir os arquivos transferidos e não transferir arquivos adicionais que ainda não tenham sido transferidos, será necessário usar adicionalmente a opção '--existindo' '.
Infelizmente, parece que o rsync não mostra quais arquivos ele está excluindo, mesmo se as opções --verbose --itemize-changes --stats
forem usadas.
Exemplo
# create source and target dirs
mkdir /tmp/source
mkdir /tmp/target
# create a test file in source
touch /tmp/source/test
# rsync source and target
rsync --archive --itemize-changes --verbose --stats /tmp/source/ /tmp/target
# verify that test has been copied to target
[ -f /tmp/target/test ] && echo "Found" || echo "Not found"
# create another file in source
touch /tmp/source/test2
# delete files on source which are already existing on target
rsync --archive --itemize-changes --verbose --stats --remove-source-files --existing /tmp/source/ /tmp/target
# verify that test has been deleted on source
[ -f /tmp/source/test ] && echo "Found" || echo "Not found"
# verify that test2 still exists on source and was not transferred to target
[ -f /tmp/source/test2 ] && echo "Found" || echo "Not found"
[ -f /tmp/target/test2 ] && echo "Found" || echo "Not found"