簡體   English   中英

rsync:包含和排除

[英]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手冊頁包含所有詳細信息。 只需在其中查找--filterFILTER 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM