Как заставить rsync создать папку назначения - PullRequest
31 голосов
/ 11 февраля 2012

Пример:

rsync /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln

Моя основная проблема заключается в том, что папка / tmp / fol1 не существует на удаленной машине.

Какие аргументы можно использовать, чтобы заставить rsync создать это дерево?

Ответы [ 3 ]

24 голосов
/ 04 октября 2013

Я столкнулся с той же проблемой сегодня и нашел решение здесь .

Вы можете сделать:

rsync -avR foo/bar/baz.c remote:/tmp/

или:

rsync -avR somedir/./foo/bar/baz.c remote:/tmp/

чтобы создать /tmp/foo/bar/baz.c на удаленном компьютере.

Подробнее см. --relative/-R раздел man rsync.

16 голосов
/ 14 февраля 2013

Один прием для этого - использовать параметр --rsync-path со следующим значением:

--rsync-path="mkdir -p /tmp/fol1 && rsync"

С помощью --rsync-path вы можете указать, какая программа будет использоваться для запуска rsync вудаленный компьютер и запускается с помощью оболочки.

1 голос
/ 08 июня 2012

Вы можете сделать это через bash и открыть ssh-туннель, чтобы создать структуру файла, которая вам нужна, и затем выполнить rsync данных. Будут ли эти временные папки меняться при каждой синхронизации? например, это для каждого дня недели?

ssh user@address
mkdir -p tmp/fol1
rsync avz /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln
fi
...