Linux cp
命令詳細教程
cp
是 Linux 系統中最常用的命令之一,用于復制文件或目錄。- 它可以將源文件/目錄復制到指定的目標位置,支持批量復制、強制覆蓋、保留文件屬性等功能。下面詳細介紹其用法。
- 資料已經分類整理好:
https://pan.quark.cn/s/26d73f7dd8a7
一、基本語法
cp [選項] 源文件/目錄 目標文件/目錄
- 源:可以是一個或多個文件/目錄(多個源時,目標必須是目錄)。
- 目標:若源是文件,目標可以是文件(重命名復制)或目錄(復制到該目錄下);若源是目錄,目標必須是目錄(需配合
-r
選項)。
二、常用選項
選項 | 功能描述 |
---|---|
-i | 交互式操作,若目標文件已存在,會提示是否覆蓋(避免誤操作) |
-f | 強制覆蓋,若目標文件已存在,直接覆蓋且不提示(慎用) |
-r /-R | 遞歸復制目錄,用于復制文件夾及其所有子內容 |
-p | 保留源文件的屬性(如權限、所有者、修改時間等) |
-v | 顯示復制過程(verbose,詳細輸出) |
-a | 等同于 -dR --preserve=all ,常用于備份(保留鏈接、遞歸復制、保留所有屬性) |
-l | 不復制文件,而是創建硬鏈接(鏈接文件與源文件共享數據) |
-s | 創建符號鏈接(軟鏈接),而非復制文件內容 |
三、實際操作示例
1. 復制文件到指定目錄
將文件 file.txt
復制到 docs
目錄下(若 docs
不存在,會報錯):
cp file.txt docs/
- 若
docs
目錄存在,file.txt
會被復制到docs
中,文件名不變。
2. 復制文件并重命名
將 file.txt
復制到當前目錄,并命名為 file_copy.txt
:
cp file.txt file_copy.txt
- 若
file_copy.txt
已存在,默認會直接覆蓋(非交互式shell),建議加-i
選項確認:cp -i file.txt file_copy.txt # 提示:cp: 是否覆蓋 'file_copy.txt'? y
3. 復制多個文件到目錄
將 a.txt
、b.txt
復制到 backup
目錄:
cp a.txt b.txt backup/
- 多個源文件時,目標必須是目錄,否則會報錯。
4. 復制目錄(遞歸復制)
復制目錄 dir1
及其所有子文件/子目錄到 dir2
(dir2
可不存在):
cp -r dir1 dir2 # 若 dir2 不存在,會創建 dir2 并復制 dir1 內容到其中# 若 dir2 存在,會將 dir1 復制到 dir2 內(即 dir2/dir1)
- 必須加
-r
或-R
,否則會提示“cp: 無法 stat ‘dir1’: 是一個目錄”。
5. 保留文件屬性復制
復制 data.csv
到 archive
目錄,并保留其權限、修改時間等屬性:
cp -p data.csv archive/
- 可用
ls -l
對比復制前后的文件屬性。
6. 強制覆蓋文件
當目標文件存在時,無需提示直接覆蓋(慎用,可能誤刪數據):
cp -f old.txt new.txt # 即使 new.txt 存在,也直接覆蓋
7. 創建軟鏈接/硬鏈接
- 創建軟鏈接(類似Windows快捷方式):
cp -s source.txt link.txt # link.txt 指向 source.txt,刪除 source.txt 后 link.txt 失效
- 創建硬鏈接(與源文件共享數據,刪除源文件不影響鏈接文件):
cp -l source.txt hardlink.txt
8. 備份式復制(保留所有屬性)
復制目錄 project
到 backup
,保留鏈接、權限、所有者等所有屬性:
cp -a project/ backup/ # 常用于完整備份目錄
四、注意事項
- 復制目錄必須加
-r
:若忘記加-r
,復制目錄會報錯。 - 目標路徑的斜杠區別:
cp file.txt dir
與cp file.txt dir/
效果相同(若dir
是目錄)。- 但推薦加
/
明確表示目標是目錄,避免誤操作(如dir
是文件時,會覆蓋該文件)。
- 權限問題:若復制到沒有寫入權限的目錄(如
/root
),會提示“權限不夠”,需用sudo
提升權限。 - 避免覆蓋重要文件:優先使用
-i
選項,或通過alias cp='cp -i'
設置別名(大多數Linux默認配置)。
通過靈活組合選項,cp
命令可以滿足各種復制需求,從簡單的文件復制到復雜的目錄備份均能勝任。