Você pode realizar as duas tarefas no mesmo comando usando o --delete
sinalizador para rsync
.
> ls -1 localdir/
a.foo
b.foo
> ssh remote-host "ls -1 remotedir/"
c.foo
> rsync -a --delete localdir/ remote-host:remotedir/
> ssh remote-host "ls -1 remotedir/"
a.foo
b.foo
A --delete
opção remove arquivos do diretório de destino que não existem na fonte. Existem algumas opções sobre quando os arquivos são excluídos e como lidar com arquivos excluídos.
> man rysnc
...
--delete delete extraneous files from dest dirs
--delete-before receiver deletes before transfer (default)
--delete-during receiver deletes during xfer, not before
--delete-after receiver deletes after transfer, not before
--delete-excluded also delete excluded files from dest dirs
A página do manual também contém este aviso:
Esta opção pode ser perigosa se usada incorretamente! É uma idéia muito boa executar primeiro usando o --dry-run option
( -n
) para ver quais arquivos serão excluídos para garantir que arquivos importantes não estejam listados.