1. 程式人生 > >linux下拷貝資料夾的時候排除其中的一些目錄

linux下拷貝資料夾的時候排除其中的一些目錄

比如有一個/usr/tmp/ 下面有幾個目錄 dira, dirb,dirc, 現在要想把 /usr/tmp  拷貝到 /home/xx/ 下面,但又不想要dirc

有幾種方法可以實現

1) 使用rsync --exclude

cd /usr

rsync -avP --exclude=dirc/ tmp  /home/xx/

注意 dirc/ 後面的 / 一定要,指名是目錄,如果不加的話 dirc檔案也會被排除

如果想排除多個目錄或檔案的話 使用

rsync -avP  --exclude-from=/usr/exclude.list

exclude.list 必須是絕對路徑,裡面儲存了各種要排除的檔案或目錄,以換行隔開

-a, --archive                   歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD
-v, --verbose                  詳細模式輸出
-P 等同於 --partial            保留那些因故沒有完全傳輸的檔案,以是加快隨後的再次傳輸

更詳細的引數如下
-v, --verbose                  詳細模式輸出
-q, --quiet                       精簡輸出模式
-c, --checksum               開啟校驗開關,強制對檔案傳輸進行校驗
-a, --archive                   歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD
-r, --recursive                 對子目錄以遞迴模式處理
-R, --relative                  使用相對路徑資訊
-b, --backup                  建立備份,也就是對於目的已經存在有同樣的檔名時,將老的檔案重新命名為~filename。可以使用--suffix選項來指定不同的備份檔案字首。
--backup-dir                  將備份檔案(如~filename)存放在在目錄下。
-suffix=SUFFIX             定義備份檔案字首
-u, --update                   僅僅進行更新,也就是跳過所有已經存在於DST,並且檔案時間晚於要備份的檔案。(不覆蓋更新的檔案)
-l, --links                         保留軟鏈結
-L, --copy-links              想對待常規檔案一樣處理軟鏈結
--copy-unsafe-links        僅僅拷貝指向SRC路徑目錄樹以外的鏈結
--safe-links                     忽略指向SRC路徑目錄樹以外的鏈結
-H, --hard-links              保留硬鏈結
-p, --perms                    保持檔案許可權
-o, --owner                    保持檔案屬主資訊
-g, --group                     保持檔案屬組資訊
-D, --devices                 保持裝置檔案資訊
-t, --times                      保持檔案時間資訊
-S, --sparse                   對稀疏檔案進行特殊處理以節省DST的空間
-n, --dry-run                  現實哪些檔案將被傳輸
-W, --whole-file             拷貝檔案,不進行增量檢測
-x, --one-file-system      不要跨越檔案系統邊界
-B, --block-size=SIZE   檢驗演算法使用的塊尺寸,預設是700位元組
-e, --rsh=COMMAND 指定使用rsh、ssh方式進行資料同步
--rsync-path=PATH      指定遠端伺服器上的rsync命令所在路徑資訊
-C, --cvs-exclude          使用和CVS一樣的方法自動忽略檔案,用來排除那些不希望傳輸的檔案
--existing                      僅僅更新那些已經存在於DST的檔案,而不備份那些新建立的檔案
--delete                         刪除那些DST中SRC沒有的檔案
--delete-excluded          同樣刪除接收端那些被該選項指定排除的檔案
--delete-after                傳輸結束以後再刪除
--ignore-errors             及時出現IO錯誤也進行刪除
--max-delete=NUM     最多刪除NUM個檔案
--partial                        保留那些因故沒有完全傳輸的檔案,以是加快隨後的再次傳輸
--force                          強制刪除目錄,即使不為空
--numeric-ids                不將數字的使用者和組ID匹配為使用者名稱和組名
--timeout=TIME IP       超時時間,單位為秒
-I, --ignore-times          不跳過那些有同樣的時間和長度的檔案
--size-only                    當決定是否要備份檔案時,僅僅察看檔案大小而不考慮檔案時間
--modify-window=NUM 決定檔案是否時間相同時使用的時間戳視窗,預設為0
-T --temp-dir=DIR      在DIR中建立臨時檔案
--compare-dest=DIR   同樣比較DIR中的檔案來決定是否需要備份
-P 等同於 --partial
--progress                    顯示備份過程
-z, --compress             對備份的檔案在傳輸時進行壓縮處理
--exclude=PATTERN  指定排除不需要傳輸的檔案模式
--include=PATTERN   指定不排除而需要傳輸的檔案模式
--exclude-from=FILE   排除FILE中指定模式的檔案
--include-from=FILE   不排除FILE指定模式匹配的檔案
--version                      列印版本資訊
--address                     繫結到特定的地址
--config=FILE             指定其他的配置檔案,不使用預設的rsyncd.conf檔案
--port=PORT              指定其他的rsync服務埠
--blocking-io               對遠端shell使用阻塞IO
-stats                           給出某些檔案的傳輸狀態
--progress                   在傳輸時現實傳輸過程
--log-format=formAT  指定日誌檔案格式
--password-file=FILE 從FILE中得到密碼
--bwlimit=KBPS         限制I/O頻寬,KBytes per second
-h, --help                    顯示幫助資訊

2) 使用find

cd /usr

find ./tmp/ | grep -v tmp/dirc | cpio -pdm /home/xx/

其中grep的-v 表示把匹配到的去掉不顯示,cpio命令中的-d選項要注意加上,因為該選項用來在必要的時候建立目錄。

相關推薦

linux拷貝資料的時候排除其中一些目錄

比如有一個/usr/tmp/ 下面有幾個目錄 dira, dirb,dirc, 現在要想把 /usr/tmp  拷貝到 /home/xx/ 下面,但又不想要dirc 有幾種方法可以實現 1) 使用rsync --exclude cd /usr rsync -avP --e

Linux| Linux資料的結構說明及用途介紹

linux下各資料夾的結構說明及用途介紹: /bin:二進位制可執行命令。 /dev:裝置特殊檔案。 /etc:系統管理和配置檔案。 /etc/rc.d:啟動的配 置檔案和指令碼。 /home:使用者主目錄的基點,比如使用者user的主目錄就是/home/user,可以用~u

【轉載】Linux資料的含義和用途 Linux資料的含義和用途

原文地址:https://www.cnblogs.com/lanqingzhou/p/8037269.html Linux下各資料夾的含義和用途 Linux根目錄”/“下各個系統資料夾的含義和用途 1、/boot 該目錄預設下存放的是Linux的啟動檔案和核心。 2、/initrd 它的英文

Linux資料編寫Makefile詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Linux統計資料數量

1) 統計當前資料夾下檔案的個數: ls -l |grep "^-"|wc -l 2) 統計當前資料夾下目錄的個數: ls -l |grep "^d"|wc -l 3) 統計當前資料夾下檔案的個數,包括子資料夾裡的 : ls -lR|grep "^-"|wc

Linux資料的含義和用途

Linux根目錄”/“下各個系統資料夾的含義和用途 1、/boot 該目錄預設下存放的是Linux的啟動檔案和核心。 2、/initrd 它的英文含義是boot loader initialized RAM disk,就是由boot loader初始化的記憶體盤。在lin

java在linux新建資料

                        java在lin

linux 修改資料的使用者許可權和所屬組,為檔案建立軟連線

chown wlq testfilwe //為資料夾testfile更改擁有者為wlq chgrp [-r] wlq testfile //為資料夾testfile更改擁有者組為wlq sudo du -sh /home/* //檢視一臺機器上

linux合併資料

問題來源 在window下,如果直接將一個資料夾拷貝到另外一個包含同名資料夾的位置,可以選擇將兩個資料夾合併。 那麼,linux下的mv命令是否有同樣的功能?合併同名資料夾呢? 答案是否定的。

C++ 庫研究筆記——Linux建立資料

查了很多,都不怎麼完成,後在stackoverflow 上了一個失推薦不多的方案,發現是最有效的。 如建立 “ab/b/c” 這個資料夾,其中,ab資料夾不要求事先不存在(若不存在,先建立) #pragma once #include <ios

Linux 統計資料中檔案的數量

方法一: 這裡涉及幾個命令: 命令1: ls -l === ll 其實不用太多解釋,這個是入門命令,當然,還有-R引數。列出子目錄和檔案 命令2: grep “^-” grep我的理解是GNU正則(GNU regular expression)的縮寫,這裡是匹配

linux打包資料(不保留路徑)

問題: 加入要將/home/moma/Downloads/下的test資料夾壓縮成test.tar.gz,放在/home/moma/Documents下 命令: tar czf /home/moma/Documents/test.tar.g

Linux command: 統計資料的檔案數目

Linux下有三個命令:ls、grep、wc。通過這三個命令的組合可以統計目錄下檔案及資料夾的個數。 統計當前目錄下檔案的個數(不包括目   1   $ ls -l | grep "^-" | wc -l

Linux 檢視某資料檔案數量

轉至:www.xitongzhijia.net/xtjc/20150504/47340.html LInux  find指令的使用:   find命令檢視(推薦):   所有子目錄的數量:   [[email protected] ~]# find pma -type d

獲取指定目錄資料(包含檔案)並且拷貝到另一指定資料,刪除指定目錄資料(包含檔案)

    /**      * 複製整個資料夾內容      *       * @param oldPath      *  

linux 命令替換資料所有檔案指定字串為

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

linux檢視根目錄所有資料大小

linux檢視根目錄下所有資料夾大小的方法如下: 1、進入根目錄:cd / 2、使用命令 : du -sh * 檢視根目錄下每個資料夾的大小 3、進入佔用空間比較大的資料夾,然後再使用2中命令查詢大檔案。   查詢大於10M的檔案 find / -type f -size +

Linux隨筆 - Linux統計某資料檔案、資料的個數

統計某資料夾下檔案的個數  ls -l |grep "^-"|wc -l   統計某資料夾下目錄的個數   ls -l |grep "^d"|wc -l   統計資料夾下檔案的個數,包括子資料夾裡的   ls -lR|grep "^-"|wc -l   統計/i

Linux 根路徑資料用途(centos)

/bin: 包含了引導啟動所需的命令或普通使用者可能用的命令(可能在引導啟動後)。這些命令都是二進位制檔案的可執行程式,多是系統中重要的系統檔案。 /boot: 包含可引導的Linux核心和引導裝載(boot loader)配置檔案(GRUB)。 /dev: 包含代表系統

linux遍歷資料的檔案

static bool getFileNamesInDir(const string strDir, vector<string> &vecFileName) { DIR* dir = NULL; struct dirent entry; stru