Согласно этой записи в блоге, можно использовать upstart
в Debian, нестабильном (=sid).
Хрипящий Debian (в настоящее время тестирование, надо надеяться, скоро стабильное), содержит все еще старую версию выскочки и мог поэтому иметь старые проблемы.
Проблема состоит в том, что необходимо заключить имена файлов в кавычки, но Вы не можете сделать всего этого использования строки, потому что оно передаст все имена файлов до rsync как одна длинная строка с кавычками в строке (и не отдельные строковые параметры файла).
Переменный $ является массивом в Bash. Необходимо преобразовать его в новый массив при отправке к rsync.
LOCATION="/media/WD100/"
all_files=()
for file in "$@"; do
all_files+=(":\"$LOCATION$file\"")
done
rsync --progress --inplace --append-verify -ave ssh username@homeserver"${all_files[@]}" .
Использование:
# prepend "$location" to each element of the `"$@"` array:
for file do
set -- "$@" "$location/$file"
shift
done
rsync ... -0 --files-from=<(printf '%s\0' "$@") user@host: .
Или:
rsync ... -0 --files-from=<(
for file do
printf '%s\0' "$location/$file"
done) user@host: .
быть на безопасной стороне.
Это передает список файлов как NUL разграниченный список через именованный канал к rsync
.
"$@"
массив это предназначено, чтобы быть переданным printf
здесь, посмотрите мое редактирование, если Вы хотите предварительно ожидать что-то к каждому элементу того массива. спасибо
– Stéphane Chazelas
18.01.2014, 10:07
Так как Вы копируете все содержание WD100 к текущему местоположению, просто позвольте rsync синхронизировать содержание каталога.
rsync --progress --inplace --append-verify -ave ssh username@homeserver:/media/WD100/ ./
rsync ведет себя по-другому в зависимости от запаздывающей наклонной черты в пути. Если нет никакой наклонной черты, это копирует объект каталога рекурсивно, но если существует наклонная черта, это скопирует содержание каталога рекурсивно.
Вот раздел rsync руководства, которое является подходящим.
Запаздывающая наклонная черта на источнике изменяет это поведение, чтобы не создавать дополнительный уровень каталога в месте назначения. Можно думать о запаздывании / на источнике как значение lqcopy содержание этого directoryrq в противоположность lqcopy каталог namerq, но в обоих случаях атрибуты содержания каталога передаются содержанию каталога на месте назначения. Другими словами, каждая из следующих команд копирует файлы таким же образом, включая их установку атрибутов/dest/foo:
rsync -av /src/foo /dest
rsync -av /src/foo/ /dest/foo