cp命令
cp命令
cp
命令主要用于复制文件或目录。
语法
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
参数
-a, --archive
: 与-dR --preserve = ALL
相同,执行复制时,尝试保留尽可能多的原始文件结构,属性和关联的元数据。--attributes-only
: 不复制文件数据,仅创建具有相同属性的文件,如果目标文件已经存在,不更改其内容,并且可以使用--preserve
选项精确控制要复制的属性。--backup[=CONTROL]
: 对每个现有目标文件进行备份,否则将被覆盖或删除,该控制参数CONTROL
指定了版本控制的方法来使用:none, off
,不进行备份;numbered, t
,进行编号备份;existing, nil
,简单的说明编号是否存在编号备份;simple, never
, 始终进行简单的备份。有一种特殊情况,当source
和dest
是相同的常规文件时,cp --force --backup
将对源进行备份。-b
: 类似于--backup
,但不接受控制参数,始终使用默认的控制方法。--copy-contents
: 递归操作时,复制特殊文件的内容,例如FIFO
和/dev
中的设备,通常适用于专业用途。-d
: 复制符号链接本身而不是它们引用的文件,并保留副本中源文件之间的硬链接,与--no-dereference --preserve = links
相同。-f, --force
: 如果无法打开现有的目标文件,将其删除,然后重试。如果使用n / --no-clobber
选项,则此选项无效,但是其独立于-i / --interactive
来应用,这两个选项都不能消除另一个的影响。-i, --interactive
: 覆盖前提示,覆盖先前的-n
选项。-H
: 遵循命令行上指定的符号链接,但保留发现的链接。如果命令行上的参数之一是符号链接,请复制引用的文件,而不是链接本身。但是如果在递归遍历过程中发现了符号链接,它将被复制为符号链接,而不是常规文件。-l, --link
: 创建指向文件的硬链接,而不是复制它们。-L, --dereference
: 始终遵循源文件中的符号链接,如果source
是符号链接,请复制链接到的文件,而不是符号链接本身,指定此选项后,cp
无法在目标副本中创建符号链接。-n, --no-clobber
: 不要覆盖现有文件。如果先前指定了-i / --interactive
,则此选项将覆盖它,不能使用-b / --backup
来指定此选项,因为仅在文件将被覆盖时才创建备份。-P, --no-dereference
: 不遵循源代码中的符号链接,将符号链接复制为符号链接,但是仍然可以遵循目标中遇到的现有符号链接。-p
: 与--preserve=mode,ownership,timestamps
相同。--preserve[=ATTR_LIST]
: 保留指定的属性,以逗号分隔。属性是:mode
,保留文件模式位(由chmod
设置)和任何ACL
;ownership
,保留所有者和组(按chown
设置),保留这些属性的能力与使用chown
相同;timestamps
,如果可能的话,保留最后一次文件访问和修改的时间(atime
和mtime
,由touch
设置);links
,在目标文件中保留源文件之间的所有链接,使用-L
或-H
时,此选项可能会将符号链接复制为硬链接;context
,保留源文件的SELinux
安全上下文,否则将由于详细的诊断而失败;xattr
,保留源文件的扩展属性,否则将因详细诊断而失败;all
,保留以上所有内容,与单独指定上述所有属性相同,不同之处在于无法复制context
或xattr
不会给出失败的退出状态。如果未指定,则attr_list
的默认值为mode
,ownership
,timestamps
。-c
: 已弃用,与--preserve=context
相同。--no-preserve=ATTR_LIST
: 不要保留指定的属性。--parents
: 在目录下使用完整的源文件名,即在复制到目标目录时,根据source
中指定的路径名,在目标中创建丢失的父目录。-R, -r, --recursive
: 递归复制目录。--reflink[=WHEN]
: 如果目标文件系统支持,请执行优化的CoW
(写时复制)克隆,生成的副本将在磁盘上与原始文件共享相同的字节,直到修改副本为止,请注意这意味着如果源字节已损坏,则目标将共享损坏的数据。--remove-destination
: 尝试打开每个目标文件之前,先删除它,与--force
选项相反,该选项仅在尝试打开失败后才删除目标文件。--sparse=WHEN
: 控制稀疏文件的创建。稀疏文件包含空洞,其中空洞是零字节序列,不占用物理磁盘空间,读取文件时,孔将读取为零。由于许多文件包含长的零序列,因此可以节省磁盘空间,默认情况下,cp
检测稀疏文件并创建稀疏目标文件。在当参数定义了cp
当检测到源文件是稀疏的行为:auto
,如果源稀疏,尝试使目标稀疏,如果目标存在并且是非常规文件,请不要尝试使其稀疏,这是默认值;always
,对于源中每个零字节的足够长的序列,即使输入文件不是稀疏的,也要尝试在目标中打稀疏,如果源文件系统不支持稀疏文件,这将可以在目标文件系统上适当地创建一个稀疏文件;never
,不使输出文件稀疏,某些特殊文件(例如交换文件)绝对不能稀疏。--strip-trailing-slashes
: 删除每个源参数中的所有尾部斜杠。-s, --symbolic-link
: 进行符号链接,而不是复制文件本身。除非目标文件位于当前目录中,否则所有源文件都必须是以斜杠开头的绝对路径名。-S, --suffix=SUFFIX
: 覆盖通常的备份后缀。-t, --target-directory=DIRECTORY
: 将所有源参数复制到目录中。-T, --no-target-directory
: 将目的地视为普通文件。-u, --update
: 仅在源文件比目标文件新或缺少目标文件时复制。-v, --verbose
: 详细模式,解释正在做什么。-x, --one-file-system
: 仅在执行命令的文件系统上操作,如果cp
试图越过边界到另一个文件系统,则这些文件将被跳过。这包括网络驱动器,驻留在具有不同安装点的文件系统上的任何文件。代表安装点本身的目录将被复制,但不会被遍历。如果指定了-v
,则将确切显示已跳过的文件。-Z, --context[=CTX]
: 设置目标的SELinux
安全上下文,文件为默认类型,或CTX
(如果指定)。--help
: 显示帮助信息。--version
: 显示版本信息。
示例
将文件file.txt
复制为file2.txt
。
cp file.txt file2.txt
递归复制文件夹,将tmp
文件夹内容全部复制。
cp -R ./tmp ./tmp2
创建对file.txt
的符号链接而不是复制文件,当然使用ln
命令是专门为文件创建符号链接的,cp
同样是创建符号链接的好方法,注意要在另一个目录中创建符号链接,cp
需要在源文件名中指定完整路径名,包括完整目录名,相对路径将不起作用。
cp -s file.txt file-link1
每日一题
https://github.com/WindrunnerMax/EveryDay
参考
https://www.computerhope.com/unix/ucp.htm
https://linuxize.com/post/cp-command-in-linux/
https://www.runoob.com/linux/linux-comm-cp.html