複製鏈接
請複製以下鏈接發送給好友

CP

(Linux文件複製命令)

鎖定
cp指令是用於Linux中文件複製的命令,後面可接選項和參數,形如:command [options] [arguments] ,其中options 用於控制命令的行為,arguments表示命令的參數。cp命令可以將多個源路徑的文件複製到一個目標路徑中,多個源路徑使用空格隔開,目標路徑放在最後 [1] 
外文名
CP
使用權限
所有使用者
類    型
Linux文件複製命令
補    充
可以通過cp -help查看幫助文檔
其他文件操作命令
rm,mv,mkdir,ls
備    註
Linux命令對大小寫敏感,cp和CP不是同一個命令

CP用法

cp [options] 源文件 目標文件
cp [options] 源文件1 源文件2 源文件3 …… 目標目錄
cp [options] 源目錄1 源目錄2 源目錄3 …… 目標目錄

CP選項説明

-a,--archive:相當於 -dR -preserve=all
--attributes-only:僅僅複製屬性而不復制文件的數據部分
--backup[=control]:為每個存在的目標文件進行備份,例如:如果目標文件try.txt已經存在的話,備份文件就是try.txt~。備份文件的後綴為 "~",除非使用了 --suffix 選項或 SIMPLE_BACKUP_SUFFIX 環境變量指定了其他後綴。版本控制的方式可通過 --backup 選項或 VERSION_CONTROL 環境變量來選擇。以下是control可用的設置值:
none, off :不進行備份(即使使用了 --backup 選項)
numbered, t :使用帶有數字編號的備份文件進行備份
existing, nil : 若帶數字的備份文件已經存在則使用 numbered,否則使用 simple
simple, never : 總是使用簡單方式進行備份
-b : 類似--backup 只不過不能接受參數
--copy-contents :在遞歸操作時複製特殊文件的內容
-d :等於 --no-dereference --preserve=links。
-f, --force: 如果已存在的目標文件無法打開,則將其刪除並重試(該選項在與 -n 選項同時使用時將被忽略)
-i, --interactive: 覆蓋前詢問(使前面的 -n 選項失效)
-H:跟隨命令行裏的 <源> 中的符號鏈接
-l, --link:硬鏈接文件以代替複製
-L, --dereference:總是跟隨 <源> 裏的符號鏈接
-n, --no-clobber:不要覆蓋已存在的文件(使前面的 -i 選項失效)
-P, --no-dereference:從不跟隨 <源> 中的符號鏈接
-p: 等於--preserve=mode,ownership,timestamps
--preserve[=屬性列表]:如果可能的話,保留指定的屬性(默認:mode,ownership,timestamps)其他屬性:context、links、xattr、all
--no-preserve=屬性列表:不保留指定的屬性
--parents:在 <目錄> 下使用完整的源文件路徑
-R, -r, --recursive:遞歸地複製目錄
--reflink[=when]:控制克隆/CoW 副本。當指定了 --reflink[=always] 參數時,將進行輕量級複製,此時數據塊只在被修改時進行復制。如果因無法進行這種複製而導致複製失敗,或者指定了 --reflink=auto,程序將會回退到標準複製操作。使用 --reflink=never 可以確保永遠進行標準複製。
--remove-destination:嘗試打開目標文件前先刪除已存在的目標文件(和 --force 選項有區別)
--sparse=when:控制創建稀疏文件的方式。默認情況下,將通過簡單的啓發式算法檢測稀疏的<源> 文件,並將對應的 <目標>文件設為稀疏。這也是 --sparse=auto 的行為。若使用 --sparse=always,則只要<源> 文件包含了足夠長的零字節序列,都會將 <目標> 文件創建為稀疏文件。使用 --sparse=never 可以禁止創建稀疏文件。
--strip-trailing-slashes:刪除參數中所有 <源> 末尾的斜槓
-s, --symbolic-link:只創建符號鏈接而不復制文件
-S, --suffix=後綴:自行指定備份文件的後綴(與—backup命令有關)
-t, --target-directory=目錄:將所有 <源> 參數複製到 <目錄>
-T, --no-target-directory:將 <目標> 視為普通文件
-u, --update:只在 <源> 比目標文件新,或目標文件不存在時才進行復制
-v, --verbose:顯示詳細步驟
-x, --one-file-system:不跨越文件系統進行操作
-Z:設置目標文件的 SELinux 安全上下文為默認類型
--context[=CTX]:類似 -Z,但如果指定了 < CTX >,則將 SELinux或 SMACK 安全上下文設置為 < CTX >
--help:顯示此幫助信息並退出
--version:顯示版本信息並退出 [2] 

CP使用範例

複製文件,只有源文件比目標文件的修改時間新或者目標文件不存在時,才複製文件
cp -u file1 file2
將文件file1複製成文件file2(file2的內容會丟失)
cp file1 file2
將文件file1複製成文件file2,並保存備份
cp -b file1 file2
採用交互方式將文件file1複製成文件file2(如果file2已經存在會詢問是否覆蓋,輸入y表示覆蓋,輸入n表示不覆蓋)
cp -i file1 file2
將文件file1強制複製成file2,不會詢問是否覆蓋
cp -f file1 file2
將目錄dir1複製成目錄dir2(複製目錄內容時必須加上-R)
cp -R file1 file2
同時將文件file1、file2、file3與目錄dir1複製到dir2
cp -R file1 file2 file3 dir1 dir2
複製時保留文件屬性
cp -p a.txt tmp/
建立硬鏈接文件
cp -l file1 file1_hlink
建立軟鏈接文件(相當於window下的快捷方式,本質不是文件,只是存儲了原文件的位置)
cp -s file1 file1_slink
軟鏈接的複製(如果不添加-d 的話,複製的實際上是軟鏈接指向的文件,添加了-d後複製的file1_slink_2也是一個軟鏈接。)
cp -d file1_slink file1_slink_2
參考資料
  • 1.    鳥哥.LINUX中國改變. 鳥哥的Linux私房菜 基礎學習篇 第4版[M].北京:人民郵電出版社,2018.11
  • 2.    Copy files and directories  .GNU[引用日期2024-06-16]