cp
是使用 Linux 系统时最常用的命令,它用来复制文件和目录。从指定的来源文件复制到目标处,或者将多个源文件复制到目标目录中。
cp 命令格式
cp [选项]... [-T] 来源 目标
cp [选项]... 来源... 目标
cp [选项]... -t 目标 来源...
cp 命令示例
复制指定的单个文件(/etc/hosts
)到当前目录:
cp /etc/hosts ./
复制指定的文件到当前目录,如果当前目录已经存在此文件,就创建一个备份:
cp -b /etc/hosts ./
复制指定目录(/etc
)下的所有内容到当前目录:
cp -r /etc ./
复制文件是保留属性,并配合 date
命令附加年月日格式的时间戳:
cp -a test.txt "test-$(date +"%Y-%m-%d_%H:%M:%S").txt"
上面的例子还有另外一种写法:
cp -a test.txt test-`date +"%Y-%m-%d_%H:%M:%S`.txt
cp 命令选项参数
缩写 | 完整名称 | 说明 |
---|---|---|
-a |
--archive |
与 -dR --preserve=all 相同 |
--attributes-only |
不要复制文件数据,仅仅复制其属性值。 | |
--backup [=控制参数] |
为每个已存在的目标文件创建一个备份 | |
-b |
类似 --backup ,但是不接受参数 |
|
--copy-contents |
递归模式下复制特殊文件的内容 | |
-d |
与 --no-dereference --preserve=links 相同 |
|
-f |
--force |
如果有一个已存在且无法打开的目标文件,删除之并进行重试(该选项在 -n 选项同时被使用时无效) |
-i |
--interactive |
覆写前进行提示(覆盖先前的 -n 选项) |
-H |
跟随源文件命令行中显式给出的符号链接 | |
-l |
--link |
使用硬链接取代复制 |
-L |
--dereference |
总是跟随源文件中的符号链接 |
-n |
--no-clobber |
不要覆写已有的文件(覆盖先前给出的 -i 选项) |
-P |
--no-dereference |
永远不要跟随源文件中的符号链接 |
-p |
与 --preserve=mode,ownership,timestamps 相同 |
|
--preserve [=属性列表] |
保留指定的属性(默认:模式、从属关系、时间戳) | |
--no-preserve= 属性列表 |
不要保留指定的属性 | |
--parents |
在目标目录下使用完整的源文件名 | |
-R , -r |
--recursive |
递归地复制文件 |
--reflink [=WHEN] |
控制克隆/写入时复制(CoW)副本。详情见下文 | |
--remove-destination |
在尝试打开每个已存在的目标文件之前对其进行删除(和 --force 行为相反) | |
--sparse= WHEN |
控制稀疏文件的创建。详情见下文 | |
--strip-trailing-slashes |
移除每个源文件参数后的任何末尾斜杠 | |
-s |
--symbolic-link |
使用符号链接代替复制 |
-S |
--suffix= 后缀名 |
使用给定名称代替常用备份后缀名 |
-t |
--target-directory= 目录 |
将所有源文件参数给出的内容复制到目标目录中 |
-T |
--no-target-directory |
将目标文件当作普通文件对待(而不是目录) |
-u |
--update |
仅在源文件比目标文件新,或者目标文件不存在的情况下复制 |
-v |
--verbose |
显示复制过程 |
-x |
--one-file-system |
停留在当前文件系统中 |
-Z |
将目标文件 SELinux 安全上下文设置为默认类型 | |
--context [=CTX] |
类似 -Z,或者如果给定了上下文(CTX)那么将 SELinux 或者 SMACK 安全上下文设置为给定值 | |
--help |
显示此帮助信息并退出 | |
--version |
显示版本信息并退出 |