cp指令是用于Linux中文件复制的命令,后面可接选项和参数,形如:command [options] [arguments] ,其中options 用于控制命令的行为,arguments表示命令的参数。cp命令可以将多个源路径的文件复制到一个目标路径中,多个源路径使用空格隔开,目标路径放在最后1。
用法
cp [options] 源文件 目标文件
cp [options] 源文件1 源文件2 源文件3 …… 目标目录
cp [options] 源目录1 源目录2 源目录3 …… 目标目录
选项说明
**-a,--archive:**相当于 -dR -preserve=all
**--attributes-only:**仅仅复制属性而不复制文件的数据部分
**--backup[=control]:**为每个存在的目标文件进行备份,例如:如果目标文件try.txt已经存在的话,备份文件就是try.txt~。备份文件的后缀为 "~",除非使用了 --suffix 选项或 SIMPLE_BACKUP_SUFFIX 环境变量指定了其他后缀。版本控制的方式可通过 --backup 选项或 VERSION_CONTROL 环境变量来选择。以下是control可用的设置值:
**none, off :**不进行备份(即使使用了 --backup 选项)
**numbered, t :**使用带有数字编号的备份文件进行备份
existing, nil : 若带数字的备份文件已经存在则使用 numbered,否则使用 simple
simple, never : 总是使用简单方式进行备份
-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[=属性列表]:**如果可能的话,保留指定的属性(默认:mode,ownership,timestamps)其他属性:context、links、xattr、all
**--no-preserve=属性列表:**不保留指定的属性
**--parents:**在 <目录> 下使用完整的源文件路径
**-R, -r, --recursive:**递归地复制目录
**--reflink[=when]:**控制克隆/CoW 副本。当指定了 --reflink[=always] 参数时,将进行轻量级复制,此时数据块只在被修改时进行复制。如果因无法进行这种复制而导致复制失败,或者指定了 --reflink=auto,程序将会回退到标准复制操作。使用 --reflink=never 可以确保永远进行标准复制。
**--remove-destination:**尝试打开目标文件前先删除已存在的目标文件(和 --force 选项有区别)
**--sparse=when:**控制创建稀疏文件的方式。默认情况下,将通过简单的启发式算法检测稀疏的<源> 文件,并将对应的 <目标>文件设为稀疏。这也是 --sparse=auto 的行为。若使用 --sparse=always,则只要<源> 文件包含了足够长的零字节序列,都会将 <目标> 文件创建为稀疏文件。使用 --sparse=never 可以禁止创建稀疏文件。
**--strip-trailing-slashes:**删除参数中所有 <源> 末尾的斜杠
**-s, --symbolic-link:**只创建符号链接而不复制文件
**-S, --suffix=后缀:**自行指定备份文件的后缀(与—backup命令有关)
**-t, --target-directory=目录:**将所有 <源> 参数复制到 <目录>
**-T, --no-target-directory:**将 <目标> 视为普通文件
**-u, --update:**只在 <源> 比目标文件新,或目标文件不存在时才进行复制
**-v, --verbose:**显示详细步骤
**-x, --one-file-system:**不跨越文件系统进行操作
**-Z:**设置目标文件的 SELinux 安全上下文为默认类型
**--context[=CTX]:**类似 -Z,但如果指定了 < CTX >,则将 SELinux或 SMACK 安全上下文设置为 < CTX >
**--help:**显示此帮助信息并退出
**--version:**显示版本信息并退出
使用范例
复制一个文件夹的全部信息:cp -a folder1 folder2
仅仅复制文件的属性部分不复制数据部分: cp --attributes-only file1 file2
如果VERSION_CONTROL环境变量的值没有被指定,-b的默认值是‘existing’,也就是相当于—backup=existing。除非设置了—suffix 或者 SIMPLE_BACKUP_SUFFIX,备份文件后缀为‘~’
-b与—backup不同,-b不接受任何参数,也就是说-b=existing是错误的用法
cp -b file1.txt file2.txt
cp –backup=existing file1.txt file2.txt
如果file2.txt已经存在,那么备份文件为file2.txt~
当参数为none 或者off时不进行备份操作,此时目标文件将会被覆写,丢失原来的内容:
cp –backup=none file1.txt file2.txt
cp –backup=off file1.txt file2.txt
当参数指定为numbered 或者 t 时,对备份文件后缀加编号
cp –backup=numbered file1.txt file2.txt
cp –backup=t file1.txt file2.txt
备份文件为file2.txt.~1~,如果后续继续复制到file2.txt则会继续产生备份文件,名如:file2.txt.~2~,file2.txt.~3~,file2.txt.~4~等等。编号备份可以有多个文件,但是普通备份只有一个文件file2.txt~。
当参数指定为existing 或者 nil时,已经进行编号备份的文件进行编号备份,其余的进行普通备份
cp –backup=existing file1.txt file2.txt
cp –backup=nil file1.txt file2.txt
当参数指定为simple 或者never时,总是进行普通备份
注意never 和none 的区别
cp –backup=simple file1.txt file2.txt
cp –backup=never file1.txt file2.txt
将文件file1强制复制成file2,不会询问是否覆盖
当目标文件无法打开或者没有写入权限的时候,复制命令会失败
当-n选项被指定的时候-f会失效
cp -f file1 file2
采用交互方式将文件file1复制成文件file2(如果file2已经存在会询问是否覆盖,输入y表示覆盖,输入n表示不覆盖)
cp -i file1 file2
建立硬链接文件,并没有复制文件,内存空间中仅仅是一份文件内容。硬链接是目标文件的一个直接引用,它与原始文件在文件系统中共享相同的 inode。换句话说,硬链接是目标文件的另一个名称。
硬链接和源文件具有相同的inode,即使原始文件被删除,硬链接仍然存在,直到所有链接都被删除。
cp -l file1 file1_hlink
复制的时候不要覆盖目标文件,会使-f选项失效
cp -n file1 file2
保留文件的附加信息。例如时间戳所有者权限
-p 相当于—preserve=mode,ownership,timestamps
cp -p file1 file2
mode,ownership,timestamps这些文件属性可单独指定保留哪些,通过—preserve=[属性列表]来指定。
cp –preserve=mode file1 file2
cp –preserve=ownership file1 file2
cp –preserve=timestamps file1 file2
将目录dir1复制成目录dir2(复制目录内容时必须加上-R)
注意:用户使用该指令复制目录时,必须使用参数 -r 或者 -R 。
cp -R file1 file2
建立软链接文件(相当于window下的快捷方式,本质不是文件)
软链接是一个指向目标文件或目录的符号链接,实际上是一个特殊类型的文件,其中包含目标文件的路径。软链接类似于 Windows 中的快捷方式。软链接和源文件具有不同的 inode,它们的链接性质是弱的,如果原始文件或目录被删除或移动,软链接将失效。
cp -s file1 file1_slink
复制文件,只有源文件比目标文件的修改时间新或者目标文件不存在时,才复制文件
cp -u file1 file2
同时将文件file1、file2、file3与目录dir1复制到dir2
注意,只有最后一个才是目标路径,前面的都是源路径cp -R file1 file2 file3dir1 dir2
来源: 百度百科
内容资源由项目单位提供