2012-02-11 4 views
26

Пример:Как заставить Rsync для создания папки назначения,

rsync /tmp/fol1/fol2/fol3/foln [email protected]:/tmp/fol1/fol2/fol3/foln 

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

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

+0

Тот же вопрос здесь: [rsync: как его настроить для создания целевого каталога на сервере?] (Http://stackoverflow.com/questions/1636889/rsync-how-can-i-configure-it-to- create-target-directory-on-server) – mivk

ответ

1

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

ssh [email protected] 
mkdir -p tmp/fol1 
rsync avz /tmp/fol1/fol2/fol3/foln [email protected]:/tmp/fol1/fol2/fol3/foln 
fi 
14

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

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

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

22

Я столкнулся с тем же вопросом сегодня и нашел решение here.

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

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 для более подробной информации.

+1

Это очень приятное решение. Но он не работает с портом Cygwin rsync :( – greydet

Смежные вопросы