rsync は相対パスの一部を使用します。

rsync は相対パスの一部を使用します。

ファイアウォールの背後にあるローカルコンピュータにディレクトリがあるとします。

local:/home/meee/workdir/

そしてファイアウォールの反対側にあるリモートシステムのディレクトリは次のとおりです。

remote:/a1/a2/.../aN/one/two/
remote:/a1/a2/.../aN/one/dont-copy-me{1,2,3,...}/

... N>= 0 にする必要があります。

私のローカルコンピュータではrsyncone/two/

local:/home/meee/workdir/one/two/

を使用すると、rsync remote:/a1/a2/.../aN/one/two/ ~/workdir/次のように終了します。

local:/home/meee/workdir/two/

を使用すると、rsync --relative remote:/a1/a2/.../aN/one/two/ ~/workdir/次のように終了します。

local:/home/meee/workdir/a1/a2/.../aN/one/two/

このうち私が望むものは何もありません。

  1. rsync希望の結果を得るためのフラグがありますか?
  2. そうでなければ、誰でも簡単な解決策を考えることができますか?

答え1

--relativeの場合は、ソースディレクトリパスにドットを挿入する必要があります。

rsync -av --relative remote:/a1/a2/.../aN/./one/two ~/workdir/

ドキュメントを参照してください。

-R、--相対的

[...]

また、指定されたパスごとに暗黙的なディレクトリに送信されるパス情報の量を制限することもできます。送信側(2.6.7ベース)の最新のrsyncを使用すると、次のようにソースパスにドットとスラッシュを挿入できます。

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

答え2

rsyncv2.6.7より前のバージョンからファイルを抽出する場合は、rsyncコマンドを見つけることができるリモートロケーションを指定できるように設計されたオプションをrsync使用して抽出できます。--rsync-pathただし、これを使用して最初にディレクトリを変更できます。ただ、

rsync -aR --rsync-path='cd /a1/a2/.../aN/ && rsync' remote:one/two/ ~/workdir/

関連情報