[英]rsync: Include and Exclude
假設以下結構,需要 rsync'ed:
/Data
/subDir1
A.html
/subDir1a
AA.html
/subDir2
B.html
1.txt
2.txt
2.txt~
rsync -aAHSXrv --include-from=$InExCL $Source $Destination
現在我想使用 + 和 - 在 InExCl.list 中插入和排除內容:這很好用,文件 2.txt 和 2.txt~ 顯示在備份中,1.txt 沒有:
+ 2.*
- *.txt
對於子目錄,我嘗試了類似的(首先是加號,減號)以排除 subDir1 但將 subDir1a 包含在 AA.html 中,將 subDir2 包含在 B.txt 中:
+ subDir1a/*
- subDir1/*
結果:subDir2 很好,subDi1 顯示為空,甚至沒有提到 subDir1a。
任何人都給我建議,這怎么能做對? 謝謝你。
我能想到的唯一方法是在Data/subDir1/
中放置一個.rsync-filter
文件,其中包含以下三行。
include /*/
exclude /*
exclude /.rsync-filter
第一個將包含此文件中的所有目錄,而第二個將排除所有內容。 順序在這里很重要,因為會應用匹配的第一個規則。 所以第一行確保處理所有目錄,即使我們希望排除Data/subDir1/
所有非目錄文件。
rsync手冊頁包含所有詳細信息。 只需在其中查找--filter和FILTER RULES 即可。
Data
├── 1.txt
├── 2.txt
├── 3.txt
├── subDir1
│ ├── A.html
│ ├── .rsync-filter
│ └── subDir1a
│ └── AA.html
└── subDir2
└── B.html
命令后rsync -rvt -F Data/ dest
選項-F
使rsync考慮每個目錄中存在的.rsync-filter文件。
dest 如下所示。
dest
├── 1.txt
├── 2.txt
├── 3.txt
├── subDir1
│ └── subDir1a
│ └── AA.html
└── subDir2
└── B.html
謝謝錢德拉,
剛才我找到了另一個似乎適用於目錄的解決方案:
+ subDir1/subDir1a
- subDir1/*
關於子目錄,您的結果(和所需的)已實現
├── subDir1
│ └── subDir1a
│ └── AA.html
└── subDir2
└── B.html
你怎么認為?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.