如何使用CP / SCP / RSYNC在Linux中排除特定目錄?
介紹
對于任何系統管理員或一般Linux操作系統用戶而言,在服務器之間執行文件復制操作都是一項常見任務。在將文件從一個系統復制到另一個系統時,由于某些特定原因,我們可能需要排除某些文件和目錄被復制。即使在同一系統上將數據從一個位置傳輸到另一位置時,這也可能適用。
在本文中,我們將演示如何排除特定的文件或目錄,或者使用用于此目的的三種最常用和廣泛使用的實用程序(即rsync,cp和scp)進行復制。使用cp命令排除特定文件/目錄的復制:
考慮以下情形,其中我的當前工作目錄中有五個目錄。
- [root@linuxnix tmp]# ls -ld dir*
- drwxr-xr-x 2 root root 6 Aug 29 22:47 dir1
- drwxr-xr-x 2 root root 71 Aug 29 22:47 dir2
- drwxr-xr-x 2 root root 6 Aug 29 22:47 dir3
- drwxr-xr-x 2 root root 6 Aug 29 22:47 dir4
- drwxr-xr-x 2 root root 6 Aug 29 22:47 dir5
我想復制以名稱dir開頭的所有目錄的內容,除了dir2目錄,然后可以執行以下操作:
- [root@linuxnix tmp]# cp -r `ls -A | grep dir| grep -v "dir2"` /tmp/sahil/
這將復制除dir2以外的所有dir目錄。如果我們需要復制所有目錄并跳過單個目錄,則可以運行以下命令。
- [root@linuxnix tmp]# cp -r !(dir2) /sahil
除目錄dir2之外,當前工作目錄中的所有目錄和子目錄都將復制到/ sahil中。同樣,如果我們要從當前工作目錄中復制除一個文件以外的所有文件,請鍵入以下內容
- [root@linuxnix dir2]# cp -r !(file3) /sahil
在上面的示例中,當前工作目錄中的所有文件都被復制到/ sahil,除了名為file3的文件。
使用scp命令排除特定文件/目錄被復制:
scp中的數據排除機制與先前使用cp命令演示的類似。以下是一個示例。上面的命令從當前工作目錄中復制了所有文件,除了名為file4的文件。
- [root@linuxnix dir2]# scp -rp !(file4) 192.168.19.142:/sahil
- file1 100% 0 0.0KB/s 00:00
- file2 100% 0 0.0KB/s 00:00
- file3 100% 0 0.0KB/s 00:00
- file5 100% 0 0.0KB/s 00:00
- [root@linuxnix dir2]#
使用rsync命令排除特定文件/目錄的復制:
在用于復制文件的命令集中,最靈活的是rsync命令。在本文中,我們將討論范圍限于排除某些文件/目錄被復制的功能。要使用rysnc命令復制文件或文件夾,請使用–exclude標志,如以下示例所示。
- [root@linuxnix tmp]# rsync -av --progress --exclude="dir2" dir* /sahil
- sending incremental file list
- dir1/
- dir3/
- dir4/
- dir5/
- sent 82 bytes received 28 bytes 220.00 bytes/sec
- total size is 0 speedup is 0.00
- [root@linuxnix tmp]# cd /sahil/
- [root@linuxnix sahil]# ls -l
- total 0
- drwxr-xr-x 2 root root 6 Aug 29 22:47 dir1
- drwxr-xr-x 2 root root 6 Aug 29 22:47 dir3
- drwxr-xr-x 2 root root 6 Aug 29 22:47 dir4
- drwxr-xr-x 2 root root 6 Aug 29 22:47 dir5
- [root@linuxnix sahil]#
我們也可以在遠程復制文件時使用–exclude標志。以下是一個示例:
- [root@linuxnix tmp]# rsync -av --progress --exclude="dir2" dir* 192.168.19.142:/sahil
- sending incremental file list
- dir1/
- dir3/
- dir4/
- dir5/
- sent 82 bytes received 28 bytes 220.00 bytes/sec
- total size is 0 speedup is 0.00
- [root@linuxnix tmp]#
結論
這結束了我們的演示,演示了如何在使用cp、scp和rsync命令時排除某些內容被復制。希望這篇文章對您有幫助。

























