拷貝檔案和目錄是每一個作業系統的基本指令,備份行為基本上是創建檔案和目錄的副本,在Linux系統下,我們可以用cp命令來實作,
copy 命令是什么

正如我們在上文提到的,cp是一個用來創建檔案和目錄副本的命令,在這里我們提供了一些在日常操作中可能用到的cp命令的實體,
1. 不帶任何引數下,運行cp
這是 cp 命令最基礎的使用, 拷貝名為 myfile.txt 從一個位置到另一個位置,我們可以像這樣子輸入:
$ cp myfile.txt /home/pungki/office

Copy without options
如果我們沒有輸入絕對路徑,這意味著我們正在當前目錄下拷貝一個檔案,在上面的實體中,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

Copying multiple files
3. 拷貝一個目錄
要拷貝一個目錄的話會有點棘手,你需要添加 -r 或者 -R 選項來實作,-r或-R 選項表明遞回操作,無論該目錄是否為空目錄,這個選項都是必要的,如下示例:
$ cp -r directory_1 /home/pungki/office

Copy directory
需要注意的一件事,你需要移除在目錄名尾部的斜杠,否則你會收到類似的錯誤資訊cp: omitting directory‘directory_1/’

Copy directory error
如果你收到錯誤資訊,則目錄不會被拷貝到目標檔案夾,
4. 創建檔案的硬鏈接,而不是拷貝它們
拷貝檔案意味著你必須使用一些存盤空間來儲存拷貝的檔案,有時候出于某種原因,你可能想要創建“快捷方式”或者鏈接到檔案,而不是拷貝它們,要做到這一點,我們可以使用-l選項,
$ cp -l file_4.txt /home/pungki/office

Copy hardlinks
從上圖看出,我們看到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,跟它的原檔案一樣

Inode number of copied file
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指向了原檔案,在其檔案名后標記了箭頭符號,

Symbolic links
6. 不隨符號鏈接拷貝原檔案
[譯注:意思是只拷貝符號鏈接檔案]
我們可以用 -P 選項來實作,當對符號鏈接使用 cp 命令,它會照原樣拷貝它自身,來看看下面的示例,
$ cp -P file_6.txt ./movie

Copy using -P option
如你所見,cp 命令照原樣拷貝file_6.txt自身,檔案型別仍然是一個符號鏈接,
7. 隨符號鏈接拷貝原文件
現在我們可以試一下-L選項,基本上,這個剛好與上面的 -P 選項 相反,下面是個示例:
$ cp -L file_6.txt ./movie

Copy using -L option
使用這個選項,拷貝的檔案將會和file_6.txt原檔案一樣,我們可以從檔案大小看出來,拷貝的檔案有50 位元組而當file_6.txt作為符號鏈接時檔案大小只有33 位元組,
8. 檔案歸檔
當我們去拷貝一個目錄時,我們會用-r或者-R選項,但是我們也可以用-a選項來歸檔檔案,這樣會創建檔案和目錄的準確套錄,如果有的話也可以包括符號鏈接,下面是示例:[譯注:-a 會保留原檔案或目錄的屬性]
$ cp -a directory_1/ /home/pungki/office

Copy using -a option
上列的命令會拷貝一個名為 directory1 的目錄到*/home/pungki/office目錄下,如你所見,file*6.txt**依然作為符號鏈接被復制,
9. 顯示正在做什么
默認情況下,當拷貝作業成功時,我們僅僅會再次看到命令提示符,如果你想了解在拷貝檔案時都發生了什么,我們可以用 -v 選項,
$ cp -v *.txt /home/pungki/office

Verbose option
當我們從當前目錄下拷貝所有的 txt 檔案到 /home/pungki/office 目錄,-v選項會顯示正在操作的程序,這些額外的資訊會幫助我們了解更多拷貝程序,
10. 當原檔案較目標檔案新時拷貝
我們用 -u選項來實作,下面是具體示例:
$ cp -vu *.txt /home/pungki/office

Copy only if newer
起初我們看到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/

Interactive mode
12. 創建備份檔案
當目標目錄已經含有同名檔案,默認情況下 cp 命令會覆寫目標目錄下的同名檔案,使用 --backup 選項,cp 命令會為每一個現有的目標檔案做一個備份,../office 相對于 /home/pungki/office ,下面是示例:
$ cp --backup=simple -v *.txt ../office

Backup option
正如我們看到的,--backup=simple 選項會創建一個在檔案名末尾用波浪符標記(~)的備份檔案,--backup 選項也有一些其他控制:
- none, off:從不備份(即使給出 --backup)
- numbered, t:用編號備份
- existing, nil :如果編號備份存在則使用編號備份,否者用簡易備份[譯注:也就是用波浪號]
- simple, never :總是使用簡易備份
13. 只拷貝檔案屬性
cp 命令也提供給我們 --attributes-only 選項,顧名思義,這個選項只會拷貝檔案名及其屬性,不會拷貝任何資料,下面是示例:
$ cp --attributes-only file_6.txt -v ../office

Copy attributes only
從上圖看出, 原檔案 file_6.txt 有 50 位元組大小,用了 --attributes-only選項,拷貝的檔案只有0位元組大小,這是因為檔案內容并沒有拷貝,
14. 強制拷貝
用了 -f 選項會強制進行拷貝操作,如果目標檔案不能打開,可以用 -f 嘗試一下,
$ cp -f *.txt -v ../office

Copy with force
15. 在拷貝之前先洗掉目標
我們可以用,--remove-destination 選項 實作,這個選項與上面的-f選項形成對照,如果 cp 命令在目標目錄下發現同名檔案, cp 命令會先洗掉目標檔案,然后再拷貝一份新的,下面是示例:
$ cp --remove-destination *.txt -v ../office

Remove destination option
總結
cp 命令是 Linux 下最基礎的命令之一,對于那些想要學習 Linux 的人,必須得把這個命令掌握,當然你也可以在你的終端下鍵入 man cp 或者 cp --help 來顯示更多幫助資訊,

本文由博客一文多發平臺 OpenWrite 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/253324.html
標籤:Linux
上一篇:linux安裝
下一篇:linux驅動安裝
