Linux cp命令
cp 命令主要用于復制文件或目錄。即用來將一個或多個源文件或者目錄復制到指定的目的文件或目錄。
cp 命令可以將單個源文件復制成一個指定文件名的具體的文件或一個已經存在的目錄下。
cp 命令支持同時復制多個文件,當一次復制多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。
cp 命令語法
cp [-options] source_file dest_file
-
source_file:源文件,制定源文件列表。cp 命令默認情況下不能復制目錄,除非使用 -r/-R選項。
-
dest_file:目標文件,指定目標文件。當“源文件”為多個文件時,要求“目標文件”為指定的目錄。
參數說明:
- -a :等于 “dpR” 參數組合,通常在復制目錄時保留鏈接、文件屬性,并復制目錄下的所有內容。
- -b:覆蓋已存在的文件目標前將目標文件備份;
- -d :復制時保留符號鏈接。
- -f :強行復制文件或目錄,覆蓋已經存在的目標文件而不給出提示。
- -i :與-f選項相反,在覆蓋目標文件之前給出提示,要求用戶確認是否覆蓋。
- -l :不復制文件,只是生成源文件的硬鏈接文件。
- -p :復制文件時保留源文件或目錄的屬性。
- -r :遞歸復制目錄,即復制該目錄及其所有的子目錄和文件。
- -R :同 -r 選項參數。
- -s:對源文件建立符號連接,而非復制文件;
- -S:在備份文件時,用指定的后綴“SUFFIX”代替文件的默認后綴;
- -u:同步復制源文件文件,只在源文件更新時或目標文件不存在時復制。
- -v:詳細顯示命令執行的操作。
cp命令的使用示例
Linux中使用cp命令復制文件(夾),本文就日常工作中常用的cp命令整理如下。
一、復制一個源文件到目標文件(夾)
命令格式為:cp 源文件 目標文件(夾)
這個是使用頻率最多的命令,負責把一個源文件復制到目標文件(夾)下。如下圖所示,復制到文件夾下,則文件名保持不變,復制到文件中,則文件名變更。如果目標文件已經存在或目標文件夾中含有同名文件,則復制之后目標文件或目標文件夾中的同名文件會被覆蓋。
二、同時復制多個文件到目標文件(夾)下
命令格式為:cp 源文件1 源文件2 目標文件夾 或 cp 文件* 目標文件夾
這個命令使用頻率也很高。第一種命令格式可以把列出來的多個文件一次性復制到目標文件夾下,每個文件直接用空格分隔;第二種命令格式使用了通配符*,如下圖所示,可以將所有以“.txt”結尾的文件都復制到文件夾testDir下。
三、復制源文件夾到目標文件夾下
命令格式為:cp -r 源文件夾 目標文件夾
這個也是使用頻率很高的命令,只需要記住復制文件夾一定要加“-r”參數,否則會出現“cp: omitting directory”錯誤。
四、只有源文件較目標文件新時復制
命令格式為:cp -u 源文件 目標文件
這個命令很實用,尤其是在更新文件時。如下圖所示,只有源文件比目標文件新時,才會將源文件復制給目標文件,否則,及時執行了命令,也不會執行復制。
五、創建文件的軟鏈接
命令格式為:cp -s 源文件 目標文件
也可以用ln命令實現同樣的功能。當一個文件路徑太深(如下述的a/b/c/d/e/orginalFile.txt),訪問起來十分不方便時,就會創建這個文件的軟鏈接,使之訪問起來更方便些。軟鏈接就相當于windows上的快捷方式。
六、創建文件的硬鏈接
命令格式為:cp -l 源文件 目標文件
也可以用ln命令實現同樣的功能。有時候,為了某種原因,需要創建一個硬鏈接,如下圖所示。
這里簡單介紹下硬鏈接和軟鏈接的區別。如下圖所示,軟連接文件(softLink.txt)和被鏈接文件(orginalFile.txt)所擁有的inode不相同(133827和139819),硬鏈接文件(hardLink.txt)和被鏈接的文件(orginalFile22.txt)擁有相同的inode(156981)。當被鏈接的文件刪除時,軟鏈接文件也無法訪問了,而硬鏈接文件仍能正常訪問。
軟鏈接與硬鏈接區別