- 单源复制:cp[OPTION]… [-T] SOURCE(源,一个文件) DEST(目标)
- 如果DEST不存在:则复制为两步,先创建此文件(或文件夹),并将源文件(或文件夹)里的数据填充到该文件(或文件夹)中
- 如果DEST存在:
- 如果DEST是非目录文件,则覆盖目标文件,直接回车等于取消命令,需要输入“y”
- 如果DEST是目录文件,则先在DEST目录下创建一个与源文件同名的文件
- 多源复制:cp[OPTION]… .. DIRECTORY;cp [OPTION]… -t DIRECTORY SOURCE…(少用)
- 如果源是多个文件
- DEST不存在或为文件:错误
- 如果DEST是目录文件:分别复制每一个文件至目标目录中,并保持原名
- 如果源是目录(必须使用-r)
- 目标不存在:
- cp -r /game/sheng /root/sheng4,将/sheng复制到/root下并且改名为sheng4目录,/sheng4之前是没有的
- 如果DEST存在:
- 如果DEST是非目录文件,错误
- 如果DEST是目录文件,在目标目录文件夹下新建与原目录同名的目录,并将SRC目录中的内容填充到新目录中
- 注意:如果源目录名和目标目录中的有些子目录名相同,这些相同名字的目录中,两两会合并为一个目录并且数据为并集
- 目标不存在:
- 如果源是多个文件
- cp的选项:
- -i:交互式复制,即覆盖之前提醒用户确认是否覆盖(在root用户下操作,cp别名成了cp -i,避免root误操作,普通用户没有别名)
- -v:显示复制的过程(一般拷贝较大文件时)
- -f:强制覆盖目标文件,当一个普通用户对目录拥有完全的控制权限(例如自己的家目录),可以对目录下其他用户的包括root的文件进行rm操作,和强制覆盖cp -f操作(强制覆盖实质上是先删除后复制文件)
- -r| -R:递归复制目录到目标
- -a | –archive归档复制,用于备份,相当于 :-dR –preserve=all
- -d:–no-dereference –preserv=links,在复制软连接的时候,名字是软连接的名字,数据则是真实文件的数据,此选项表示不复制原文件,只复制链接名
- –preserve=mode:权限 | timestamp:时间戳 | ownership:所属主组 | all:全部,在复制的时候文件的元数据的时间戳所属主组等都有可能发生变化,此选项能在复制的时候保留源文件的制定的属性
- -p:等同–preserve=mode,ownership,timestamp
- 注意:复制文件的时保留元数据与权限有关系,权限不够时是不能保留其元数据信息的
- 注意: 在复制的时候,cp -r /dir1/dir2/.*/dir3,这样会把dir1中的内容全部复制到dir3中,因为.*匹配到了..
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/94805