cp:拷貝命令是Linux中最常用的命令之一,大多情況下我們都只是使用其將源文件拷貝到目標(biāo)文件或目標(biāo)目錄中,很少注意這個命令的一些選項,本文介紹幾個其幾個有用的選項。
幫助文檔
了解這個命令最好的辦法就是使用cp --help查看其幫助文檔
cp --help
用法:cp [選項]... [-T] 源文件 目標(biāo)文件
或:cp [選項]... 源文件... 目錄
或:cp [選項]... -t 目錄 源文件...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options too.
-a, --archive 等于-dR --preserve=all
--attributes-only 僅復(fù)制屬性而不復(fù)制數(shù)據(jù) --backup[=CONTROL 為每個已存在的目標(biāo)文件創(chuàng)建備份
-b 類似--backup 但不接受參數(shù)
--copy-contents 在遞歸處理是復(fù)制特殊文件內(nèi)容
-d 等于--no-dereference --preserve=links
-f, --force if an existing destination file cannot be
opened, remove it and try again (this option
is ignored when the -n option is also used)
-i, --interactive prompt before overwrite (overrides a previous -n
option)
-H follow command-line symbolic links in SOURCE
-l, --link hard link files instead of copying
-L, --dereference always follow symbolic links in SOURCE
-n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
-P, --no-dereference 不跟隨源文件中的符號鏈接
-p 等于--preserve=模式,所有權(quán),時間戳
--preserve[=屬性列表 保持指定的屬性(默認(rèn):模式,所有權(quán),時間戳),如果
可能保持附加屬性:環(huán)境、鏈接、xattr 等
-c deprecated, same as --preserve=context
--sno-preserve=屬性列表 不保留指定的文件屬性
--parents 復(fù)制前在目標(biāo)目錄創(chuàng)建來源文件路徑中的所有目錄
-R, -r, --recursive 遞歸復(fù)制目錄及其子目錄內(nèi)的所有內(nèi)容
--reflink[=WHEN] 控制克隆/CoW 副本。請查看下面的內(nèi)如。
--remove-destination 嘗試打開目標(biāo)文件前先刪除已存在的目的地
文件 (相對于 --force 選項)
--sparse=WHEN 控制創(chuàng)建稀疏文件的方式
--strip-trailing-slashes 刪除參數(shù)中所有源文件/目錄末端的斜杠
-s, --symbolic-link 只創(chuàng)建符號鏈接而不復(fù)制文件
-S, --suffix=后綴 自行指定備份文件的后綴
-t, --target-directory=目錄 將所有參數(shù)指定的源文件/目錄
復(fù)制至目標(biāo)目錄
-T, --no-target-directory 將目標(biāo)目錄視作普通文件
-u, --update 只在源文件比目標(biāo)文件新,或目標(biāo)文件
不存在時才進(jìn)行復(fù)制
-v, --verbose 顯示詳細(xì)的進(jìn)行步驟
-x, --one-file-system 不跨越文件系統(tǒng)進(jìn)行操作
-Z set SELinux security context of destination
file to default type
--context[=CTX] like -Z, or if CTX is specified then set the
SELinux or SMACK security context to CTX
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出
默認(rèn)情況下,源文件的稀疏性僅僅通過簡單的方法判斷,對應(yīng)的目標(biāo)文件目標(biāo)文件也
被為稀疏。這是因為默認(rèn)情況下使用了--sparse=auto 參數(shù)。如果明確使用
--sparse=always 參數(shù)則不論源文件是否包含足夠長的0 序列也將目標(biāo)文件創(chuàng)文
建為稀疏件。
使用--sparse=never 參數(shù)禁止創(chuàng)建稀疏文件。
當(dāng)指定了--reflink[=always] 參數(shù)時執(zhí)行輕量化的復(fù)制,即只在數(shù)據(jù)塊被修改的
情況下才復(fù)制。如果復(fù)制失敗或者同時指定了--reflink=auto,則返回標(biāo)準(zhǔn)復(fù)制模式。
The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable. Here are the values:
none, off 不進(jìn)行備份(即使使用了--backup 選項)
numbered, t 備份文件加上數(shù)字進(jìn)行排序
existing, nil 若有數(shù)字的備份文件已經(jīng)存在則使用數(shù)字,否則使用普通方式備份
simple, never 永遠(yuǎn)使用普通方式備份
有一個特別情況:如果同時指定--force 和--backup 選項,而源文件和目標(biāo)文件
是同一個已存在的一般文件的話,cp 會將源文件備份。
如果存檔備份整個目錄
這里重點說明一個-a這個選項,這個選項是長選項--archive的縮寫,archive單詞是存檔的意思,從幫助文檔中可以看到這個選項相當(dāng)于是-dR --preserve=all三個選項的組合,而-d又是--no-dereference --preserve=links兩個選項的組合,但其實--preserve=all已經(jīng)覆蓋了--preserve=links的含義,所有此處-d存在的意義就是--no-dereference 不跟隨源文件中的符號鏈接,從這些選項的解釋可以看出加上-a這個選項,支持遞歸復(fù)制目錄及其子目錄內(nèi)的所有內(nèi)容同時,保留文件的所有屬性不變,同時鏈接仍然作為鏈接本身拷貝,不會拷貝鏈接指定的內(nèi)容。所以這個命令通常用于存檔備份整個目錄時使用。