Rsync
如何使用 rsync 排除數字目錄?
我知道 rsync 有一個
--exclude
我經常使用的選項。但是我如何指定它應該排除所有“數字”目錄?在下面的目錄列表中,我只想複製它
css
,html
和include
. .. 123414 42344523 345343 2323 css html include
通常我的語法是這樣的
rsync -avz /local/path/ user@server:/remote/path/ --exclude="cache"
我認為它應該看起來像
--exclude="[0-9]*"
,但我認為這行不通。
rsync 的 exclude 選項並不真正支持正則表達式,它更像是一個 shell globbing 模式匹配。
如果這些目錄是相當靜態的,您應該將它們列在一個文件中並使用
--exclude-from=/full/path/to/file/exclude_directories.txt
.更新以提供範例
首先,您只需將目錄放入文件中:
find . -type d -regex '.*/[0-9]*$' -print > /tmp/rsync-dir-exlcusions.txt
要麼
( cat <<EOT 123414 42344523 345343 2323 EOT ) > /tmp/rsync-directory-exclusions.txt
然後你可以做你的 rsync 工作:
rsync -avHp --exclude-from=/tmp/rsync-directory-exclusions.txt /path/to/source/ /path/to/dest/
您只需要一個額外的步驟來設置包含要排除的目錄的文本文件,每行 1 個。
請記住,作業中目錄的路徑是它們與 rsync 如何查看目錄的相對路徑。
您不能在 rsync 的模式語法中說“僅包含數字的名稱”。因此,包括所有包含非數字的名稱並排除其餘名稱。
rsync --include='*[!0-9]*' --exclude='*/' …
另請參閱我的rsync 模式指南。