Я смонтировал диск в /data
. Это пусто в данный момент.
Мне нужно rsync
работать mkdir -p
чем mkdir
поскольку файл I должен быть в на уровне 4 т.е. /data/dir_1/dir_2/dir_3/filename
когда dir_1
, dir_2
и dir_3
не делает существует.
Если я создаю необходимые подкаталоги вручную, я могу выполнить rsync, использующий после команды:
rsync -avz source_diretory/ /data/dir_1/dir_2/dir_3
Но если я не создаю подкаталоги, эта команда бросает ошибку:
mkdir: cannot create directory ‘/data/dir_1/dir_2/dir_3/’: No such file or directory
Я пытался гуглить, читая страницу справочника rsync, которую попробовали использовать -r
-R
но не мог заставить его работать.
Может rsync
выполните что-то как mkdir -p
или это из его объема?
rsync
команда не создает дерево каталогов, таким образом, можно сделать, это работает:
mkdir -p /data/dir_1/dir_2/dir_3
прежде rsync
команда или использование - rsync-путь опции:
- rsync-path=PROGRAM Использование это для определения, какая программа должна быть запущена на удаленной машине для запущения rsync.
Ваша команда должна быть:
rsync -avz source_diretory/ --rsync-path="mkdir -p /data/dir_1/dir_2/dir_3 && rsync" /data/dir_1/dir_2/dir_3
Вот полезное ссылка .
Более короткий способ создания путей назначения rsync в Linux — использование специальной переменной '$_'. (Я думаю, но не могу подтвердить, что это то же самое и в OSX).
'$_' содержит значение последнего аргумента предыдущей выполненной команды. Таким образом, на вопрос можно ответить так:
mkdir -p /data/dir_1/dir_2/dir_3 && rsync -avz source_directory/ $_