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/ $_

Другие вопросы по тегам