複製檔案

若要將 source.txt 檔案複製一份到 dest.txt,可以執行:

1
2
# 將 source.txt 複製到 dest.txt
cp source.txt dest.txt

複製目錄

如果要複製整個目錄以及該目錄下的所有子目錄與檔案,可以加上 -r 參數(或是 -R、–recursive 參數亦可),以遞迴的方式進行複製:

1
2
# 將 myfolder 目錄複製到 /path/to/ 路徑下
cp -r myfolder /path/to/

強制覆蓋檔案

如果希望 cp 指令在無法寫入目的檔案時,嘗試刪除目的檔案,再重新複製一份新的檔案,可以加上 -f 或 –force 參數:

1
cp -f source.txt dest.txt

不要覆蓋既有檔案

如果希望 cp 指令遇到目的檔案已經存在的狀況,不要覆蓋既有的檔案,可以加上 -n 或 –no-clobber 參數:

1
cp -n source.txt dest.txt

自動備份檔案

若希望 cp 指令在覆蓋檔案時,可以將舊檔案自動備份起來,可以加上 -b 或 –backup 參數:

1
cp -b source.txt dest.txt

保留檔案屬性

若希望 cp 在複製檔案時,可以連同檔案屬性一起複製,可以加上 -p 或 –preserve 參數:

1
cp -p source.txt dest.txt

連結檔解析

假設我們建立一個連結檔 link.txt 指向 source.txt:

建立連結檔

1
ln -s source.txt link.txt

如果希望 cp 指令在複製連結檔案時,能夠解析連結檔所指向的實際檔案,複製那一個實際的目標檔案,可以加上 -L 或 –dereference 參數:

1
cp -L link.txt dest.txt

由於 link.txt 是指向 source.txt 的連結檔,所以這裡的 dest.txt 實際上就是從 source.txt 所複製出來了。

若希望 cp 指令在複製連結檔案時,不要進行連結的解析,僅將連結檔直接複製,則可改用 -P 或 –no-dereference 參數:

1
cp -P link.txt link2.txt

參考資料

Linux 複製檔案 cp 指令用法教學與範例

HowtoForge:Linux cp command tutorial for beginners (8 examples)
GeeksforGeeks:cp command in Linux with examples