cp - 复制文件和目录
cp 用于复制文件,也可以递归复制目录。目标文件已存在时,默认行为可能导致内容被替换,执行前应确认源路径和目标路径。
常用参数
-i、--interactive:覆盖现有文件前询问。-R、--recursive:递归复制目录。-a、--archive:归档模式,递归复制并尽量保留链接、权限、所有者和时间戳。-p、--preserve:保留指定属性;不写属性列表时保留权限、所有者和时间戳。-v、--verbose:显示正在复制的文件。-b、--backup:覆盖前备份已有目标。-P、--no-dereference:把源符号链接复制为符号链接。-L、--dereference:跟随源符号链接,复制其指向的内容。
使用示例
# 复制单个文件
cp source.txt destination.txt
# 覆盖前询问
cp -i source.txt destination.txt
# 复制多个文件到目录
cp file-1.txt file-2.txt backup/
# 递归复制目录
cp -R project backup/
# 归档复制并显示过程
cp -av project backup/
# 覆盖前创建编号备份(GNU cp)
cp --backup=numbered source.txt destination.txt文件名以 - 开头时,使用 -- 结束选项解析:
cp -- -source.txt destination.txt避免误覆盖
- 不要使用
yes | cp ...自动确认覆盖,也不要为了绕过别名而盲目使用\cp -rf。 -f主要用于目标无法正常打开时先移除再重建,不是安全确认选项。cp没有通用的预演模式。批量复制前可先列出源文件,并在临时目录验证路径结构。- 使用
-L递归复制时可能跟随链接离开原目录树,应只在确认链接目标后使用。 - 跨文件系统复制时,所有者、ACL、扩展属性和稀疏文件等元数据不一定能完整保留。