存在rsync問題。我使用rsync作爲榮耀的cp命令。我在腳本中有以下代碼。無法獲取rsync排除選項以排除目錄
rsync -aL --exclude /path/to/exclude/ --exclude='.*' /source/ /destination
我可以得到的rsync排除任何隱藏的文件。因此'.*'
我無法得到排除目錄排除。我試過用雙引號括起來,用單引號括起'='
。任何幫助將不勝感激。提前致謝。
存在rsync問題。我使用rsync作爲榮耀的cp命令。我在腳本中有以下代碼。無法獲取rsync排除選項以排除目錄
rsync -aL --exclude /path/to/exclude/ --exclude='.*' /source/ /destination
我可以得到的rsync排除任何隱藏的文件。因此'.*'
我無法得到排除目錄排除。我試過用雙引號括起來,用單引號括起'='
。任何幫助將不勝感激。提前致謝。
mkdir -p test/a/b/c/d/e
mkdir -p test/dest
rsync -nvraL test/a test/dest --exclude=a/b/c/d
This works。由於test/a
是同步的基本目錄中,排除模式是通過與a/
開始指定我們展示真實的路徑/排除如果這沒有幫助。
使用-vn運行rsync將列出目錄/文件 - 將模式與rsync打印的格式進行匹配。
謝謝Erik的回覆。你在錢上。奇怪的是,排除選項不採用絕對路徑。 – 2011-03-17 18:53:47
@詹姆斯P. rsync過濾器並不是很直觀......但是,他們的工作,你只需閱讀聯機幫助頁中的「過濾規則」很多次:) – Erik 2011-03-17 18:56:18
繼埃裏克的例子中,你想這樣做:
rsync -nvraL test/a/ test/dest --exclude=/b/c/d
其實,這些都不是完全準確的。
埃裏克是中途說得
作爲試驗/ a是通過用/
開始從,指定的排除模式同步的基本目錄,該排除確實模式的根是test/a
(即模式/some/path
綁定到test/a/some/path
),但這不是整個故事。
從手冊頁:
如果模式與/然後將它錨定在文件的層次結構的特定點開始,否則是對路徑名的末尾匹配。這與正則表達式中的前導^類似。因此,「/ foo」將匹配 「傳輸根目錄」(全局規則)或合併文件目錄(對於每個目錄規則)中名爲「foo」的文件。
我們可以忽略per-directory
位,因爲它不適用於我們這裏。
因此,rsync -nvraL test/a test/dest --exclude=a/b/c/d
將絕對排除test/a/b/c/d
(和子女),但它也將排除test/a/other/place/a/b/c/d
。
rsync -nvraL test/a test/dest --exclude=/b/c/d
,另一方面,將排除僅test/a/b/c/d
(兒童)(test/a
作爲點到/
錨定)。
這就是爲什麼如果您想排除特定路徑被備份的原因,您仍需要錨定初始斜線。這可能看起來像一個小細節,它會是這樣,你的排除模式變得更具體(例如Pictures
與home/daniel/Pictures
),但它可能只是來咬你屁股。
爲清楚起見,我已經試過 '--exclude = /路徑/要/排除/' '--exclude /路徑/到/排除/' '--exclude「/路徑/到/排除/'' '--exclude 「/路徑/到/排除/」' '--exclude = 「/路徑/到/排除/」' '--exclude ='/ path/to/exclude /'' – 2011-03-17 18:35:05
嘗試'--exclude'/ path/to/exclude''沒有尾隨/,rsync與它有一些行爲在某些情況下。 Otherwize,你也可以嘗試'--exclude'/ path/to/exclude/*'' – Aif 2011-03-17 18:43:27
謝謝Aif,我已經試過沒有尾隨/。我忘了將它添加到我的列表中。它的奇怪,我必須失去一些東西。 – 2011-03-17 18:45:53