#rsync
#rsync
Вопрос:
Я хотел бы использовать --delete
возможность rsync
удаления всего в каталоге назначения.
То, что я сейчас делаю, это:
rsync -zavr --delete ./input_dir_1/ user@host:dest_dir/
rsync -zavr ./input_dir_2/ user@host:dest_dir/
rsync -zavr ./input_dir_3/ user@host:dest_dir/
Но для того, чтобы использовать rsync
в цикле, есть ли способ сначала не выбирать входной файл (и использовать --delete
, чтобы просто удалить все)? В идеале я хотел бы что-то вроде:
# Delete everything on destination dir
rsync -zavr --delete /dev/null user@host:dest_dir/
# Now iterate over all input directories (could use a for loop)
rsync -zavr ./input_dir_1/ user@host:dest_dir/
rsync -zavr ./input_dir_2/ user@host:dest_dir/
rsync -zavr ./input_dir_3/ user@host:dest_dir/
Ответ №1:
- rsync использует ssh. Почему бы не удалить напрямую? (Будьте осторожны, чтобы не удалить неправильный каталог!)
ssh user@host 'rm -rf dest_dir; mkdir dest_dir'
- Вы можете использовать функцию исключения rsync:
rsync -r --exclude='*' --delete-excluded / user@host:dest_dir/
Для источника будет работать любая папка.