Описание тега nbd
Поскольку rsync для версии 3.1.0, а --дистанционный-опция
аргумент (или его краткая форма -М
) можно передавать аргументы через сервер. Например, дать клиенту команду:
$ при помощи rsync -АВ -м-customarg1=значение1 -м --customarg2=значение2 файл1 файл2 user@server:some/path
в результате сервер команды получают аргументы префиксом с -М
, но без -м
, в SSH_ORIGINAL_COMMAND
переменной. Как это:
по rsync --сервер -vnlogDtpre.iLsfxC --customarg1=значение1 --customarg2=значение1 . некоторые/путь
Пользовательские аргументы должны быть обработаны и удалены из командной строки перед вызовом на стороне сервера при помощи rsync (в противном случае он завершается с ошибкой, потому что он их не распознает). Один из способов сделать это с матча регулярного выражения:
rsync_cmd="$SSH_ORIGINAL_COMMAND"
[[ "$rsync_cmd" =~ --customarg1=([а-Яа-З0-9]+) ]] && customarg1=${BASH_REMATCH[1]}
[[ "$rsync_cmd" =~ --customarg2=([а-Яа-З0-9]+) ]] && customarg2=${BASH_REMATCH[1]}
rsync_cmd=$(СЭД -ре с/--(customarg1|customarg2)=[а-Яа-З0-9]+//г' <<< $rsync_cmd)
(пример матч регулярное выражение позволяет параметр буквенно-цифровой)
Одно предостережение к этому является то, что он не работает, если к rsync клиент получает -С
(или --защищать-аргументы
) вариант, потому что это приводит аргументы, передаваемые между внутренними синхронизировать клиент и сервер - они не подвергаются оболочки, не включенными в $SSH_ORIGINAL_COMMAND
, и поэтому не может быть манипулировать.
Альтернативным методом является использование --использование rsync-путь
, чтобы пройти пользовательских аргументов. Этот метод работает со старыми версиями ПО rsync, что отсутствие -М
, а также - защитить-аргументы
вариант:
$ по rsync --по rsync-пути='по rsync --customarg1=--customarg2 значение1=значение2' -АВ файл1 файл2 user@server:some/path