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。我的本地機器有一個使用
rsync
. 我希望這個腳本只one/two/
從遠端機器複製一個變數但已知的“N”,這樣我最終得到: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
可以達到預期結果的標誌?- 如果沒有,誰能想到一個簡單的解決方案?
對於 – relative 你必須在源目錄路徑中插入一個點:
rsync -av --relative remote:/a1/a2/.../aN/./one/two ~/workdir/
參見手冊:
-R,–相對
$$ … $$ 對於您指定的每個路徑,還可以限製作為隱含目錄發送的路徑資訊量。在發送端使用現代 rsync(從 2.6.7 開始),您可以在源路徑中插入一個點和一個斜杠,如下所示:
rsync -avR /foo/./bar/baz.c remote:/tmp/
如果您從
rsync
v2.6.7 之前的版本中提取文件,您可以利用rsync
’s--rsync-path
選項來執行此操作,這意味著您可以指定在遠端可以找到 rsync 命令的位置。但是,您可以先使用它來更改目錄。簡單地,rsync -aR --rsync-path='cd /a1/a2/.../aN/ && rsync' remote:one/two/ ~/workdir/