web-dev-qa-db-ja.com

rsyncに宛先フォルダーを作成させる方法

例:

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

私の主な問題は、フォルダー/ tmp/fol1がリモートマシンに存在しないことです。

Rsyncにこのツリーを作成させるためにどの引数を使用できますか?

31
CrazySquirrel

今日同じ問題にぶつかり、解決策を見つけました 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 詳細については。

24

そのための1つの秘isは、--rsync-pathパラメータと次の値:

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

--rsync-pathを使用すると、リモートマシンでrsyncを起動するために使用するプログラムを指定し、シェルの助けを借りて実行できます。

16
barracel

これを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
1
Paperghost