2012-02-11 1 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

それを行うための1つのトリックは、以下の値で--rsync-pathパラメータを使用することです:でのrsyncを開始するために使用されようとしているものをプログラムに指定できる--rsyncパスで

--rsync-path="mkdir -p /tmp/fol1 && 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

これはとても良い解決策です。しかし、それはrsyncのCygwinポートでは動作しません: – greydet

関連する問題