cp命令是Linux系统中用于复制文件和目录的基础命令,全称为copy,支持将源文件或目录复制到指定的目标路径,默认情况下会保留文件的内容,部分属性可能需要额外参数才能同步。

cp命令基础语法
cp命令的基本语法格式如下:
cp [选项参数] 源文件/目录 目标路径
其中选项参数是可选的,用来调整复制的行为,源文件/目录可以是一个或多个,目标路径是复制后的存放位置。
常用参数说明
以下是cp命令最常用的参数,实际使用时可以根据需求组合:
| 参数 | 作用说明 |
|---|---|
| -r 或 -R | 递归复制目录,复制目录时必须加该参数,否则会报错 |
| -i | 交互模式,复制时如果目标文件已存在,会询问是否覆盖 |
| -f | 强制复制,覆盖已存在的目标文件时不提示 |
| -p | 保留源文件的权限、所有者、时间戳等属性 |
| -v | 显示复制过程的详细信息,方便查看复制进度 |
| -a | 归档模式,相当于 -dR --preserve=all,保留所有文件属性,常用于备份 |
常见使用场景示例
1. 复制单个文件到目标目录
将当前目录下的test.txt文件复制到/home/user/docs目录下:
# 如果目标目录存在,复制后文件名为test.txt cp test.txt /home/user/docs # 如果希望复制后重命名,可以直接指定目标文件名 cp test.txt /home/user/docs/new_test.txt
2. 复制多个文件到目标目录
将当前目录下的a.txt、b.txt、c.txt三个文件同时复制到/tmp目录:
cp a.txt b.txt c.txt /tmp
也可以使用通配符批量复制同类型文件,比如复制所有.log文件:
cp *.log /tmp/logs
3. 复制目录(递归复制)
复制project目录到/opt目录下,需要加-r参数:
# 复制后/opt下会出现project目录 cp -r project /opt # 结合-v参数查看复制过程 cp -rv project /opt
4. 保留文件属性复制
如果需要复制文件时保留原文件的修改时间、权限等属性,使用-p参数:
cp -p config.conf /etc/app/
如果是备份场景,推荐使用-a参数,能完整保留目录和文件的所有属性:
cp -a /var/www/html /backup/html_20240101
5. 避免误覆盖的交互复制
默认情况下cp命令覆盖已存在文件不会提示,如果需要避免误覆盖,可以加-i参数:
cp -i test.txt /home/user/docs # 如果目标文件已存在,会提示是否覆盖,输入y确认,n取消
注意事项
- 复制目录时必须添加
-r或-R参数,否则会提示omitting directory错误 - 使用
-f参数时要谨慎,避免误删重要文件 - 如果目标路径是文件且已存在,cp命令会直接覆盖该文件内容
- 复制文件时需要保证对源文件有读权限,对目标目录有写权限
如果不确定复制操作是否符合预期,可以先使用-v参数查看复制过程,或者提前备份目标路径下的原有文件。