每日命令 | cp
字数 1105 2025-08-18 11:38:32
Linux cp 命令详解
命令简介
cp 是 Linux 系统中用于复制文件或目录的命令,全称为 "copy"。它可以将一个或多个源文件/目录复制到指定的目标位置。
基本语法
cp [选项] 源文件 目标文件
操作模式
cp 命令有三种主要的操作模式:
-
文件复制到文件
- 将一个源文件复制到一个目标文件
- 示例:
cp file1 file2
-
文件复制到目录
- 将一个或多个源文件复制到一个目标目录
- 示例:
cp file1 file2 dir/
-
目录复制到目录
- 将一个源目录及其内容复制到一个目标目录
- 必须使用
-r或-R选项 - 示例:
cp -r dir1/ dir2/
重要选项
| 选项 | 描述 |
|---|---|
-i |
覆盖前交互提示(询问用户是否覆盖) |
-n |
不覆盖现有文件(只复制不存在的文件) |
-f |
强制复制(无条件覆盖目标文件) |
-u |
更新(仅当源文件比目标文件新时才复制) |
-p |
保留源文件的属性(权限、时间戳等) |
-r/-R |
递归复制目录(复制目录及其所有内容) |
使用示例
1. 基本文件复制
cp source.txt destination.txt
2. 复制多个文件到目录
cp file1.txt file2.txt file3.txt target_directory/
3. 递归复制目录
cp -r source_directory/ destination_directory/
4. 交互式复制(覆盖前询问)
cp -i old_file new_file
5. 仅更新较新的文件
cp -u weekly_report.txt backup/
6. 保留文件属性复制
cp -p original.txt copy.txt
注意事项
-
在文件到文件和文件到目录的操作模式中:
- 如果目标文件不存在,
cp会创建它 - 如果目标文件已存在,默认会覆盖它(除非使用
-i或-n选项)
- 如果目标文件不存在,
-
在目录复制操作中:
- 必须使用
-r或-R选项 - 目标目录必须已存在(
cp不会自动创建目标目录)
- 必须使用
-
路径可以是绝对路径或相对路径
-
使用
-p选项时,会保留以下属性:- 文件权限
- 所有者/组信息
- 时间戳(访问时间、修改时间等)
高级技巧
-
结合通配符使用:
cp *.txt backup/ -
保留符号链接(使用
-P选项):cp -P link.txt destination/ -
创建硬链接而非复制(使用
-l选项):cp -l source.txt hardlink.txt -
创建符号链接而非复制(使用
-s选项):cp -s source.txt symlink.txt
常见问题解答
Q: 为什么复制目录时需要 -r 选项?
A: 这是为了防止意外递归复制大量文件。-r 选项明确告诉系统你想要递归复制整个目录结构。
Q: -r 和 -R 有什么区别?
A: 在大多数 Linux 系统中,-r 和 -R 是完全相同的,可以互换使用。
Q: 如何避免意外覆盖重要文件?
A: 可以使用 -i 选项让系统在覆盖前询问,或者使用 -n 选项禁止覆盖已有文件。也可以设置 alias cp='cp -i' 让交互模式成为默认行为。