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

文章推薦指數: 80 %
投票人數:10人

在Linux 系統之中若要進行檔案或目錄的複製,可以使用 cp 指令,而除了簡單的複製檔案之外,此指令也具有額外的建立連結、自動備份等附加功能,以下是 cp ... Blogger舊站 關於 Facebook Flickr 物聯網 網站架設 程式設計 統計 素食 特價優惠 宗教 物聯網 網站架設 程式設計 統計 素食 特價優惠 宗教 Linux複製檔案cp指令用法教學與範例 2021/11/09 0則留言 本篇介紹如何在Linux系統下使用cp指令複製檔案或目錄,並提供常見的使用範例。

在Linux系統之中若要進行檔案或目錄的複製,可以使用cp指令,而除了簡單的複製檔案之外,此指令也具有額外的建立連結、自動備份等附加功能,以下是cp指令的使用方式介紹。

複製檔案 若要將source.txt檔案複製一份到dest.txt,可以執行: #將source.txt複製到dest.txt cpsource.txtdest.txt 若要將source.txt複製到其他目錄之下,可以指定絕對路徑: #將source.txt複製到/path/to/dest.txt cpsource.txt/path/to/dest.txt 如果要將檔案複製到其他目錄,保持原來的檔案名稱,可以僅指定目的目錄即可,也就是說以下兩種寫法是等效的: #將source.txt複製到/path/to/source.txt cpsource.txt/path/to/source.txt #將source.txt複製到/path/to/source.txt cpsource.txt/path/to/ 亦可將多個檔案一起複製到目的目錄: #將source1.txt、source2.txt、source3.txt複製到/path/to目錄中 cpsource1.txtsource2.txtsource3.txt/path/to/ 複製目錄 如果要複製整個目錄以及該目錄下的所有子目錄與檔案,可以加上-r參數(或是-R、--recursive參數亦可),以遞迴的方式進行複製: #將myfolder目錄複製到/path/to/路徑下 cp-rmyfolder/path/to/ 強制覆蓋檔案 若遇到目的檔案已存在的情況,cp指令預設會覆蓋既有的檔案內容,但是如果目的檔案檔案無法寫入(例如檔案權限設定為唯讀),就會無法進行複製的動作。

如果希望cp指令在無法寫入目的檔案時,嘗試刪除目的檔案,再重新複製一份新的檔案,可以加上-f或--force參數: #強制複製檔案 cp-fsource.txtdest.txt 如果希望cp指令在每次複製檔案前都先刪除目的檔案,再進行檔案的複製,則可加上--remove-destination參數: #先刪除目的檔案,再進行複製 cp--remove-destinationsource.txtdest.txt 不要覆蓋既有檔案 如果希望cp指令遇到目的檔案已經存在的狀況,不要覆蓋既有的檔案,可以加上-n或--no-clobber參數: #不要覆蓋既有檔案 cp-nsource.txtdest.txt 另一種方式是加上-i或--interactive參數,讓cp在覆蓋檔案之前,先詢問使用者,經確認之後再進行覆寫: #經確認後再覆寫檔案 cp-isource.txtdest.txt 自動備份檔案 若希望cp指令在覆蓋檔案時,可以將舊檔案自動備份起來,可以加上-b或--backup參數: #自動備份檔案 cp-bsource.txtdest.txt cp指令預設會將原始檔案名稱加上~這個後綴,作為備份檔案名稱(例如dest.txt就會備份至dest.txt~),若要自行指定備份檔名後綴,可以用-S或--suffix參數來更改,例如改用.bak作為備份檔案名稱的後綴: #指定備份檔名後綴 cp-b-S.baksource.txtdest.txt 這樣dest.txt就會被備份至dest.txt.bak。

保留檔案屬性 若希望cp在複製檔案時,可以連同檔案屬性一起複製,可以加上-p或--preserve參數: #保留檔案屬性 cp-psource.txtdest.txt 加上-p或--preserve參數預設會保留權限(mode)、擁有者(ownership)、時間戳記(timestamps),若希望更改保留的屬性種類,可以使用--preserve參數來指定,其餘可用的選項有SELinuxcontexts(context)、連結(links)、延伸屬性(xattr)、所有屬性(all),例如: #指定保留的檔案屬性 cp--preserve=mode,ownership,timestamps,xattrsource.txtdest.txt 若只要複製檔案的屬性,而不要複製檔案本身的資料,可以加上--attributes-only參數: #只複製檔案屬性 cp--attributes-onlysource.txtdest.txt 關於各屬性種類的說明,可以參考Filepermissionsandattributes。

連結檔解析 假設我們建立一個連結檔link.txt指向source.txt: #建立連結檔 ln-ssource.txtlink.txt 如果希望cp指令在複製連結檔案時,能夠解析連結檔所指向的實際檔案,複製那一個實際的目標檔案,可以加上-L或--dereference參數: #複製檔案(解析連結) cp-Llink.txtdest.txt 由於link.txt是指向source.txt的連結檔,所以這裡的dest.txt實際上就是從source.txt所複製出來了。

若希望cp指令在複製連結檔案時,不要進行連結的解析,僅將連結檔直接複製,則可改用-P或--no-dereference參數: #複製檔案(保留連結) cp-Plink.txtlink2.txt 此處所複製出來的link2.txt就僅僅是一個指向source.txt的連結檔案。

以軟連結、硬連結複製檔案 cp指令若加上-s或--symbolic-link參數,可以用軟連結(symboliclink)的方式建立檔案,也就是等同於使用ln-s指令來建立連結: #以軟連結複製檔案 cp-ssource.txtlink.txt 這樣建立的link.txt檔案就是一個指向source.txt的連結檔。

若要以硬連結複製檔案,可以加上-l或--link參數: #以硬連結複製檔案 cp-lsource.txtdest.txt 這裡dest.txt的inode會與source.txt相同。

保留來源目錄結構 若要保留來源檔案的目錄結構,可以加上--parents參數: #保留來源目錄結構 cp--parentspath/to/source.txtmyfolder/ 這樣就會把path/to/source.txt複製到myfolder/path/to/source.txt。

僅更新檔案 cp指令若加上-u或--update參數,就會自動檢查來源檔案與目的檔案的修改時間,如果來源檔案比目的檔案更新,才會更新目的檔案,否則就不做任何動作: #僅更新檔案 cp-usource.txtdest.txt 參考資料 HowtoForge:Linuxcpcommandtutorialforbeginners(8examples) GeeksforGeeks:cpcommandinLinuxwithexamples Linux G.T.Wang 個人使用Linux經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

LeaveaReply取消回覆 留言* Name* Email* Website 搜尋 分類Arduino(5) BeagleBoneBlack(1) DIY(46) Linux(315) MacOSX(32) Octave(15) Perl(12) R(47) Windows(97) WordPress(16) 個人(15) 免費(35) 兒童(28) 實用工具(85) 手機(13) 技巧(45) 有趣(99) 樹莓派(57) 物聯網(55) 玄學(11) 生活(208) 程式設計(137) 統計學(8) 網頁空間(36) 網頁開發(128) 虛擬化(7) 農業(42) 遊戲(9) 開箱(128) 雲端(4) 宗教 如何戒邪淫、遠離婚外情 戒淫寶典:《壽康寶鑑》白話有聲書 公益 台灣世界展望會 智邦公益網 igiving公益網 社團法人新竹縣愛心物資集發協會 Yahoo奇摩公益 ©2021G.T.Wang



請為這篇文章評分?