Linux cp 複製檔案與目錄

cpCopy 的縮寫,用於複製檔案或目錄。

基本用法

cp [來源檔案] [目標檔案或目錄]

1. 複製單一檔案 (另存新檔)

source.txt 複製一份並命名為 destination.txt

cp source.txt destination.txt

2. 複製檔案到另一個目錄

file1.txt 複製到 backup 資料夾中。

cp file1.txt backup/

3. 一次複製多個檔案

你可以指定多個「來源」,只要最後一個參數是「目錄」。這樣會把前面列出的所有檔案都複製進那個目錄裡。

# 把 file1, file2, file3 都複製到 backup 資料夾
cp file1 file2 file3 backup/

常用參數

-r:複製目錄 (Recursive)

這是 cp 最常用的參數!預設的 cp 無法複製目錄。如果你嘗試複製一個目錄,它會報錯:cp: -r not specified; omitting directory 'dir1'

要複製整個資料夾(包含裡面的所有檔案與子資料夾),必須加上 -r (recursive) 或 -R

# 將 folder1 整個複製一份,命名為 folder2
cp -r folder1 folder2

-i:覆寫前詢問 (Interactive)

如果目標檔案已經存在,cp 預設會直接覆蓋它而不警告。如果你怕手滑把重要資料蓋掉,可以使用 -i

cp -i file.txt existing_file.txt

系統會問你:cp: overwrite 'existing_file.txt'?,輸入 y 才會執行。

-p:保留檔案屬性 (Preserve)

預設複製出來的新檔案,其擁有者會是執行指令的使用者,修改時間會是當下時間。 如果你希望新檔案「完全保留」原始檔案的屬性(包括權限、擁有者、時間戳記),請使用 -p。這在備份系統設定檔時很有用。

cp -p config.conf config.conf.bak

-v:顯示複製過程 (Verbose)

不管是複製大量檔案,還是只是想確認指令有沒有跑,-v 可以讓系統把正在複製的檔名印出來。

cp -v *.txt backup/

常用組合技

備份整個網站目錄,並保留所有權限屬性,同時顯示進度:

sudo cp -rpv /var/www/html /var/www/html_bak