1. 程式人生 > >LINUX CP命令詳解

LINUX CP命令詳解

cp (複製檔案或目錄)

[[email protected] ~]# cp [-adfilprsu] 來源檔(source) 目的檔(destination)

[[email protected] ~]# cp [options] source1 source2 source3 …. directory

引數:

 

最後需要注意的,如果來源檔有兩個以上,則最後一個目的檔案一定要是『目錄』才行!

範例:
範例一:將家目錄下的 .bashrc 複製到 /tmp 下,並更名為 bashrc
[[email protected] ~]# cd /tmp
[[email protected] tmp]# cp ~/.bashrc bashrc
[[email protected] tmp]# cp -i ~/.bashrc bashrc
cp: overwrite `basrhc’? n
# 重複作兩次動作,由於 /tmp 底下已經存在 bashrc 了,加上 -i 引數,
# 則在覆蓋前會詢問使用者是否確定!可以按下 n 或者 y 呢!
# 但是,反過來說,如果不想要詢問時,則加上 -f 這個引數來強制直接覆蓋!

範例二:將 /var/log/wtmp 複製到 /tmp 底下
[[email protected] tmp]# cp /var/log/wtmp . <==想要複製到目前的目錄,最後的 . 不要忘
[[email protected] tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 /var/log/wtmp
-rw-r–r– 1 root root 71808 Jul 18 21:58 wtmp
# 注意到了嗎?!在不加任何引數的情況下,檔案的所屬者會改變,連許可權也跟著改變了~
# 這是個很重要的特性!要注意喔!還有,連檔案建立的時間也不一樣了!
# 如果您想要將檔案的所有特性都一起復制過來,可以加上 -a 喔!
[

[email protected] tmp]# cp -a /var/log/wtmp wtmp_2
[[email protected] tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 /var/log/wtmp
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 wtmp_2
# 瞭了吧!整個資料特性完全一模一樣ㄟ!真是不賴~這就是 -a 的特性!

範例三:複製 /etc/ 這個目錄下的所有內容到 /tmp 底下
[[email protected] tmp]# cp /etc/ /tmp
cp: omitting directory `/etc’ <== 如果是目錄,不能直接複製,要加上 -r 的引數
[[email protected] tmp]# cp -r /etc/ /tmp
# 還是要再次的強調喔! -r 是可以複製目錄,但是,檔案與目錄的許可權會被改變~
# 所以,也可以利用 cp -a /etc /tmp 來下達指令喔!

範例四:將範例一複製的 bashrc 建立一個連結檔 (symbolic link)
[[email protected] tmp]# ls -l bashrc
-rw-r–r– 1 root root 395 Jul 18 22:08 bashrc
[[email protected] tmp]# cp -s bashrc bashrc_slink
[[email protected] tmp]# cp -l bashrc bashrc_hlink
[[email protected] tmp]# ls -l bashrc*
-rw-r–r– 2 root root 395 Jul 18 22:08 bashrc
-rw-r–r– 2 root root 395 Jul 18 22:08 bashrc_hlink
lrwxrwxrwx 1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc
# 那個 bashrc_slink 是由 -s 的引數造成的,建立的是一個『快捷方式』,
# 所以您會看到在檔案的最右邊,會顯示這個檔案是『連結』到哪裡去的!
# 至於那個 bashrc_hlink 有趣了!建立了這個檔案之後, bashrc 與 bashrc_hlink
# 所有的引數都一樣,只是,第二欄的 link 數改變成為 2 了~而不是原本的 1 喔!
# 這兩種連結的方式的異同,我們會在下一章裡面進行介紹的!

範例五:若 ~/.bashrc 比 /tmp/bashrc 新才複製過來
[[email protected] tmp]# cp -u ~/.bashrc /tmp/bashrc
# 這個 -u 的特性,是在目標檔案與來源檔案有差異時,才會複製的。
# 所以,比較常被用於『備份』的工作當中喔! ^_^

範例六:將範例四造成的 bashrc_slink 複製成為 bashrc_slink_2
[[email protected] tmp]# cp bashrc_slink bashrc_slink_2
[[email protected] tmp]# ls -l bashrc_slink*
lrwxrwxrwx 1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc
-rw-r–r– 1 root root 395 Jul 18 22:48 bashrc_slink_2
# 這個例子也是很有趣喔!原本複製的是連結檔,但是卻將連結檔的實際檔案複製過來了
# 也就是說,如果沒有加上任何引數時,複製的是原始檔,而非連結檔案的屬性!
# 若要複製連結檔案的屬性,就得要使用 -d 或者 -a 的引數了!

範例七:將家目錄的 .bashrc 及 .bash_history 複製到 /tmp 底下
[[email protected] tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 可以將多個數據一次複製到同一個目錄去!
這個 cp 的功能很多,而由於我們常常在進行一些資料的複製,所以也會常常用到這個指令的。 一般來說,我們如果去複製別人的資料 (當然,該檔案您必須要有 read 的許可權才行啊! ^_^) 時, 總是希望複製到的資料最後是我們自己的,所以,在預設的條件中, cp 的來源檔與目的檔的許可權是不同的,目的檔的擁有者通常會是指令操作者本身。舉例來說, 上面的範例二中,由於我是 root 的身份,因此複製過來的檔案擁有者與群組就改變成為 root 所有了! 這樣說,可以明白嗎?! ^_^

由於具有這個特性,因此,當我們在進行備份的時候,某些需要特別注意的特殊許可權檔案, 例如密碼檔案 (/etc/shadow) 以及一些設定檔,就不能直接以 cp 來複制,而必須要加上 -a 或者是 -p 等等可以完整複製檔案許可權的引數才行!另外,如果您想要複製檔案給其它的使用者, 也必須要注意到檔案的許可權(包含讀、寫、執行以及檔案擁有者等等), 否則,其它人還是無法針對您給予的檔案進行修訂的動作喔!注意注意!

至於上面的範例當中,第四個範例是最有趣的,使用 -l 及 -s 都會建立所謂的連結檔 (link file), 但是這兩種連結檔確有不一樣的展現情況。這是怎麼一回事啊? 那個 -l 就是所謂的 hard link ,至於 -s 則是 symbolic link ,鳥哥這裡先不介紹, 因為這個涉及 i-node 的相關知識,我們還沒有介紹到,下一章再來討論這個 link 的問題喔! 總之,由於 cp 有種種的檔案屬性與許可權的特性,所以,在複製時,您必須要清楚的瞭解到:
• 是否需要完整的保留來源檔案的資訊?
• 來源檔案是否為連結檔 (symbolic link file)?
• 來源檔是否為特殊的檔案,例如 FIFO, socket 等?

相關推薦

LINUX CP命令

cp (複製檔案或目錄) [[email protected] ~]# cp [-adfilprsu] 來源檔(source) 目的檔(destination) [[email protected] ~]# cp [options] source1 s

Linux系列命令——cp命令

1.作用:將原始檔複製至目標檔案,或將多個原始檔複製至目標目錄(類似於window系統的複製-貼上操作) 2.語法: cp [options] source... directory 引數說明: -a:此選項通常在複製目錄時使用,它保留連結、檔案屬性,並複製目錄下的所有內容。其作用

Linux netstat命令,高級面試必備

bytes tool head osi ngs 進行 pen 通信 詳細信息 簡介 Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Mem

linux top 命令

ctrl+ 一次 所有 使用方法 ase 隱藏 統計 ini 前臺 top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。下面詳細介紹它的使用方法。top - 01:06:48 up 1:22, 1 user

【轉】linux awk命令

column 環境變量 最後一行 工作流程 初始 文本文件 for循環 其中 cti 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切

Linux ls命令

-c 目錄 輸出 限制 普通 排序 當前 ls -l sna ls 命令可以說是Linux下最常用的命令之一。 -a 列出目錄下的所有文件,包括以 . 開頭的隱含文件。(後有詳解)-b 把文件名中不可輸出的字符用反斜杠加字符編號(就象在c語言裏一樣)的形式列出。-c 輸出

linux lsof命令

open 日誌 文件和目錄 delete 數據報 正在 某個文件 alt targe 簡介 lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件

linux tail 命令

基本 linux中 file tail命令 方式 sed 缺省 顯示 有效 linux ---tail命令 linux中tail命令---用於查看文件內容 最基本的是cat、more和less。 1. 如果你只想看文件的前5行,可以使用head命令,如: head -5 /

linux screen 命令

文本 常用 小時 遠程終端 參考 編輯 load 調整 長時間 一、背景 系統管理員經常需要SSH 或者telent 遠程登錄到Linux 服務器,經常運行一些需要很長時間才能完成的任務,比如系統備份、ftp 傳輸等等。通常情況下我們都是為每一個這樣的任務開一個遠程終端窗口

[轉載]linux awk命令

基本 特定 收集 comm rip 解釋 文本 工作流程 復制代碼 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各

Linux crontab命令

條件 nta mman minute 使用 1-1 同時 刪除用戶 設置 1.crontab命令概覽      命令參數:   -u user:用來設定某個用戶的crontab服務,例如,“-u ixdba”表示設定ixdba用戶的crontab服務,此參數一般有root用

linux top命令

swa mem img 針對 alt 線程 opp 分區 緩存 Linux系統可以通過top命令查看系統的CPU、內存、運行時間、交換分區、執行的線程等信息。通過top命令可以有效的發現系統的缺陷出在哪裏。是內存不夠、CPU處理能力不夠、IO讀寫過高。

Linux netstat命令

訪問 ast osi cmp internet mtu www unix ngs Linux netstat命令詳解 簡介 Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連

linux awk命令

列數 才會 遍歷數組 文本文件 信息 shell腳本 == game 入門 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分

Linux route命令和使用,以及網卡命令

linux 路由 網卡一 路由的基礎知識:1)路由概念路由: 跨越從源主機到目標主機的一個互聯網絡來轉發數據包的過程路由器:能夠將數據包轉發到正確的目的地,並在轉發過程中選擇最佳路徑的設備路由表:在路由器中維護的路由條目,路由器根據路由表做路徑選擇直連路由:當在路由器上配置了接口的IP地址,並且接口狀態為

[linux]vmstat命令-顯示虛擬內存狀態

span 並不是 增加 OS 表現 如果 2個 blog IT 本文轉載於http://man.linuxde.net/vmstat vmstat命令的含義為顯示虛擬內存狀態(“Viryual Memor Statics”),但是它可以報告關於進程、內存、I/O等系統整

Linux curl命令

cookied current form eat -o party tp服務器 cap lin 命令:curl 在Linux中curl是一個利用URL規則在命令行下工作的文件傳輸工具,可以說是一款很強大的http命令行工具。它支持文件的上傳和下載,是綜合傳輸工具,但按傳統,

linux yum命令

參數 string sound 修改 最新 metadata inux dep logs linux yum命令詳解 yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管

Linux nmap命令

http 默認 inux ping主機 ip地址 log alt flags ipv 1,nmap命令是一款開放源代碼的網絡探測和安全審核工具,它的設計目標是快速地掃描大型網絡。 2,語法nmap(選項)(參數) 3,選項-O:激活操作探測;-P0:值進行掃描,不ping主

Linux blkid命令

tom 展示 true tool spl als bubuko root 系統類型 blkid命令對查詢設備上所采用文件系統類型進行查詢。blkid主要用來對系統的塊設備(包括交換分區)所使用的文件系統類型、LABEL、UUID等信息進行查詢。要使用這個命令必須安裝e2f