cp 複製檔案或目錄

2021-07-16 02:53:22 字數 4375 閱讀 8903

命令解釋

複製(cp)這個命令特別重要,我們會經常進行一些資料的複製,但是這個命令也可以建立連線檔案(也就是我們所熟悉的快捷方式)。如果你不是管理員(root)使用者,就會牽扯到許可權這個部分的困擾,接下來我們進行舉例一一說明。

命令說明

[root@localhost ~]# cp [-adfilprsu] 原始檔(source) 目標檔案(destination)

[root@localhost ~]# cp [options] source1 source2 source3 ... destination

引數:-a : 相當於 -pdr 的意思,我們下面會說明用法。[【常用】]

-d : 若原始檔為連線檔案的屬性,怎麼複製連線檔案屬性而非檔案本身。

-f : 為強制(force)的意思,若目標檔案已經存在且無法開啟,則刪除後再嘗試一次。

-i : 如目標檔案(destination)已經存在時,在覆蓋時會先詢問。[【常用】]

-l : 進行硬連線的連線檔案建立,而非複製檔案本身。

-p : 連同檔案的屬性一起複製過去,而非使用預設屬性。【備份常用】

-r : 遞迴持續複製,用於目錄的複製行為。[【常用】]

-s : 複製成為符號鏈結檔案,即「快捷方式」檔案。[【常用】]

-u : 若 destination 比 source 舊才更新 destination。

最後要注意,如果原始檔有兩個以上,則最後乙個的目標檔案一定要是「目錄」才行!

命令舉例

例題一、將123.log檔案複製到/test下,並更名為456.log

[root@localhost ceshi]# ll

-rw-r--r-- 1 root

root 0 08-02 21:00 123.log

drwxr-xr-x 2 root

root 4096 08-02 21:01

test

[root@localhost ceshi]# cp 123.

log test/456.

log[root@localhost ceshi]# cp -i 123.

log test/456.

logcp:是否覆蓋「test/456.

log」? n <= 不覆蓋,取消操作。 y <= 覆蓋。

# 由於test資料夾中已經存在456.

log了,加上 -i 引數後,則在覆蓋前會詢問使用者是否確定,就可以按下 n 或 y 來二次確認了!

例題

二、檢視/tmp目錄下,會看到haha.log,將它複製到/home/ceshi下並且檢視屬性

root@localhost ceshi]# ll /tmp

-rw-rw-r-- 1 wenjie wenjie 0 08-02

21:09 haha.log

[root@localhost ceshi]# cp /tmp/haha.log . <= 想要複製到當前目錄,最後的「.」不能忘

[root@localhost ceshi]# ll /tmp/haha.log haha.log

-rw-r--r-- 1 root root 0 08-02

21:11 haha.log

-rw-rw-r-- 1 wenjie wenjie 0 08-02

21:09 /tmp/haha.log

# 在不加任何引數的情況下,檔案的某些屬性/許可權會改變,連建立時間也不一樣了。

[root@localhost ceshi]# cp -a /tmp/haha.log haha2.log

[root@localhost ceshi]# ll /tmp/haha.log haha2.log

-rw-rw-r-- 1 wenjie wenjie 0 08-02

21:09 haha2.log

-rw-rw-r-- 1 wenjie wenjie 0 08-02

21:09 /tmp/haha.log

# 兩個檔案屬性一模一樣,這就是 -a 的特性。

例題

三、複製/tmp目錄到/home/ceshi目錄下面去

[root@localhost ceshi]# cp /tmp .

cp: 略過目錄 「/tmp」 <= 不能直接複製目錄,需要加上 -r 的引數。

[root@localhost ceshi]# cp -r /tmp .

# -r 雖然是用來複製目錄的,但是複製過來,檔案與目錄的許可權可能會被改變

# 所以,也可以利用「cp - a /tmp .」來執行命令。

例題

四、將例題一複製的 456.log 建立乙個連線檔案

[root@localhost ceshi]# cp -l test/456.

log aaa.log

[root@localhost ceshi]# cp -s test/456.

log bbb.log

[root@localhost ceshi]# ll

-rw-r--r-- 2 root root 47

08-02

23:05 aaa.log

lrwxrwxrwx 1 root root 12

08-02

23:08 bbb.log -> test/456.

logdrwxr-xr-x 2 root root 4096

08-02

23:05 test

使用-l建立的aaa.log就是乙個硬連線檔案,而使用-s建立的bbb.log就是乙個軟連線檔案,也就是說,bbb.log就是相當於咱們熟悉的「快捷方式」。

例題五、將例題四生成的bbb.log連線檔案複製

[root@localhost ceshi]# cp bbb.log ccc.log

[root@localhost ceshi]# cp -d bbb.log ddd.log

[root@localhost ceshi]# ll bbb.log ccc.log ddd.log test/456.

log

lrwxrwxrwx 1 root root 12

08-02

23:08 bbb.log -> test/456.

log-rw-r--r-- 1 root root 75

08-02

23:15 ccc.log

lrwxrwxrwx 1 root root 12

08-02

23:16 ddd.log -> test/456.

log-rw-r--r-- 2 root root 75

08-02

23:09 test/456.

log# 能看出來,ccc.log與原始檔一模一樣,這裡很有意思,咱們複製的是連線檔案,結果卻將原檔案複製過來了

# 也就是說,如果沒有加任何引數時,cp複製的是原始檔,而非連線檔案本身。

# 若要複製連線檔案的屬性,就得使用 -d 的引數了!

例題

六、將1、2、3檔案複製到test資料夾下

[

root@localhost

ceshi]#

ll-rw-

r--r

--1root

root008

-0223:231-

rw-r-

-r--

1root

root008

-0223:232-

rw-r-

-r--

1root

root008

-0223:23

3drwxr-xr

-x2root

root

409608-

0223:23

test

[

root@localhost

ceshi]#

cp123

test

[root@localhost

ceshi]#

lltest-rw

-r--

r--1

root

root008

-0223:251-

rw-r-

-r--

1root

root008

-0223:252-

rw-r-

-r--

1root

root008

-0223:253#

可以將多個檔案複製到同乙個目錄中,但是最後一定要是目錄

cp 複製檔案或目錄

root linux cp adf ilprsu 檔 source 目的檔 destination root linux cp options source1 source2 source3 directory 引數 a 相當於 pdr 的意思 d 若 檔案為鏈結檔案的屬性 link file 則複...

cp 複製檔案或目錄

功能 複製檔案或目錄 說明 cp指令用於複製檔案或目錄,如同時指定兩個以上的檔案或目錄,且最後的目的地是乙個已經存在的目錄,則它會把前面指定的所有檔案或目錄複製到此目錄中。若同時指定多個檔案或目錄,而最後的目的地並非乙個已存在的目錄,則會出現錯誤資訊 引數 a 或 archive 此引數的效果和同時...

複製檔案或目錄命令 cp

1 命令名稱 cp 2 英文原意 copy 3 命令所在路徑 bin cp 4 執行許可權 所有使用者 5 功能描述 複製檔案或目錄 語法 cp rp 原檔案或目錄 目標目錄 r 複製目錄 p 保留檔案屬性 例子 比如我們將 root 目錄下的install.log 檔案複製到 tmp 目錄下 可以...