cp命令--文件複製
目錄和文件的複製命令
cp命令語法和參數:
cp [OPTION]...SOURCE...DIRECTORY
-a ALL 等價於dpR
-d
複製符號鏈接源文件時,目標文件也將創建符號鏈接執行源文件的原始文件
-p preserve 保留文件屬性,屬主,屬組,權限和時間
-r recursive 遞歸目錄下的子文件
示例:
[root@localhost ~]# ll /etc/services
-rw-r--r-- 1 root root 362031 2006-02-23 /etc/services
[root@localhost ~]# stat /etc/services
File: “/etc/services”
Size: 362031 Blocks: 728 IO Block: 4096 一般文件
Device: fd00h/64768d Inode: 2282597 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-11-11 11:20:33.000000000 +0800
Modify: 2006-02-23 21:09:23.000000000 +0800
Change: 2014-10-21 15:21:26.000000000 +0800
[root@localhost ~]# cp -a /etc/services /tmp/services
[root@localhost ~]# ll /tmp/services
-rw-r--r-- 1 root root 362031 2006-02-23 /tmp/services
[root@localhost ~]# stat /tmp/services
File: “/tmp/services”
Size: 362031 Blocks: 728 IO Block: 4096 一般文件
Device: fd00h/64768d Inode: 1434761 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-11-11 11:20:33.000000000 +0800
Modify: 2006-02-23 21:09:23.000000000 +0800
Change: 2014-11-11 11:44:39.000000000 +0800
說明:文件的所有屬性和權限都拷貝過來了,並且ctime發生了改變
擴展:源文件複製到目標目錄中提示文件已經存在,如何直接覆蓋掉目標文件?而讓系統不提示覆蓋呢?
[root@localhost ~]# cp -a /etc/services /tmp/
cp:是否覆蓋“/tmp/services”?
在腳本中是不能人工參與交互,解決方法:
[root@localhost ~]# \cp -a /etc/services /tmp/services
[root@localhost ~]# unalias cp
[root@localhost ~]# cp -a /etc/services /tmp/
[root@localhost ~]# /bin/cp -a /etc/services /tmp/services
說明:默認情況下,cp= cp -i 然而-i參數是提示覆蓋的意思