Синтаксис действительно выглядит правильно.Работает в dash / bash.
Вы изменили имя каталога назначения для этого примера?Если ваше настоящее имя содержит, например, пробел, вам лучше заключить в кавычки протестированную переменную.
if [ -d "$destination" ]; then
(Я бы все равно оставил target-directory-check-check, поскольку rsync создаст каталог, если его нет.на том же компьютере, а не по сети, я бы также оставил параметр сжатия -z в rsync.)
Обновление:
Это работает для вас?(Вам придется изменить пути)
#!/bin/bash
source="/tmp/bar/"
destination="/tmp/baz/"
test -d "$source" || {
echo "$source does not exist"
exit
}
rsync -ra \
--delete \
--ignore-existing --ignore-times --size-only \
--stats --progress "$source" "$destination"
if [ "$?" -gt 0 ]; then
echo "Failure exit value: $?"
fi