rsync сгенерировал mkdir: невозможно создать каталог '/data/dir_1/dir_2/dir_3/': такого файла или каталога нет
Я установил диск в /data
, Это пусто в данный момент.
я нуждаюсь rsync
выполнять mkdir -p
чем mkdir
как файл, который я должен быть на уровне 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
Я попробовал Google, читая справочную страницу Rsync, пытался использовать -r
-R
но не мог заставить это работать.
Можно rsync
выполнить что-то вроде mkdir -p
или это выходит за рамки?
1 ответ
rsync
Команда не создает дерево каталогов, поэтому вы можете сделать это, выполнив:
mkdir -p /data/dir_1/dir_2/dir_3
до rsync
введите команду или используйте параметры --rsync-path:
--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/ $_