Rsync

使用文本文件的 Rsync 排除目錄不起作用

  • July 30, 2020

我有以下rsync命令來創建備份,我想從網站中排除記憶體文件夾:

rsync -aAXv --delete --exclude-from='/usr/local/maxicron/rsync/conf/exclude.txt' /home/admin/domains/server.com/public_html /backup/rsync/local

為了展示, 的內容exclude.txt只有一行

/home/admin/domains/server.com/public_html/var/cache/*

該命令通過從 public_html 創建備份來工作,但我仍然得到在備份文件中創建的記憶體文件夾/backup/rsync/local。預期的結果是文件夾記憶體中不應包含任何內容。

我在某處讀到該exclude-from命令將使用源備份中的絕對路徑。所以我也改變了這個排除行

/home/admin/domains/server.com/public_html/var/cache/*

對此

/var/cache/*

或者

var/cache/*

或者

./var/cache/*

但是它們都不起作用,我仍然創建了記憶體文件夾。也沒有錯誤。任何想法?

我不確定為什麼在文本文件中聲明的絕對路徑不起作用。因此,我像這樣添加了另一個名為--relativersync 的選項,並將路徑保留為該文本文件中的相對路徑:

它是這樣工作的:

rsync -aAXv --relative --delete --exclude-from='/usr/local/maxicron/rsync/conf/exclude.txt' /home/admin/domains/server.com/public_html /backup/rsync/local

根據手冊/var/cache/**,如果記憶體文件夾包含子文件夾,兩個星號 ( ) 可能會對您有所幫助:

a*匹配任何路徑組件,但它在斜杠處停止。

用於**匹配任何內容,包括斜線。

引用自:https://unix.stackexchange.com/questions/600527