命令格式
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
命令描述
拷貝文件和目錄
參數說明
-a, --archive : 等同於-dR --preserve=all
--backup[=CONTROL] :對每個現有文件進行備份 CONTROL爲可選參數,其值爲
none, off:從不備份(即使給出 --backup)
numbered, t:用編號備份
existing, nil :如果編號備份存在則使用編號備份,否者用簡易備份[譯註:也就是用波浪號]
simple, never :總是使用簡易備份
-b : 等同於--backup ,不帶值
-f 或 --force : 強行復制文件或目錄, 不論目的文件或目錄是否已經存在
-i 或 --interactive : 覆蓋文件之前先詢問用戶
-l 或 --link : 對源文件建立硬鏈接,而非複製文件
-p 或 --preserve : 保留源文件或目錄的屬性,包括所有者、所屬組、權限與時間
-P 或 --no-dereference : 從不繼承源文件的符號鏈接* (這裏我測試,cp一個符號鏈接文件後,新文件也是一個符號鏈接文件)
-r : 遞歸處理,將指定目錄下的文件與子目錄一併處理。若源文件或目錄的形態,不屬於目錄或符號鏈接,則一律視爲普通文件處理
-R 或 --recursive : 遞歸處理,將指定目錄下的文件及子目錄一併處理
-s 或 --symbolic-link :對源文件建立符號鏈接,而非複製文件
-S <備份字尾字符串> 或 --suffix=<備份字尾字符串> : 用"-b"參數備份目的文件後,備份文件的字尾會被加上一個備份字符串。默認的備份字尾符串是符號"~"
-u 或 --update : 使用這項參數之後,只會在源文件的修改時間(Modification Time)較目的文件更新時,或是名稱相互對應的目的文件並不存在,才複製文件
-v 或 --verbose : 顯示執行過程
--version : 顯示版本
-x 或 --one-file-system複製的文件或目錄存放的文件系統,必須與cp指令執行時所處的文件系統相同,否則不復制,亦不處理位於其他分區的文件
--help顯示在線幫助
--sparse=<使用時機>設置保存希疏文件的時機,可選參數
auto:源文件的稀疏性僅僅通過簡單的方法判斷,對應的目標文件目標文件也被爲稀疏
always : 不論源文件是否包含足夠長的0 序列也將目標文件創建爲稀疏件。
never: 禁止創建稀疏文件。示例
-b的用法
sly@fskj-u-sly:~/st$ ls 1.txt 2.txt sly@fskj-u-sly:~/st$ cp -b -S .bak 1.txt 2.txt cp:是否覆蓋"2.txt"? y sly@fskj-u-sly:~/st$ ls -l 總用量 0 -rw-rw-r-- 1 sly sly 0 7月 21 17:02 1.txt -rw-rw-r-- 1 sly sly 0 7月 21 17:36 2.txt -rw-rw-r-- 1 sly sly 0 7月 21 17:35 2.txt.bak
創建硬鏈接
sly@fskj-u-sly:~/st$ cp -l 1.txt 2.txt sly@fskj-u-sly:~/st$ ls -li #這個參數i是查看inode號,可以看到,兩個文件的inode一樣 總用量 0 1834184 -rw-rw-r-- 2 sly sly 0 7月 21 17:02 1.txt 1834184 -rw-rw-r-- 2 sly sly 0 7月 21 17:02 2.txt
創建符號鏈接
sly@fskj-u-sly:~/st$ ln -s 1.txt 2.txt sly@fskj-u-sly:~/st$ ls -l 總用量 0 -rw-rw-r-- 1 sly sly 0 7月 21 17:02 1.txt lrwxrwxrwx 1 sly sly 5 7月 21 17:26 2.txt -> 1.txt
將一個目錄的文件複製到另一個目錄
sly@fskj-u-sly:~$ cp -R st st2 sly@fskj-u-sly:~$ ls -l st2/ 總用量 0 -rw-rw-r-- 1 sly sly 0 7月 21 17:28 1.txt lrwxrwxrwx 1 sly sly 5 7月 21 17:28 2.txt -> 1.txt sly@fskj-u-sly:~$ ls -l st 總用量 0 -rw-rw-r-- 1 sly sly 0 7月 21 17:02 1.txt lrwxrwxrwx 1 sly sly 5 7月 21 17:26 2.txt -> 1.txt
如果目錄已經存在不能使用上述方法
sly@fskj-u-sly:~$ ls -ld st2 st/ drwxrwxr-x 2 sly sly 4096 7月 21 17:26 st/ drwxrwxr-x 2 sly sly 4096 7月 21 17:30 st2 sly@fskj-u-sly:~$ cp -R st st2 sly@fskj-u-sly:~$ ls -l st2/ # 你會發現將整個目錄拷貝過去了 總用量 4 drwxrwxr-x 2 sly sly 4096 7月 21 17:31 st sly@fskj-u-sly:~$ cp -R st/* st2 sly@fskj-u-sly:~$ ls -l st2/ 總用量 0 -rw-rw-r-- 1 sly sly 0 7月 21 17:33 1.txt lrwxrwxrwx 1 sly sly 5 7月 21 17:33 2.txt -> 1.txt
使用-p參數保留源文件的屬性(這裏使用sudo是爲了有權限創建www-data用戶的文件)
sly@fskj-u-sly:~/st$ ls -l 總用量 0 -rw-rw-r-- 1 www-data www-data 0 7月 21 17:02 1.txt sly@fskj-u-sly:~/st$ date && sudo cp 1.txt 2.txt && sudo cp -p 1.txt 3.txt 2015年 07月 21日 星期二 17:47:04 CST sly@fskj-u-sly:~/st$ ls -l #可以看出,加了-p參數後,目標文件的權限和時間信息都沒用修改 總用量 0 -rw-rw-r-- 1 www-data www-data 0 7月 21 17:02 1.txt -rw-r--r-- 1 root root 0 7月 21 17:47 2.txt -rw-rw-r-- 1 www-data www-data 0 7月 21 17:02 3.txt
cp命令
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.