cp命令在 Linux 系统下的帮助文档内容

admin, 11 一月, 2025
这是 cp 命令在 Linux 系统下的帮助文档内容,以下是对其主要信息的梳理:

命令格式

cp 命令有以下几种常用格式:
 
  1. cp [OPTION]... [-T] SOURCE DEST:将 SOURCE(源文件或源目录)复制到 DEST(目标文件或目标目录)。
  2. cp [OPTION]... SOURCE... DIRECTORY:把多个 SOURCE(可以是多个文件或目录)复制到 DIRECTORY 中。
  3. cp [OPTION]... -t DIRECTORY SOURCE...:功能和第二种格式类似,只是参数顺序有所不同,明确指定目标目录后接要复制的源文件或源目录。

常用选项及含义

  • -a--archive:等同于 -dR --preserve=all,用于归档复制,会保留文件的所有属性并递归处理目录等,通常用于备份等场景。
  • --attributes-only:只复制文件的属性,而不复制文件的数据内容。
  • --backup[=CONTROL]:对已存在的目标文件进行备份,备份的具体方式(如编号备份、简单备份等)可以通过 CONTROL 参数或者环境变量 VERSION_CONTROL 来控制。
  • -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:从不跟踪源文件中的符号链接,和 -d 选项的部分功能类似。
  • -p:等同于 --preserve=mode,ownership,timestamps,保留文件的模式(权限)、所有者、时间戳等属性。
  • --preserve[=ATTR_LIST]:可以指定保留特定的属性(默认是模式、所有者、时间戳等),还可以额外指定像 context(安全上下文等)、linksxattr 等属性,或者直接用 all 表示保留所有能保留的属性。
  • --no-preserve=ATTR_LIST:不保留指定的属性。
  • --parents:在目标目录下使用源文件的完整文件名(包含路径)进行复制,常用于按原文件结构复制到新目录等情况。
  • -R-r--recursive:递归复制目录及其内容,用于复制整个目录树结构。
  • --reflink[=WHEN]:控制克隆 / 写时复制(CoW)的行为,比如指定 --reflink=always 时进行轻量级复制(只有数据块被修改时才复制),若不可行则复制失败;--reflink=auto 会在前者不可行时回退到标准复制;--reflink=never 则确保执行标准复制。
  • --remove-destination:在尝试打开目标文件之前,移除已存在的目标文件(与 --force 相反的操作逻辑)。
  • --sparse=WHEN:控制稀疏文件的创建,--sparse=auto 是根据简单的启发式方法检测源文件是否为稀疏文件,并相应地使目标文件也为稀疏文件;--sparse=always 是只要源文件包含足够长的零字节序列就创建稀疏目标文件;--sparse=never 则禁止创建稀疏文件。
  • -s--symbolic-link:创建符号链接而不是复制文件内容,符号链接指向源文件的位置。
  • -S--suffix=SUFFIX:覆盖默认的备份后缀(默认是 ~)。
  • -t--target-directory=DIRECTORY:明确指定将所有源文件复制到的目标目录。
  • -T--no-target-directory:把目标 DEST 当作普通文件处理。
  • -u--update:仅当源文件比目标文件新或者目标文件不存在时才进行复制,常用于增量备份等场景。
  • -v--verbose:在复制过程中显示详细的操作信息,解释正在做什么。
  • -x--one-file-system:复制操作只在当前文件系统内进行,不跨越文件系统边界。
  • -Z:将目标文件的 SELinux 安全上下文设置为默认类型,类似功能还有 --context[=CTX],可以指定具体的安全上下文设置。
总之,cp 命令用于文件和目录的复制操作,通过各种选项可以灵活地控制复制的具体行为、属性保留、备份策略等诸多方面,以满足不同的使用场景需求。