- --include 指定要傳輸?shù)臄?shù)據(jù),一般結(jié)合 --exclude 一起用。
- 4-10.10 內(nèi)容:
通過 rsync -av --include --exclude 學(xué)習(xí)傳輸指定的數(shù)據(jù)。 - 操作步驟:
1、創(chuàng)建一些目錄及文件用作測(cè)試。創(chuàng)建 backups_include 作為備份目錄。源目錄延用上一節(jié) 4-10.9 的 SRC
[root@localhost test]# mkdir backups_include ## 新建 backups_include 備份目錄
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_include
└── SRC ## 源目錄
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 7 files
[root@localhost test]#
2、--include 一般結(jié)合 --exclude 一起用。--include 的作用是指定需要傳輸?shù)膬?nèi)容。但是單純的用 --include 并不能如我所愿的結(jié)果。因?yàn)閱渭兊?--include 沒有起到只傳輸我想要的文件,而是把源目錄的所有數(shù)據(jù)傳輸?shù)侥繕?biāo)目錄。
--include 和 --exclude 搭檔,--exclude 是起到排除的功能, 也就是當(dāng) --include 指定了我們所需要傳輸?shù)臄?shù)據(jù)時(shí),通過 --exclude 排除其他內(nèi)容的傳輸。這樣就可以完成指定什么數(shù)據(jù)需要傳輸,其他不在范圍內(nèi)的數(shù)據(jù)都不傳輸。
下面是單純的用 --include 指定傳輸 SRC 目錄下所有結(jié)尾為 .txt 的文件效果。 單純的用 --include 沒有起到只傳輸我想要的文件,而是把源目錄的所有數(shù)據(jù)傳輸?shù)侥繕?biāo)目錄。
## 通過 tree 查看現(xiàn)在的 test 目錄結(jié)構(gòu), backups_include 目錄沒有任何數(shù)據(jù)
[root@localhost test]# tree
.
├── backups_include
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 7 files
## --include 指定傳輸 SRC目錄下所有結(jié)尾為 .txt 的文件到 backups_include 目錄
[root@localhost test]# rsync -av --include='*.txt' SRC/ backups_include/
sending incremental file list ## 從傳輸列表看到結(jié)果不似如期只傳輸 SRC目錄下所有結(jié)尾為 .txt 的文件。
## 而是把 SRC目錄下所有的數(shù)據(jù)都傳輸?shù)?backups_include 目錄
./
file1.txt
file3.txt
file4.txt
directory/
directory/file2.txt
office_directory/
office_directory/docxfile.docx
office_directory/elsxfile.elsx
office_directory/pptxfile.pptx
sent 618 bytes received 164 bytes 1,564.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_include ## backups_include 的內(nèi)容就是 SRC 的內(nèi)容
│ ├── directory
│ │ └── file2.txt
│ ├── file1.txt
│ ├── file3.txt
│ ├── file4.txt
│ └── office_directory
│ ├── docxfile.docx
│ ├── elsxfile.elsx
│ └── pptxfile.pptx
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
6 directories, 14 files
[root@localhost test]#
- 想要實(shí)現(xiàn)只傳輸 SRC 目錄下的所有 *.txt 到 backups_include 目錄,需要 --exclude 作過濾條件。沿用上面的例子:
## 現(xiàn)在的目錄的結(jié)構(gòu),backups_include 的目錄沒有數(shù)據(jù)
[root@localhost test]# tree
.
├── backups_include
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 7 files
## 沿用上面的命令加上 --exclude=' * ' 參數(shù)。
## 意思是指定傳輸 SRC目錄下所有結(jié)尾為 .txt 的文件到 backups_include目錄下。
## --exclude=' * ' 參數(shù)在這里的作用是除了 --include='*.txt' 指定所有 .txt 結(jié)尾的文件,其他都排除掉。
## 發(fā)送方:SRC/ ,接收方:backups_include/ ,
## SRC 目錄下的所有 .txt 文件傳輸?shù)?backups_include。
[root@localhost test]# rsync -av --include='*.txt' --exclude='*' SRC/ backups_include/
sending incremental file list ## 從傳輸列表看出只傳輸了三個(gè) .txt 結(jié)尾的文件,
## 這三個(gè) .txt 文件就是 SRC 目錄下的 .txt文件
./
file1.txt
file3.txt
file4.txt
sent 234 bytes received 76 bytes 620.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_include
│ ├── file1.txt
│ ├── file3.txt
│ └── file4.txt
└── SRC
├── directory
│ └── file2.txt
├── file1.txt ## {...
├── file3.txt ## SRC 目錄下的 .txt 文件傳輸?shù)?backups_include目錄
├── file4.txt ## ...}
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 10 files
[root@localhost test]#
- 仔細(xì)觀察 file1.txt、file3.txt 和 file4.txt 都是 SRC 目錄下的一級(jí)目錄文件。它們能夠順利通過 --include=' * .txt' 傳輸?shù)?backups_include 目錄。而,實(shí)際上 SRC 目錄下還有一個(gè) file2.txt。它在 directory 目錄下,directory 目錄是 SRC 的子目錄,也就是 rsync -av --include=' * .txt' --exclude= '* ' SRC/ backups_include/ ,這條命令只能傳輸 SRC/ 下所有的 .txt 文件,子目錄下的 .txt 文件沒有傳輸?shù)?。我們需要做更多的測(cè)試去實(shí)現(xiàn)不同的傳輸效果。
但,通過上面的實(shí)現(xiàn),至少已證明了 --include 和 --exclude 搭檔可以實(shí)現(xiàn)指定數(shù)據(jù)的傳輸。
3、傳輸 office_directory 目錄及文件。
- 方法一:根據(jù)條件進(jìn)行傳輸( --include、--exclude 視為條件)
- 分析思路:
- 1、當(dāng)前路徑是 root 下的 test目錄。首先,要了解 test 目錄的結(jié)構(gòu)才可以知道 office_directory 目錄的路徑。從目錄結(jié)構(gòu)可以看到 office_directory 目錄在 SRC 目錄下。office_directory 目錄是 SRC 的子目錄。
[root@localhost ~]# cd test
[root@localhost test]#
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_include
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory ## office_directory 目錄是 SRC 的子目錄
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 7 files
[root@localhost test]#
- 2:梳理需要指定傳輸?shù)膬?nèi)容。題意要求傳輸 office_directory 目錄及文件。
- 3:根據(jù)題意整理?xiàng)l件。傳輸 office_directory 目錄:--include='office_directory/',傳輸 office_directory 目錄下的文件 --include='office_directory/*'
- 4:當(dāng)傳輸完指定傳輸?shù)膬?nèi)容后,其他內(nèi)容不需要傳輸。需要用
--exclude=' * ' 排除所有。這樣就只會(huì)傳輸指定的內(nèi)容,其他沒有指定的內(nèi)容不會(huì)傳輸。 - 5:梳理源目錄路徑,也就是輸出端。這里稱為 ‘ 路徑1 ’。當(dāng)前操作的路徑是 root 下的 test 目錄。test 目錄下包含 backups_include 和 SRC。SRC 目錄下就是 office_directory 目錄。我們需要輸出的是 office_directory 目錄及文件,所以源目錄定位在上級(jí)目錄 SRC/。
- 6:目標(biāo)目錄,也就是接收端。這里稱為 ‘ 路徑2 ’。backups_include 目錄。
- 7:語句整合,根據(jù)以上分析得出語句結(jié)構(gòu)就是:
命令 -參數(shù) --條件1 --條件2 -- 條件3 路徑1 路徑2
rsync -av --include='office_directory/' --include='office_directory/*' --exclude=' * ' SRC/ backups_include/ - 8:輸出情況如下:
## --include='office_directory/':傳輸 office_directory/ 目錄
## --include='office_directory/*':傳輸 office_directory/ 目錄下的文件和目錄
## --exclude='*':不傳輸所有文件
## SRC/:源路徑
## backups_include/:目標(biāo)路徑
[root@localhost test]# rsync -av --include='office_directory/' --include='office_directory/*' --exclude='*' SRC/ backups_include/
sending incremental file list ## 從傳輸列表看出只傳輸了 --include 指定的條件。
office_directory/ ## office_directory 目錄本身
office_directory/docxfile.docx ## office_directory 目錄下的文件
office_directory/elsxfile.elsx
office_directory/pptxfile.pptx
sent 296 bytes received 77 bytes 746.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_include ## office_directory 目錄及文件傳輸?shù)?backups_include
│ └── office_directory
│ ├── docxfile.docx
│ ├── elsxfile.elsx
│ └── pptxfile.pptx
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
5 directories, 10 files
[root@localhost test]#
-
9、命令圖解:
10、 rsync -av --include='office_directory/ ' --include='office_directory/ * ' --exclude=' * ' SRC/ backups_include/
語句大意:除了傳輸 SRC 目錄下的 office_directory 目錄及文件到 backups_include 目錄,其他不傳輸。11、注意事項(xiàng):傳輸目錄及文件,需要先 --include 指定傳輸目錄,再 --include 指定傳輸目錄下的文件。如:需要傳輸 office_directory 目錄及文件,就需要先 --include='office_directory/' 指定傳輸目錄,后傳輸目錄下的所有文件 --include='office_directory/ * '。
如果不傳輸目錄,直接傳輸目錄下的所有文件 --include='office_directory/*' ,是不會(huì)傳輸成功的。
## 直接傳輸目錄下的所有文件 --include='office_directory/*'
[root@localhost test]# rsync -av --include='office_directory/*' --exclude='*' SRC/ backups_include/
sending incremental file list ## 傳輸列表沒有任何的文件
./
sent 43 bytes received 19 bytes 124.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_include ## backups_include目錄不似預(yù)期的接收到 office_directory的所有文件
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 7 files
[root@localhost test]#
- 另外需要注意的是層級(jí)關(guān)系。傳輸?shù)哪夸浕蛭募?,路? (源目錄)定位為上一級(jí)目錄。
- 方法二:設(shè)置對(duì)應(yīng)的路徑配合條件進(jìn)行傳輸
已知需要傳輸某路徑的所有數(shù)據(jù),可以寫成 --include=' * ',傳輸所有數(shù)據(jù)的意思,另一個(gè)排除參數(shù)也是寫成 --exclude=' * ' ,也就是排除所有數(shù)據(jù)。后面用源路徑來控制發(fā)送端的內(nèi)容范圍。
## --include=' * ' 保留所有內(nèi)容
## --exclude=' * ' 刪除所有內(nèi)容
## 傳輸 SRC目錄下的 office_directory目錄及內(nèi)容到 backups_include,SRC其他內(nèi)容除外,不傳輸。
## 源目錄(路徑1)寫成 具體的目錄。也就是 SRC/office_directory。
## 這樣寫就會(huì)根據(jù) 源目錄(路徑1) 來執(zhí)行傳輸?shù)臄?shù)據(jù)。
[root@localhost test]# rsync -av --include='*' --exclude='*' SRC/office_directory backups_include/
sending incremental file list ## 從傳輸列表看出,只有傳輸了 office_directory 目錄及內(nèi)容
office_directory/
office_directory/docxfile.docx
office_directory/elsxfile.elsx
office_directory/pptxfile.pptx
sent 276 bytes received 77 bytes 706.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]# tree
.
├── backups_include ## backups_include 目錄只有 office_directory 目錄及內(nèi)容
│ └── office_directory
│ ├── docxfile.docx
│ ├── elsxfile.elsx
│ └── pptxfile.pptx
└── SRC ## 源目錄
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
5 directories, 10 files
[root@localhost test]#

- rsync -av --include=' * ',--exclude=' * ' SRC/office_directory/ backups_include/
當(dāng)源目錄 SRC/office_directory/ 加上 / 符號(hào),只傳輸 SRC/office_directory/ 目錄下的文件(不含 office_directory 目錄本身)
[root@localhost test]# rsync -av --include='*',--exclude='*' SRC/office_directory/ backups_include/
sending incremental file list ## 從傳輸列表看出只傳輸了 office_directory 的文件
./
docxfile.docx
elsxfile.elsx
pptxfile.pptx
sent 249 bytes received 76 bytes 650.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_include ## backups_include 只有 office_directory 的文件
│ ├── docxfile.docx
│ ├── elsxfile.elsx
│ └── pptxfile.pptx
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory ## office_directory 目錄沒有傳輸?shù)?backups_include
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 10 files
[root@localhost test]#
4、傳輸 SRC 目錄下的所有 txt 到 backups_include 目錄(含子目錄及內(nèi)容)。
分析思路:
1、通過 tree 可以看到 directory 是 SRC 子級(jí)目錄,它下面有 file2.txt 文件。--include 選項(xiàng)應(yīng)該寫為:--include='directory/' ,傳輸 directory/ 目錄。--include='directory/*.txt',傳輸 directory/ 目錄下所有 .txt 結(jié)尾的文件。
2、SRC 目錄下的子級(jí)還有三個(gè) .txt 文件,分別是:file1.txt、file3.txt 和 file4.txt。--include 選項(xiàng)應(yīng)該寫為:--include='*.txt',傳輸所有的 .txt 結(jié)尾的文件。
[root@localhost test]# tree ## 現(xiàn)時(shí)的目錄結(jié)構(gòu)
.
├── backups_include ## backups_include 沒有數(shù)據(jù)
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 7 files
3、SRC 內(nèi)含的 .txt 文件的分布結(jié)構(gòu)已經(jīng)清楚。綜合上述兩點(diǎn) --include 選項(xiàng)應(yīng)該寫為:--include='directory/' --include='directory/ * .txt' --include=' * .txt' 。
4、需要傳輸?shù)倪x項(xiàng)已經(jīng)寫了之后,其余的數(shù)據(jù)不需要傳輸。用 --exclude='*' 進(jìn)行所有數(shù)據(jù)的排除。
5、發(fā)送方,源目錄是 SRC/。接收方,目標(biāo)目錄是 backups_include/。
6、路徑應(yīng)該寫為:SRC/ backups_include/。
7、傳輸 SRC 目錄下的所有 .txt 文件(含子目錄及內(nèi)容)到 backups_include 目錄的整條語句應(yīng)該是:rsync -av --include='directory/' --include='directory/ * .txt' --include=' * .txt' --exclude=' * ' SRC/ backups_include/。效果如下:
## 執(zhí)行只傳輸 SRC 目錄下的 .txt 結(jié)尾的文件到 backups_include 目錄
[root@localhost test]# rsync -av --include='directory/' --include='directory/*.txt' --include='*.txt' --exclude='*' SRC/ backups_include/
sending incremental file list ## 從傳輸列表看出只有 .txt 的文件 和 含有 .txt 文件的子目錄
./
file1.txt
file3.txt
file4.txt
directory/
directory/file2.txt
sent 359 bytes received 103 bytes 924.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ## 執(zhí)行完語句的目錄結(jié)構(gòu)
.
├── backups_include ## backups_include目錄下只有 .txt 的文件 和 含有 .txt 文件的子目錄及 .txt 文件
│ ├── directory
│ │ └── file2.txt
│ ├── file1.txt
│ ├── file3.txt
│ └── file4.txt
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
5 directories, 11 files
[root@localhost test]#
5、如果只想傳輸 .txt 結(jié)尾的文件到 backups_include 目錄,不想傳輸子目錄文件夾??捎冒l(fā)送方,也就是源目錄的路徑進(jìn)行控制。
分析思路:
1、只傳輸 .txt 結(jié)尾的文件可以寫為 --include='*.txt'。
2、除了 .txt 文件,其余不傳輸可以寫為 --exclude='*'。
3、根據(jù)目錄結(jié)構(gòu)分析,SRC 目錄下的子級(jí)有三個(gè) .txt 文件,分別是:file1.txt、file3.txt 和 file4.txt。
[root@localhost test]# tree ## 現(xiàn)時(shí)的目錄結(jié)構(gòu)
.
├── backups_include ## backups_include 沒有數(shù)據(jù)
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 7 files
4、發(fā)送方,源目錄的路徑寫為 SRC/。SRC 目錄下的子級(jí)目錄 directory 下還有一個(gè) file2.txt 文件。因?yàn)?file2.txt 是 SRC 目錄下的子級(jí)目錄 directory 下的文件,路徑可以寫為 SRC/directory/,意思也是指定 SRC/directory/ 這個(gè)路徑下尋找 .txt 文件,如果有就傳輸。
5、傳輸 SRC 目錄下的所有 .txt 文件到 backups_include 目錄的整條語句應(yīng)該是:rsync -av --include=' * .txt' --exclude=' * ' SRC/ SRC/directory/ backups_include/
## 傳輸 SRC 目錄下 .txt 結(jié)尾的文件到 backups_include 目錄,不傳輸子目錄文件夾。
[root@localhost test]# rsync -av --include='*.txt' --exclude='*' SRC/ SRC/directory/ backups_include/
sending incremental file list
./
file1.txt
file2.txt
file3.txt
file4.txt
sent 336 bytes received 95 bytes 862.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ## 執(zhí)行完語句的目錄結(jié)構(gòu)
.
├── backups_include ## backups_include目錄下只有 .txt 的文件,沒有目錄
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 11 files
[root@localhost test]#

6、傳輸多個(gè)二級(jí)目錄及文件。
- 1、創(chuàng)建多級(jí)目錄及文件測(cè)試用例。
[root@localhost test]# tree
.
├── backups_include
└── SRC
├── directory
│ └── file2.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
4 directories, 7 files
## SRC 目錄下創(chuàng)建 directory1、directory2 和 directory3 二級(jí)目錄
[root@localhost test]# mkdir SRC/directory1 SRC/directory2 SRC/directory3
[root@localhost test]#
## SRC/directory 目錄下創(chuàng)建 directory4 和 directory5 三級(jí)目錄
[root@localhost test]# mkdir SRC/directory/directory4 SRC/directory/directory5
## 為 SRC 二級(jí)目錄 directory1、directory2 和 directory3 目錄分別創(chuàng)建 demo1.txt、demo2.txt 和 demo3.txt 文件。
[root@localhost test]# touch SRC/directory1/demo1.txt
[root@localhost test]# touch SRC/directory2/demo2.txt
[root@localhost test]# touch SRC/directory3/demo3.txt
## 為 SRC 三級(jí)目錄 directory4 和 directory5目錄分別創(chuàng)建 demo4.txt 和 demo5.txt 文件
[root@localhost test]# touch SRC/directory/directory4/demo4.txt
[root@localhost test]# touch SRC/directory/directory5/demo5.txt
[root@localhost test]#
[root@localhost test]# tree ## 添加完二級(jí)目錄、文件 和 三級(jí)目錄、文件的目錄結(jié)構(gòu)
.
├── backups_include
└── SRC
├── directory
│ ├── directory4 ## 新添加內(nèi)容
│ │ └── demo4.txt
│ ├── directory5 ## 新添加內(nèi)容
│ │ └── demo5.txt
│ └── file2.txt
├── directory1 ## 新添加內(nèi)容
│ └── demo1.txt
├── directory2 ## 新添加內(nèi)容
│ └── demo2.txt
├── directory3 ## 新添加內(nèi)容
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 12 files
[root@localhost test]#
2、傳輸多個(gè)二級(jí)目錄及 .txt 結(jié)尾 文件的原理和上面的 例5 原理一樣。通過 --include 把目錄和目錄下 *.txt 文件類型標(biāo)識(shí)清楚。以傳輸 SRC 目錄下的二級(jí)目錄及所有 .txt 文件為例:
3、從目錄結(jié)構(gòu)可以看到 SRC 的二級(jí)目錄有 directory、directory1、directory2、directory3 和 office_directory。其中,二級(jí)目錄里直接有 .txt 文件的目錄有 directory、directory1、directory2 和 directory3 。
[root@localhost test]# tree 文件的目錄結(jié)構(gòu)
.
├── backups_include
└── SRC
├── directory ## 二級(jí)目錄
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt ## 二級(jí)目錄 .txt 文件
├── directory1 ## 二級(jí)目錄及 .txt 文件
│ └── demo1.txt
├── directory2 ## 二級(jí)目錄及 .txt 文件
│ └── demo2.txt
├── directory3 ## 二級(jí)目錄及 .txt 文件
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 12 files
4、根據(jù)題意傳輸多個(gè)二級(jí)目錄及 .txt 結(jié)尾文件,那么用 --include 把目錄和目錄下的 *.txt 文件類型標(biāo)識(shí)清楚。
如:--include='directory' --include='directory/ * .txt' (傳輸 directory 目錄及目錄下所有 .txt 文件)。
--include='directory1' --include='directory1/ * .txt' (傳輸 directory1 目錄及目錄下所有 .txt 文件)。
--include='directory2' --include='directory2/ * .txt' (傳輸 directory2 目錄及目錄下所有 .txt 文件)。
--include='directory3' --include='directory3/ * .txt' (傳輸 directory3 目錄及目錄下所有 .txt 文件)。5、--exclude=' * ' (除了 --include 選項(xiàng)的內(nèi)容,其余排除傳輸)
6、發(fā)送方,源目錄是 SRC/。接收方,目標(biāo)目錄是 backups_include/。
7、傳輸多個(gè)二級(jí)目錄及 .txt 結(jié)尾文件的整條語句應(yīng)該是:
rsync -av --include='directory' --include='directory/ * .txt' --include='directory1' --include='directory1/ * .txt' --include='directory2' --include='directory2/ * .txt' --include='directory3' --include='directory3/ * .txt' --exclude=' * ' SRC/ backups_include/
效果如下:
## 傳輸多個(gè) SRC 二級(jí)目錄及 .txt 結(jié)尾的文件到 backups_include 目錄的語句應(yīng)該是:
[root@localhost test]# rsync -av --include='directory' --include='directory/*.txt' --include='directory1' --include='directory1/*.txt' --include='directory2' --include='directory2/*.txt' --include='directory3' --include='directory3/*.txt' --exclude='*' SRC/ backups_include/
sending incremental file list ## 從傳輸列表中看出都是 二級(jí)目錄及直屬的 .txt 文件
./
directory/
directory/file2.txt
directory1/
directory1/demo1.txt
directory2/
directory2/demo2.txt
directory3/
directory3/demo3.txt
sent 427 bytes received 115 bytes 1,084.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ## 執(zhí)行完語句的目錄結(jié)構(gòu)
.
├── backups_include ## backups_include目錄下只有二級(jí)目錄和直屬的 .txt 的文件
│ ├── directory
│ │ └── file2.txt
│ ├── directory1
│ │ └── demo1.txt
│ ├── directory2
│ │ └── demo2.txt
│ └── directory3
│ └── demo3.txt
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
13 directories, 16 files
[root@localhost test]#
7、傳輸三級(jí)目錄及文件原理也是一樣。通過 --include 把目錄和目錄下 *.txt 文件類型標(biāo)識(shí)清楚。以傳輸 SRC 目錄下的三級(jí)目錄及所有 .txt 文件為例:
- 1、從目錄結(jié)構(gòu)可以看出三級(jí)目錄有 directory4 和 directory5,它們分別有 demo4.txt 和 demo5.txt 文件。
[root@localhost test]# tree
.
├── backups_include
└── SRC
├── directory
│ ├── directory4 ## 三級(jí)目錄及 .txt 文件
│ │ └── demo4.txt
│ ├── directory5 ## 三級(jí)目錄及 .txt 文件
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 12 files
2、用 --include 把目錄和目錄下的 *.txt 文件類型標(biāo)識(shí)清楚。
--include='directory' (傳輸二級(jí)目錄 directory,傳輸完二級(jí)目錄后再傳輸三級(jí)目錄)。
--include='directory4' --include='directory4/ * .txt' (傳輸 directory4 目錄及目錄下所有 .txt 文件)。
--include='directory5' --include='directory5/ * .txt' (傳輸 directory5 目錄及目錄下所有 .txt 文件)。3、傳輸 SRC 三級(jí)目錄及文件到 backups_include 目錄的語句應(yīng)該是:
rsync -av --include='directory' --include='directory4' --include='directory4/ * .txt' --include='directory5' --include='directory5/ * .txt' --exclude=' * ' SRC/ backups_include/
效果如下:
## 傳輸 SRC 三級(jí)目錄及文件到 backups_include 目錄
[root@localhost test]# rsync -av --include='directory' --include='directory4' --include='directory4/*.txt' --include='directory5' --include='directory5/*.txt' --exclude='*' SRC/ backups_include/
sending incremental file list ## 從傳輸列表中看出都是 三級(jí)目錄及直屬的 .txt 文件
./
./
directory/
directory/directory4/
directory/directory4/demo4.txt
directory/directory5/
directory/directory5/demo5.txt
sent 284 bytes received 73 bytes 714.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_include ## backups_include目錄下只有三級(jí)目錄和直屬的 .txt 的文件
│ └── directory
│ ├── directory4
│ │ └── demo4.txt
│ └── directory5
│ └── demo5.txt
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
12 directories, 14 files
[root@localhost test]#
8、傳輸 SRC 目錄下的所有 .txt 文件(不含目錄)到 backups_include 目錄。
1、從目錄結(jié)構(gòu)看出 SRC 目錄下有 file1.txt、file3.txt 和 file4.txt 三個(gè)文件。另外,也有 directory、directory1、directory2 、directory3 和 office_directory 目錄。
directory 目錄下有 file2.txt 文件、directory4 和 directory5 目錄,directory4 目錄有 demo4.txt, directory5 目錄有 demo5.txt。
directory1 目錄下有 demo1.txt。
directory2 目錄下有 demo2.txt。
directory3 目錄下有 demo3.txt。
office_directory 目錄下沒有 .txt 文件。
[root@localhost test]# tree ## 目錄結(jié)構(gòu)
.
├── backups_include
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 12 files
2、傳輸所有的 .txt 可以寫為:--include=' * .txt',除了 .txt 其他不傳輸可以寫為:--exclude=' * '。
3、發(fā)送方 (源目錄):含有 .txt 文件的目錄路徑。
--- SRC/
--- SRC/directory/
--- SRC/directory1/
--- SRC/directory2/
--- SRC/directory3/
---SRC/directory/directory4/
---SRC/directory/directory5/
4、接收方 (目標(biāo)目錄):backups_include/ 目錄
5、結(jié)合以上分析,傳輸 SRC 目錄下的所有 .txt 文件(不含目錄)到 backups_include 目錄的語句應(yīng)該是:
rsync -av --include=' * .txt' --exclude=' * ' SRC/ SRC/directory/ SRC/directory1/ SRC/directory2/ SRC/directory3/ SRC/directory/directory4/ SRC/directory/directory5/ backups_include/
## 傳輸 SRC 目錄下的所有 .txt 文件(不含目錄)到 backups_include 目錄
[root@localhost test]# rsync -av --include='*.txt' --exclude='*' SRC/ SRC/directory/ SRC/directory1/ SRC/directory2/ SRC/directory3/ SRC/directory/directory4/ SRC/directory/directory5/ backups_include/
sending incremental file list ## 從傳輸列表看出只傳輸了 SRC 目錄下所有的 .txt 文件
./
demo1.txt
demo2.txt
demo3.txt
demo4.txt
demo5.txt
file1.txt
file2.txt
file3.txt
file4.txt
sent 734 bytes received 190 bytes 1,848.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]# tree ##完成傳輸?shù)哪夸浗Y(jié)構(gòu)
.
├── backups_include
│ ├── demo1.txt
│ ├── demo2.txt
│ ├── demo3.txt
│ ├── demo4.txt
│ ├── demo5.txt
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 21 files
[root@localhost test]#

9、優(yōu)化 例 8 語句
通過 例 8 傳輸一個(gè)多層目錄下的所有 .txt 文件中,不難發(fā)現(xiàn)主要是靠源目錄的路徑進(jìn)行控制。理解了原理后,會(huì)發(fā)現(xiàn)這樣寫的語句會(huì)有些問題。
1)、首先是對(duì)目錄結(jié)構(gòu)要有一定了解,清晰知道層級(jí)關(guān)系。這樣就會(huì)使每次操作都要先了解目錄、文件的名稱和層級(jí)關(guān)系,耗費(fèi)一定的時(shí)間精力。
2)、精確到目錄路徑的寫法,在很多目錄層級(jí)結(jié)構(gòu)的時(shí)候就會(huì)顯得語句臃腫(很長(zhǎng))。
3)、遇到很多目錄層級(jí)結(jié)構(gòu)的時(shí)候,容易寫錯(cuò),寫漏。通過 例8 可以理解一下語句操作,實(shí)際上可以對(duì)語句做一些有優(yōu)化。以例 8 的
rsync -av --include=' * .txt' --exclude=' * ' SRC/ SRC/directory/ SRC/directory1/ SRC/directory2/ SRC/directory3/ SRC/directory/directory4/ SRC/directory/directory5/ backups_include/ 語句為例。通過觀察目錄結(jié)構(gòu)發(fā)現(xiàn),SRC 目錄最大就是三級(jí)目錄,也就是三層。源的路徑可以用 * 號(hào)來代替一個(gè)層級(jí)。不用精確到第二級(jí)目錄的名字、第三級(jí)目錄的名字。
例如:SRC 目錄第二級(jí)目錄有 directory、directory1、directory2 和 directory3??梢詫懗?SRC/ * /。這里的 * 就代表了第二級(jí)所有的目錄,也包含了 directory、directory1、directory2 和 directory3。-
所以,優(yōu)化后的語句應(yīng)該是:rsync -av --include=' * .txt' --exclude=' * ' SRC/ SRC/ * / SRC/ * / * / backups_include/
rsync -av --include=' * .txt' --exclude=' * ' SRC/ SRC/ * / SRC/ * / * / backups_include/ 圖解
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_include
└── SRC ## 第一級(jí) SRC/
├── directory ## 第二級(jí) SRC/*/
│ ├── directory4 ## 第三級(jí) SRC/*/*/
│ │ └── demo4.txt
│ ├── directory5 ## 第三級(jí) SRC/*/*/
│ │ └── demo5.txt
│ └── file2.txt
├── directory1 ## 第二級(jí) SRC/*/
│ └── demo1.txt
├── directory2 ## 第二級(jí) SRC/*/
│ └── demo2.txt
├── directory3 ## 第二級(jí) SRC/*/
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory ## 第二級(jí) SRC/*/
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 12 files
- 執(zhí)行語句的效果
[root@localhost test]#
[root@localhost test]# rsync -av --include='*.txt' --exclude='*' SRC/ SRC/*/ SRC/*/*/ backups_include/
sending incremental file list ## 從傳輸列表看出只傳輸了 SRC 目錄下所有的 .txt 文件
./
demo1.txt
demo2.txt
demo3.txt
demo4.txt
demo5.txt
file1.txt
file2.txt
file3.txt
file4.txt
sent 750 bytes received 190 bytes 1,880.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]# tree ##完成傳輸?shù)哪夸浗Y(jié)構(gòu)
.
├── backups_include
│ ├── demo1.txt
│ ├── demo2.txt
│ ├── demo3.txt
│ ├── demo4.txt
│ ├── demo5.txt
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 21 files
[root@localhost test]#
- 通過 * 代表一級(jí)的形式可以避免了每個(gè)路徑都寫一次目錄而造成的語句臃腫,還可以避免了目錄的遺漏和書寫錯(cuò)誤。只要了解目錄結(jié)構(gòu)有多少層就可以了。
10、指定傳輸某些文件。
- 通過 --include='文件名' 指定需要傳輸?shù)奈募?。源路徑方面,同樣采?* 代替層級(jí)的方法。
例:傳輸 SRC 目錄下的 file1.txt、demo1.txt、demo4.txt 和 pptxfile.pptx 文件到 backups_include 目錄。
[root@localhost test]# tree ## 現(xiàn)時(shí)的目錄結(jié)構(gòu)
.
├── backups_include
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 12 files
## --include='file1.txt' --include='demo1.txt' --include='demo4.txt' --include='pptxfile.pptx'
## 指定傳輸 file1.txt、demo1.txt、demo4.txt 和 pptxfile.pptx 文件
## --exclude='*' (除了 --include 指定的文件,其他不傳輸)
## SRC/ SRC/*/ SRC/*/*/ (從 SRC 目錄、SRC 二級(jí)目錄 和 SRC 三級(jí)目錄 篩查指定傳輸?shù)奈募?,有就傳輸。?## backups_include/ (目標(biāo)目錄)
[root@localhost test]# rsync -av --include='file1.txt' --include='demo1.txt' --include='demo4.txt' --include='pptxfile.pptx' --exclude='*' SRC/ SRC/*/ SRC/*/*/ backups_include/
sending incremental file list ##從傳輸列表中發(fā)現(xiàn),傳輸?shù)奈募际?--include 指定的文件
./
demo1.txt
demo4.txt
file1.txt
pptxfile.pptx
sent 434 bytes received 95 bytes 1,058.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ##數(shù)據(jù)傳輸完的目錄結(jié)構(gòu)
.
├── backups_include ## --include 指定傳輸?shù)奈募?│ ├── demo1.txt
│ ├── demo4.txt
│ ├── file1.txt
│ └── pptxfile.pptx
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 16 files
[root@localhost test]#
11、指定傳輸某字母或單詞開頭的目錄或文件。
- 例:指定傳輸 SRC 目錄下 file 開頭的目錄或文件。通過 --include='file * ' 指定傳輸 file 開頭的目錄或文件。源路徑方面,同樣采用 * 代替層級(jí)的方法。
[root@localhost test]# tree ## 現(xiàn)時(shí)的目錄結(jié)構(gòu)
.
├── backups_include
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 12 files
## --include='file*' 指定傳輸 file開頭的目錄或文件
## --exclude='*' (除了 file 開頭的目錄或文件,其他不傳輸)
## SRC/ SRC/*/ SRC/*/*/ (從 SRC 目錄、SRC 二級(jí)目錄 和 SRC 三級(jí)目錄 篩查指定傳輸?shù)奈募芯蛡鬏?。?## backups_include/ (目標(biāo)目錄)
[root@localhost test]# rsync -av --include='file*' --exclude='*' SRC/ SRC/*/ SRC/*/*/ backups_include/
sending incremental file list ##從傳輸列表可以看出,傳輸?shù)奈募际?file開頭的文件
./
file1.txt
file2.txt
file3.txt
file4.txt
sent 418 bytes received 95 bytes 1,026.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ##數(shù)據(jù)傳輸完的目錄結(jié)構(gòu)
.
├── backups_include ## --include 指定傳輸?shù)奈募?│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 16 files
[root@localhost test]#
12、指定傳輸含有某字母或單詞的文件。
- 例:指定傳輸 SRC 目錄下含有 s 的目錄或文件。通過 --include=' * s * ' 指定傳輸含有 s 的所有目錄或文件。源路徑方面,同樣采用 * 代替層級(jí)的方法。
[root@localhost test]# tree ## 現(xiàn)時(shí)的目錄結(jié)構(gòu)
.
├── backups_include
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 12 files
## --include='*s*' 指定傳輸含有 s 的目錄或文件
## --exclude='*' (除了含有 s 的目錄或文件,其他不傳輸)
## SRC/ SRC/*/ SRC/*/*/ (從 SRC 目錄、SRC 二級(jí)目錄 和 SRC 三級(jí)目錄 篩查指定傳輸?shù)奈募?,有就傳輸。?## backups_include/ (目標(biāo)目錄)
[root@localhost test]# rsync -av --include='*s*' --exclude='*' SRC/ SRC/*/ SRC/*/*/ backups_include/
sending incremental file list ##從傳輸列表可以看到含有 s 的文件
elsxfile.elsx
sent 228 bytes received 35 bytes 526.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ##數(shù)據(jù)傳輸完的目錄結(jié)構(gòu)
.
├── backups_include ## 含有 s 的文件
│ └── elsxfile.elsx
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 13 files
[root@localhost test]#
- 如果把 s 改為 c 會(huì)有很多目錄和文件傳輸,因?yàn)楹芏嗄夸浐臀募己?c。
[root@localhost test]# rsync -av --include='*c*' --exclude='*' SRC/ SRC/*/ SRC/*/*/ backups_include/
sending incremental file list ## 含有 c 的目錄和文件都在傳輸列表
./
docxfile.docx
directory/
directory/directory4/
directory/directory5/
directory1/
directory2/
directory3/
directory4/
directory5/
office_directory/
office_directory/docxfile.docx
sent 600 bytes received 97 bytes 1,394.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ##傳輸完成的目錄結(jié)構(gòu)
.
├── backups_include ## 含有 c 的目錄和文件
│ ├── directory
│ │ ├── directory4
│ │ └── directory5
│ ├── directory1
│ ├── directory2
│ ├── directory3
│ ├── directory4
│ ├── directory5
│ ├── docxfile.docx
│ └── office_directory
│ └── docxfile.docx
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
18 directories, 14 files
13、指定傳輸某字母或單詞結(jié)尾的文件。
- 例:指定傳輸 SRC 目錄下 x 結(jié)尾的目錄或文件。通過 --include=' * x' 指定傳輸 x 結(jié)尾的所有目錄或文件。源路徑方面,同樣采用 * 代替層級(jí)的方法。
[root@localhost test]# tree ## 現(xiàn)時(shí)的目錄結(jié)構(gòu)
.
├── backups_include
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 12 files
## --include='*x' 指定傳輸 x 結(jié)尾的目錄或文件
## --exclude='*' (除了 x 結(jié)尾的目錄或文件,其他不傳輸)
## SRC/ SRC/*/ SRC/*/*/ (從 SRC 目錄、SRC 二級(jí)目錄 和 SRC 三級(jí)目錄 篩查指定傳輸?shù)奈募?,有就傳輸。?## backups_include/ (目標(biāo)目錄)
[root@localhost test]# rsync -av --include='*x' --exclude='*' SRC/ SRC/*/ SRC/*/*/ backups_include/
sending incremental file list ##從傳輸列表看出傳輸?shù)奈募际?x 結(jié)尾
./
docxfile.docx
elsxfile.elsx
pptxfile.pptx
sent 363 bytes received 76 bytes 878.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ##傳輸完成的目錄結(jié)構(gòu)
.
├── backups_include ## x 結(jié)尾的目錄和文件
│ ├── docxfile.docx
│ ├── elsxfile.elsx
│ └── pptxfile.pptx
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 15 files
[root@localhost test]#
14、指定多個(gè)傳輸條件可以用 { } 大擴(kuò)號(hào)把條件括起來,條件與條件之間用 ,逗號(hào)分隔開。只用一個(gè) --include參數(shù)。可進(jìn)步一步優(yōu)化語句,避免臃腫。
- 例:指定傳輸 SRC 目錄下 demo4.txt、demo1.txt、file1.txt 和 elsxfile.elsx 文件。通過 --include={'demo4.txt','demo1.txt','file1.txt','elsxfile.elsx'} 把內(nèi)容括起來。源路徑方面,同樣采用 * 代替層級(jí)的方法。
[root@localhost test]# tree ## 沒有傳輸前的目錄結(jié)構(gòu)
.
├── backups_include
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 12 files
## 用 { } 大括號(hào)的方法指定傳輸 SRC 目錄下 demo4.txt、demo1.txt、file1.txt 和 elsxfile.elsx 文件。
[root@localhost test]# rsync -av --include={'demo4.txt','demo1.txt','file1.txt','elsxfile.elsx'} --exclude='*' SRC/ SRC/*/ SRC/*/*/ backups_include/
sending incremental file list ##從傳輸列表看到 { } 大括號(hào)指定的文件
./
demo1.txt
demo4.txt
elsxfile.elsx
file1.txt
sent 437 bytes received 95 bytes 1,064.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ##傳輸完成的目錄結(jié)構(gòu)
.
├── backups_include ## backups_include 接收 { } 大括號(hào)的文件
│ ├── demo1.txt
│ ├── demo4.txt
│ ├── elsxfile.elsx
│ └── file1.txt
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 16 files
[root@localhost test]#
- { } 大括號(hào)括起指定的傳輸內(nèi)容適用于多種形式條件篩查。把原來每個(gè)條件配一個(gè) include,改為一個(gè) include,內(nèi)容用 { } 括起來,簡(jiǎn)化了語句。
15、--include-from 通過加載文件的形式讀取文件記錄的參數(shù),從而實(shí)現(xiàn)傳輸指定元素的功能。
例:用 --include-from 方式傳輸 SRC/ 目錄下的所有 .txt 文件
## 首先,需要新建一個(gè)文件記錄傳輸?shù)膮?shù)。
[root@localhost test]# vim include-file.txt ## vim 編輯并生成 include-file.txt 文件
-------------- 輸入的文本內(nèi)容 -------------
*.txt ## 按 i 進(jìn)入編輯模式,輸入*.txt (所有 .txt 結(jié)尾的文件)
~
~
~
:wq!
------ 輸入完內(nèi)容按 Esc 鍵退出編輯狀態(tài),輸入 :wq! 強(qiáng)制保存退出 -------
[root@localhost test]#
[root@localhost test]# tree ##沒有傳輸時(shí)的目錄結(jié)構(gòu)
.
├── backups_include
├── include-file.txt ## 生成的 include-file.txt 文件
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 13 files
[root@localhost test]#
## --include-from='include-file.txt' 加載 include-file.txt,
## 讀取其內(nèi)容,它的內(nèi)容是 *.txt。意思是所有 .txt 結(jié)尾的文件,
## 效果等同于 --include='*.txt'。
[root@localhost test]# rsync -av --include-from='include-file.txt' --exclude='*' SRC/ SRC/*/ SRC/*/*/ backups_include/
sending incremental file list ##從傳輸列表看出傳輸?shù)膬?nèi)容都是 .txt 文件
./
demo1.txt
demo2.txt
demo3.txt
demo4.txt
demo5.txt
file1.txt
file2.txt
file3.txt
file4.txt
sent 750 bytes received 190 bytes 1,880.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ## 傳輸完成后的目錄結(jié)構(gòu)
.
├── backups_include ## backups_include 下都是 .txt 文件
│ ├── demo1.txt
│ ├── demo2.txt
│ ├── demo3.txt
│ ├── demo4.txt
│ ├── demo5.txt
│ ├── file1.txt
│ ├── file2.txt
│ ├── file3.txt
│ └── file4.txt
├── include-file.txt
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 22 files
[root@localhost test]#
16、加載文件多項(xiàng)傳輸元素的方法、原理和添加單項(xiàng)元素一樣。只是,每個(gè)元素為一行。
例:用 --include-from 方式傳輸 SRC/ 目錄下的所以 e開頭、文件名含 1 的字符、文件名含 3 的字符 和 tx結(jié)尾的目錄和文件。
## 首先,需要新建一個(gè)文件記錄傳輸?shù)膮?shù)。
[root@localhost test]# vim include-file.txt ## vim 編輯并生成 include-file.txt 文件
-------------- 輸入的文本內(nèi)容 -------------
e* ## 按 i 進(jìn)入編輯模式,輸入e* (e開頭的目錄和文件)
*1* ## 輸入*1* (含 1 的目錄和文件)
*3* ## 輸入*3* (含 3 的目錄和文件)
*tx ## 輸入*tx (tx結(jié)尾的目錄和文件)
~
~
~
:wq!
------ 輸入完內(nèi)容按 Esc 鍵退出編輯狀態(tài),輸入 :wq! 強(qiáng)制保存退出 -------
[root@localhost test]# tree ##沒有傳輸時(shí)的目錄結(jié)構(gòu)
.
├── backups_include
├── include-file.txt ## 生成的 include-file.txt 文件
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
9 directories, 13 files
## --include-from='include-file.txt' 加載 include-file.txt,
## 讀取其內(nèi)容,它的內(nèi)容是 e*、*1*、*3*、*tx。,
## 意思是所有 e 開頭的文件、文件名含 1 的字符、文件名含 3 的字符 和 tx結(jié)尾的文件,
## 效果等同于--exclude={'e*','*1*','*3*','*tx'}
[root@localhost test]# rsync -av --include-from='include-file.txt' --exclude='*' SRC/ SRC/*/ SRC/*/*/ backups_include/
sending incremental file list ##從傳輸列表看出傳輸?shù)膬?nèi)容都是 e 開頭、文件名含 1 或 3 的字符 和 tx結(jié)尾的文件
./
demo1.txt
demo3.txt
elsxfile.elsx
file1.txt
file3.txt
pptxfile.pptx
directory1/
directory1/demo1.txt
directory3/
directory3/demo3.txt
sent 772 bytes received 183 bytes 1,910.00 bytes/sec
total size is 0 speedup is 0.00
[root@localhost test]#
[root@localhost test]# tree ## 傳輸完成后的目錄結(jié)構(gòu)
.
├── backups_include ## backups_include 下都是 都是 e 開頭、文件名含 1 或 3 的字符 和 tx結(jié)尾的文件,
│ ├── demo1.txt
│ ├── demo3.txt
│ ├── directory1
│ │ └── demo1.txt
│ ├── directory3
│ │ └── demo3.txt
│ ├── elsxfile.elsx
│ ├── file1.txt
│ ├── file3.txt
│ └── pptxfile.pptx
├── include-file.txt
└── SRC
├── directory
│ ├── directory4
│ │ └── demo4.txt
│ ├── directory5
│ │ └── demo5.txt
│ └── file2.txt
├── directory1
│ └── demo1.txt
├── directory2
│ └── demo2.txt
├── directory3
│ └── demo3.txt
├── file1.txt
├── file3.txt
├── file4.txt
└── office_directory
├── docxfile.docx
├── elsxfile.elsx
└── pptxfile.pptx
11 directories, 21 files
[root@localhost test]#
- 使用 --include-from 方式可以把參數(shù)寫進(jìn)文件,需要修改參數(shù)時(shí)在文件修改。隨時(shí)可以調(diào)動(dòng)文件進(jìn)行指令操作,不用每次都 --include指定參數(shù)。增加效率。另外,也可以進(jìn)一步簡(jiǎn)化語句避免臃腫。

