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/

這些都不是我想要的。

  1. 是否有rsync可以達到預期結果的標誌?
  2. 如果沒有,有人能想到簡單的解決方案嗎?

答案1

對於 --relative 你必須在來源目錄路徑中插入一個點:

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

請參閱手冊:

-R, --相對

[...]

也可以限製作為指定的每個路徑的隱含目錄發送的路徑資訊量。使用發送端的現代 rsync(從 2.6.7 開始),您可以在來源路徑中插入一個點和一個斜杠,如下所示:

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

答案2

rsync如果您要從v2.6.7 之前的版本中提取文件,您可以利用rsync--rsync-path選項來執行此操作,該選項可讓您指定在遠端位置可以找到 rsync 命令。但是,您可以先使用它來更改目錄。簡單地,

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

相關內容