ファイアウォールの背後にあるローカルコンピュータにディレクトリがあるとします。
local:/home/meee/workdir/
そしてファイアウォールの反対側にあるリモートシステムのディレクトリは次のとおりです。
remote:/a1/a2/.../aN/one/two/
remote:/a1/a2/.../aN/one/dont-copy-me{1,2,3,...}/
... N
>= 0 にする必要があります。
私のローカルコンピュータではrsync
。one/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/
このうち私が望むものは何もありません。
rsync
希望の結果を得るためのフラグがありますか?- そうでなければ、誰でも簡単な解決策を考えることができますか?
答え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
rsync
v2.6.7より前のバージョンからファイルを抽出する場合は、rsyncコマンドを見つけることができるリモートロケーションを指定できるように設計されたオプションをrsync
使用して抽出できます。--rsync-path
ただし、これを使用して最初にディレクトリを変更できます。ただ、
rsync -aR --rsync-path='cd /a1/a2/.../aN/ && rsync' remote:one/two/ ~/workdir/