Linux 基础教程

Linux 参考手册

Linux 笔记

linux cp 复制命令用法详解

Linux 命令行大全手册详解 Linux 命令行大全手册详解


cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp 命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

命令

格式

cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...

选项

-a, --archive
此参数的效果和同时指定 `-dR` 参数相同。
--attributes-only
不拷贝文件的数据,只复制文件的属性信息。
--backup[=CONTROL]
为每个已存在的目标文件创建备份。
-b
和`--backup`选项类似,区别是不接受参数。
--copy-contents
递归复制指定的文件内容。
-d
等同于 `--no-dereference --preserve=links`。
-f, --force
强行复制文件或目录,不论目标文件或目录是否已存在(当选项`-n` 存在时,则不需再选此项)。
-i, --interactive
覆盖既有文件之前先询问用户。
-H
跟随源文件中的命令行符号链接。
-l, --link
对源文件建立硬连接,而非复制文件。
-L, --dereference
总是跟随符号链接。
-n, --no-clobber
不要覆盖已存在的文件(使前面的 `-i` 选项失效)。
-P, --no-dereference
不跟随源文件中的符号链接。
-p
等于 --preserve=模式,所有权,时间戳。
--preserve[=ATTR_LIST]
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果 可能保持附加属性:环境、链接、xattr 等。
-c
等同于 `--preserve=context`。
--no-preserve=ATTR_LIST
不保留指定的文件属性。
--parents
复制前在目标目录创建来源文件路径中的所有目录。
-R, -r, --recursive
递归处理,将指定目录下的所有文件与子目录一并处理。
--reflink[=WHEN]
控制克隆/CoW 副本。
--remove-destination
尝试打开目标文件前先删除已存在的目的地文件(相对于 --force 选项)。
--sparse=WHEN
控制创建稀疏文件的方式。
--strip-trailing-slashes
删除参数中所有源文件/目录末端的斜杠。
-s, --symbolic-link
只创建软链接而不复制文件。
-S, --suffix=SUFFIX
在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀。
-t, --target-directory=DIRECTORY
将所有参数指定的源文件/目录复制至目标目录。
-T, --no-target-directory
将目标目录视作普通文件。
-u, --update
使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件。
-v, --verbose
详细显示命令执行的操作。
-x, --one-file-system
保留当前的文件系统形式。
-Z
对目标文件设置 SELinux 的安全上下文。
--context[=CTX]
与 `-Z` 一样。
--help
显示帮助信息并退出。
--version
显示版本信息并退出。

常用命令

linux 复制文件夹到另一个目录

复制文件夹需要增加 `-r` 选项,如下 source 文件复制到 target。

cp -r source target

cp 递归复制不存在的目标文件

cp 命令没有提供可递归复制目标子目录的选项,需要结合 mkdir 命令一起使用:

mkdir -p "$target" && cp file "$target"

更多信息可参考 cp 命令目标目录不存在时,如何自动递归创建不存在的子目录

cp 强制复制不提示

命令最前面加反斜杠 \ 即可跳过别名生效范围:

\cp knowledge.json dict.json

更多信息可参考 linux cp 复制命令强制覆盖不提示的方法