Linux cp 複製檔案與目錄
cp 是 Copy 的縮寫,用於複製檔案或目錄。
基本用法
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