约 9861 字

约 49 分钟

#Bash 的 cp 命令

cp [OPTION]... SOURCE... DEST

功能

复制文件或目录。

类型

可执行文件(/usr/bin/cp),属于 coreutils。

参数

  • OPTION 选项:
    • -a, --archive - 复制整个目录树并保持文件的原有属性;同 -dR --preserve=all
    • --attributes-only - 只复制文件属性,不复制文件数据
    • --backup[=CONTROL] - 选择怎样备份被覆盖的目标文件
    • -b - 备份被覆盖的目标文件
    • --copy-contents - 复制特殊文件(设备、FIFO、管道等)
    • -d - 复制符号链接本身,而不是复制源文件;同 --no-dereference --preserve=links
    • --debug - 输出调试信息(文件的复制方式)
    • -f, --force - 强制操作,目标存在且无法打开时会尝试将其删除
    • -i, --interactive - 覆盖前提示
    • -H - SOURCE 是符号链接时复制源文件而非符号链接,但递归复制目录中的符号链接时不生效
    • -l, --link - 创建文件的硬链接而不是复制
    • -L, --dereference - SOURCE 是符号链接时复制源文件而非符号链接,递归复制目录中的符号链接时也生效
    • -n, --no-clobber - 不覆盖现有文件,也不失败
    • -P, --no-dereference - SOURCE 是符号链接时复制符号链接而非源文件
    • -p - 保持文件原有的属性;同 --preserve=mode,ownership,timestamps
    • --preserve[=ATTR_LIST] - 保持文件原有的属性
    • --no-preserve=ATTR_LIST - 不保持文件原有的属性
    • --parents - 复制时保持路径
    • -R, -r, --recursive - 递归复制目录
    • --reflink[=WHEN] - 控制在支持 CoW(Copy-on-Write,写时复制)的文件系统上进行轻量复制
    • --remove-destination - 复制前删除已经存在的目标
    • --sparse=WHEN - 控制稀疏文件的创建
    • --strip-trailing-slashes - 删除每个 SOURCE 尾部的 /
    • -s, --symbolic-link - 创建文件的符号链接而不是复制
    • -S, --suffix=SUFFIX - 设置备份文件的后缀
    • -t, --target-directory=DIRECTORY - 指定目标目录
    • -T, --no-target-directory - 将 DEST 视为文件(如果 DEST 是目录,则进行合并而非复制到它内部)
    • --update[=UPDATE] - 控制哪些现有文件需要更新;取值:all, none, older
    • -u - 仅在源文件比目标新的时候复制;同 --update[=older]
    • -v, --verbose - 输出详细信息(进行的全部操作)
    • -x, --one-file-system - 跳过跨文件系统的复制
    • -Z - 将目标文件的 SELinux 安全上下文设为默认类型
    • --context[=CTX]
    • --help - 显示帮助
    • --version - 显示版本
  • SOURCE - 源文件
  • DEST - 目标路径

#示例

复制文件

$ ls                            # 空目录下操作
$ touch src.txt                 # 创建文件
$ cp src.txt dest.txt           # 复制文件
$ ls
src.txt dest.txt
$ mkdir dir                     # 创建目录
$ cp src.txt ./dir/dest.txt     # 复制到目录中
$ ls dir
dest.txt

复制目录

$ mkdir src dest1 dest2         # 创建目录
$ touch src/1.txt               # 创建文件
$ tree src
src
└── 1.txt
$ cp -r src dest1               # 将 src 复制到 dest1 内部
$ tree dest1
dest1
└── src
    └── 1.txt
$ cp -rT src dest2              # 复制 src 合并到 dest2
$ tree dest2
dest2
└── 1.txt

#相关命令

命令说明
mv移动文件
ln链接文件

#推荐阅读

#手册

更新: 2026/1/18

作者: PlanC

创建: 2025/10/26