Ви можете виконати обидва завдання в одній команді, використовуючи --delete
прапор до 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
Ця --delete
опція видаляє файли з каталогу призначення, які не існують у джерелі. Є кілька варіантів, коли файли видаляються та як обробляти виключені файли.
> 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
Сторінка man також містить це попередження:
Цей варіант може бути небезпечним при неправильному використанні! Дуже добре запустити спочатку за допомогою --dry-run option
( -n
), щоб побачити, які файли буде видалено, щоб переконатися, що важливі файли не перераховані.