1、命令概述
cp命令可以理解為英文單詞copy的縮寫,其功能為復制文件或目錄(可重命名)。
2、命令語法
cp【選項】 【文件名或目錄】【文件或目錄】
3、命令選項
-f 強行復制文件或目錄, 不論目的文件或目錄是否已經存在,若目標文件已存在,則會直接覆蓋原文件。
-i 若目標文件已存在,則會詢問是否覆蓋
-p 保留源文件或目錄的屬性,包括所有者、所屬組、權限與時間
-r 遞歸處理,將指定目錄下的文件與子目錄一並處理。若源文件或目錄的形態,不屬於目錄或符號鏈接,則一律視為普通文件處理
-d 當復制符號連接時,把目標文件或目錄也建立為符號連接,並指向與源文件或目錄連接的原始文件或目錄
-l 對源文件建立硬鏈接,而非復制文件
-s 對源文件建立符號鏈接,而非復制文件
-b 刪除、覆蓋目的文件先備份,備份的文件或目錄亦建立為符號鏈接,並指向源文件或目錄鏈接的源文件或目錄。假如沒有加上這個參數,在復制過程中若遇到符號鏈接,則會直接復制源文件或目錄
-v 顯示執行過程
-a 此選項通常在復制目錄時使用,它保留鏈接、文件屬性,並復制目錄下的所有內容。其作用等於dpR參數組合
-P 保留源文件或目錄的路徑,此路徑可以是絕對路徑或相對路徑,且目的目錄必須已經存在
-R 遞歸處理,將指定目錄下的文件及子目錄一並處理
-u 使用這項參數之后,只會在源文件的修改時間(Modification Time)較目的文件更新時,或是名稱相互對應的目的文件並不存在,才復制文件
-V <備份方式> 或 --version-control=<備份方式> 指定當備份文件時,備份文件名的命名方式,有以下3種:
1.numbered或t, 將使用備份編號,會在字尾加上~1~字符串,其數字編號依次遞增
2.simple或never 將使用簡單備份,默認的備份字尾字符串是~, 也可通過-S來指定
3.existing或nil將使用當前方式,程序會先檢查是否存在着備份編號,若有則采用備份編號,若無則采用簡單備份
-x 復制的文件或目錄存放的文件系統,必須與cp指令執行時所處的文件系統相同,否則不復制,亦不處理位於其他分區的文件
4、命令示例
4.1復制文件a.txt到work目錄
1 [root@localhost ~]# cp a.txt /work/
4.2復制文件a.txt到work目錄,並重命名為b.txt
1 [root@localhost ~]# cp a.txt /work/b.txt
4.3復制文件a.txt和b.txt到work目錄
1 [root@localhost ~]# cp a.txt b.txt /work/
4.4 -i 若目標文件已存在,則會詢問是否覆蓋
1 [root@localhost ~]# cp -i a.txt /work/ 2 cp: overwrite '/work/a.txt'?
4.5 -r 遞歸處理,將指定目錄下的文件與子目錄一並處理。
1 [root@localhost ~]# cp -r job/ /work/
4.6 把/tmp目錄里面的 a.txt 復制一個 a.txt.bak,以下三種方法皆可:
1 [root@localhost ~]# cp /tmp/a.txt /tmp/a.txt.bak #復制的時候可隨意直接修改文件名 2 [root@localhost ~]# cp /tmp/{a.txt,a.txt.bak} #復制的時候可隨意直接修改文件名 3 [root@localhost ~]# cp /tmp/a.txt{,.bak} #復制的時候不能隨意修改文件名,只能在原有的文件名后面加后綴
4.7復制文件或者目錄有以下注意事項:
cp命令:
單源文件復制:
如果目標文件不存在,則事先創建此文件,並復制源文件的內容至目標文件中
如果目標文件存在,並且是非目錄文件,則覆蓋目標文件
如果目標文件存在,並且是目錄文件,則先在目標目錄下創建一個與源文件同名的文件,並復制源文件內容至目標文件
多源文件復制:
如果目標不存在,報錯
如果目標文件存在,並且是非目錄,報錯
如果目標文件存在,並且是目錄,分別復制每個文件至目標目錄中,並保持原名
復制目錄:
如果目標不存在,則先創建目錄,並按照文件復制的方式,將目錄內的文件復制到目標目錄中
如果目標存在,並且是文件,報錯
如果目錄存在,並且是目錄,將整個目錄都復制到目標目錄中