拷貝文件和目錄是每一個操作系統的基本指令。備份行為基本上是創建文件和目錄的副本。在Linux系統下,我們可以用cp命令來實現。
正如我們在上文提到的,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自身。文件類型仍然是一個符號鏈接。