Linux cp 命令的15個示例 - 建立檔案和目錄的副本
複製檔案和目錄是每一個作業系統的基本指令。備份行為基本上是建立檔案和目錄的副本。在Linux系統下,我們可以用cp命令來實現。
copy 命令是什麼
正如我們在上文提到的,cp是一個用來建立檔案和目錄副本的命令。在這裡我們提供了一些在日常操作中可能用到的cp命令的例項。
1. 不帶任何引數下,執行cp
這是 cp 命令最基礎的使用。 複製名為 myfile.txt 從一個位置到另一個位置,我們可以像這樣子輸入:
$ cp myfile.txt /home/pungki/office
如果我們沒有輸入絕對路徑,這意味著我們正在當前目錄下複製一個檔案。在上面的例項中,myfile.txt位於/home/pungki/Documents目錄下。如果我們當前目錄正是/home/pungki/Documets,那麼沒有必要輸入/home/pungki/Documents/myfile.txt來複製檔案。當/home/pungki/office是一個目錄,則檔案會複製到裡面。
2. 同時複製多個檔案
要在同時複製多個檔案,我們只需要將多個檔案用空格隔開。如下示例:
$ cp file_1.txt file_2.txt file_3.txt /home/pungki/office
3. 複製一個目錄
要複製一個目錄的話會有點棘手。你需要新增 -r 或者 -R 選項來實現。-r或-R 選項表明遞迴操作。無論該目錄是否為空目錄,這個選項都是必要的。如下示例:
$ cp -r directory_1 /home/pungki/office
需要注意的一件事,你需要移除在目錄名尾部的斜槓。否則你會收到類似的錯誤資訊cp: omitting directory‘directory_1/’
如果你收到錯誤資訊,則目錄不會被複製到目標資料夾。
4. 建立檔案的硬連結,而不是複製它們
複製檔案意味著你必須使用一些儲存空間來儲存複製的檔案。有時候出於某種原因,你可能想要建立“快捷方式”或者連結到檔案,而不是複製它們。要做到這一點,我們可以使用-l選項。
$ cp -l file_4.txt /home/pungki/office
從上圖看出,我們看到file_4.txt的硬連結已經複製到/home/pungki/office/file_4.txt。標記有同樣的 inode, 835386。但是請注意,硬連結不能用來建立目錄。下面讓我們看一個例子。
原目錄 directory_1 的 inode 值是 278230
原檔案 file_5.txt 的 inode 值是 279231
對 directory_1 執行 cp 命令
複製的 directory_1副本的 inode 值是 274800
複製的 file_5.txt副本的 inode 值是 279231。跟它的原檔案一樣
5. 建立檔案的符號連結
也有一種連結叫做 軟連結 或 符號連結。我們用 -s 選項來實現。下面是命令的示例。
$ cp -s /home/pungki/Documents/file_6.txt file_6.txt
建立符號連結只能在當前目錄下進行。在上面的截圖中,我們想要建立符號連結 /home/pungki/office/file6.txt 指向原檔案 /home/pungki/Documents/file6.txt。但是為了建立符號連結,我必須在將/home/pungki/office作為目標目錄。一旦我設法進入目錄,我就可以向上面一樣執行 cp -s 命令。
現在你列出檔案詳情,你會看到/home/pungki/office/file_6.txt指向了原檔案。在其檔名後標記了箭頭符號。
6. 不隨符號連結複製原檔案
[譯註:意思是隻複製符號連結檔案]
我們可以用 -P 選項來實現。當對符號連結使用 cp 命令,它會照原樣複製它自身。來看看下面的示例。
$ cp -P file_6.txt ./movie
如你所見,cp 命令照原樣複製file_6.txt自身。檔案型別仍然是一個符號連結。
7. 隨符號連結複製原檔案
現在我們可以試一下-L選項。基本上,這個剛好與上面的 -P 選項 相反。下面是個示例:
$ cp -L file_6.txt ./movie
使用這個選項,複製的檔案將會和file_6.txt原檔案一樣。我們可以從檔案大小看出來。複製的檔案有50 位元組而當file_6.txt作為符號連結時檔案大小隻有33 位元組。
8. 檔案歸檔
當我們去複製一個目錄時,我們會用-r或者-R選項。但是我們也可以用-a選項來歸檔檔案。這樣會建立檔案和目錄的準確套錄,如果有的話也可以包括符號連結。下面是示例:[譯註:-a 會保留原檔案或目錄的屬性]
$ cp -a directory_1/ /home/pungki/office
上列的命令會複製一個名為 directory1 的目錄到/home/pungki/office目錄下。如你所見,**file6.txt**依然作為符號連結被複制。
9. 顯示正在做什麼
預設情況下,當複製作業成功時,我們僅僅會再次看到命令提示符。如果你想了解在複製檔案時都發生了什麼,我們可以用 -v 選項。
$ cp -v *.txt /home/pungki/office
當我們從當前目錄下複製所有的 txt 檔案到 /home/pungki/office 目錄,-v選項會顯示正在操作的過程。這些額外的資訊會幫助我們瞭解更多複製過程。
10. 當原檔案較目標檔案新時複製
我們用 -u選項來實現。下面是具體示例:
$ cp -vu *.txt /home/pungki/office
起初我們看到file_1.txt 是0位元組大小。然後我們用 vi 編輯,加入一些內容並儲存。接下來,我們發現檔案大小已經變為了 36 個位元組。 與此同時在/home/pungki/office目錄中,我們已經包含了所有txt檔案。當我們用 -u 選項,結合 -v 選項來檢視具體操作,cp 命令會只複製比目標目錄下新的檔案。因此,我們看到只有 file_1.txt 複製到 /home/pungki/office 目錄下。
11. 使用互動模式
互動模式下會詢問是否覆蓋目標目錄下的檔案。使用 -i 選項,啟用互動模式。
$ cp -ir directory_1/ /home/pungki/office/
12. 建立備份檔案
當目標目錄已經含有同名檔案,預設情況下 cp 命令會覆蓋目標目錄下的同名檔案。使用 --backup 選項,cp 命令會為每一個現有的目標檔案做一個備份。../office 相對於 /home/pungki/office 。下面是示例:
$ cp --backup=simple -v *.txt ../office
正如我們看到的,--backup=simple 選項會建立一個在檔名末尾用波浪符標記(~)的備份檔案。--backup 選項也有一些其他控制:
- none, off:從不備份(即使給出 --backup)
- numbered, t:用編號備份
- existing, nil :如果編號備份存在則使用編號備份,否者用簡易備份[譯註:也就是用波浪號]
- simple, never :總是使用簡易備份
13. 只複製檔案屬性
cp 命令也提供給我們 --attributes-only 選項。顧名思義,這個選項只會複製檔名及其屬性,不會複製任何資料。下面是示例:
$ cp --attributes-only file_6.txt -v ../office
從上圖看出, 原檔案 file_6.txt 有 50 位元組大小。用了 --attributes-only選項,複製的檔案只有0位元組大小。這是因為檔案內容並沒有複製。
14. 強制複製
用了 -f 選項會強制進行複製操作。如果目標檔案不能開啟,可以用 -f 嘗試一下。
$ cp -f *.txt -v ../office
15. 在複製之前先刪除目標
我們可以用,--remove-destination 選項 實現。這個選項與上面的-f選項形成對照。如果 cp 命令在目標目錄下發現同名檔案, cp 命令會先刪除目標檔案,然後再複製一份新的。下面是示例:
$ cp --remove-destination *.txt -v ../office
總結
cp 命令是 Linux 下最基礎的命令之一。對於那些想要學習 Linux 的人,必須得把這個命令掌握。當然你也可以在你的終端下鍵入 man cp 或者 cp --help 來顯示更多幫助資訊。
via: http://linoxide.com/linux-command/linux-cp-command/
相關文章
- cp 快捷命令:複製檔案到多個目錄
- linux命令之----cp命令用於複製檔案或目錄Linux
- adb命令管理Linux 檔案和目錄Linux
- 筆記:Linux命令(目錄和檔案管理)筆記Linux
- linux rm 命令(刪除檔案和目錄)Linux
- linux建立目錄命令Linux
- Linux常見命令-目錄檔案命令Linux
- linux建立賬戶並自動生成主目錄和主目錄下的檔案Linux
- 快速上手Linux核心命令(三):檔案和目錄操作命令Linux
- linux檔案與目錄管理命令Linux
- linux伺服器目錄檔案的命令操作Linux伺服器
- Django中型專案的目錄結構和一個應用建立啟動示例Django
- Linux檔案和目錄管理Linux
- Linux的檔案屬性和目錄配置Linux
- Linux rm(刪除檔案/目錄) 命令Linux
- linux目錄及檔案命令學習Linux
- linux查詢檔案或目錄命令Linux
- linux下使用rm命令刪除一個有大量檔案的目錄Linux
- Linux中的15個基本‘ls’命令示例Linux
- Linux去掉檔名的目錄和字尾命令basenameLinux
- Linux檔案系統-目錄和檔案管理Linux
- Linux rm命令:刪除檔案或目錄Linux
- 在Linux中用chattr和lsattr命令管理檔案和目錄屬性Linux
- 無法建立目錄或檔案 無法建立目錄的解決辦法
- 關於檔案系統在建立目錄檔案和普通檔案時的區別
- 與Linux檔案和目錄管理相關的一些重要命令Linux
- Linux 檔案系統的目錄Linux
- scp命令 用於Linux之間複製檔案和目錄Linux
- 列出目錄/檔案命令ls
- linux 的cp命令Linux
- 常用的linux60個命令目錄Linux
- Linux檔案和目錄的粘滯位(sticky bit)Linux
- Linux 下檔案和目錄的顏色含義Linux
- Linux 檔案與目錄管理常用命令 記錄Linux
- 【知識分享】linux伺服器目錄檔案的命令操作Linux伺服器
- 第二章 檔案和目錄操作命令
- 在 Linux 中如何歸檔檔案和目錄Linux
- Linux dd 在當前目錄建立檔案系統Linux