1. 命令概述
- 命令名称:
cp(英文全拼:copy) - 核心功能:复制文件和目录
- 主要用途:文件备份、目录复制、数据迁移
2. 语法格式
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
3. 常用选项
| 选项 | 说明 |
|---|---|
-a | 归档模式,保留所有文件属性(等于 -dpr) |
-d | 保留符号链接 |
-f | 强制复制,覆盖目标文件 |
-i | 交互模式,覆盖前询问确认 |
-l | 创建硬链接而非复制 |
-n | 不覆盖已存在文件 |
-p | 保留文件属性(权限、时间戳等) |
-r | 递归复制目录 |
-s | 创建符号链接 |
-u | 只复制源文件比目标文件新的文件 |
-v | 显示详细操作信息 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
4. 常用实例详解
(1) 基本用法
# 复制单个文件
cp file.txt file_backup.txt
# 复制多个文件到目录
cp file1.txt file2.txt /backup/
# 复制目录(需要 -r 选项)
cp -r directory/ /backup/
(2) 保留文件属性
# 保留文件权限和时间戳
cp -p file.txt file_backup.txt
# 归档模式(保留所有属性)
cp -a directory/ /backup/
(3) 交互模式
# 覆盖前询问确认
cp -i file.txt /backup/
# 强制覆盖,不询问
cp -f file.txt /backup/
# 不覆盖已存在文件
cp -n file.txt /backup/
(4) 链接复制
# 创建硬链接
cp -l file.txt file_link.txt
# 创建符号链接
cp -s file.txt file_symlink.txt
5. 实际应用场景
场景一:文件备份
# 备份重要文件
cp -p important.txt important.txt.bak
# 备份配置文件
cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
# 备份多个文件
cp -p file1.txt file2.txt file3.txt /backup/
场景二:目录复制
# 复制整个目录
cp -r source_dir/ destination_dir/
# 保留目录所有属性
cp -a source_dir/ destination_dir/
# 复制目录并显示进度
cp -rv source_dir/ destination_dir/
(3) 系统维护
# 更新配置文件
cp -u new_config.conf /etc/app/
# 恢复备份文件
cp -f backup.txt original.txt
# 复制日志文件
cp /var/log/*.log /backup/logs/
(4) 批量操作
# 复制所有 .txt 文件
cp *.txt /backup/
# 复制所有 .conf 文件
cp /etc/*.conf /backup/
# 复制所有隐藏文件
cp .* /backup/
6. 高级用法
(1) 使用通配符
# 复制所有 .txt 文件
cp *.txt /backup/
# 复制所有以 .conf 结尾的文件
cp /etc/*.conf /backup/
# 复制所有以数字结尾的文件
cp file[0-9].txt /backup/
(2) 结合其他命令
# 查找并复制文件
find . -name "*.txt" -exec cp {} /backup/ \;
# 复制并重命名
ls *.txt | xargs -I {} cp {} /backup/{}.bak
# 复制并压缩
cp file.txt /backup/ && gzip /backup/file.txt
(3) 权限提升
# 复制到需要权限的目录
sudo cp file.txt /root/
# 复制系统文件
sudo cp /etc/hosts /etc/hosts.bak
# 复制并保留权限
sudo cp -p /etc/passwd /backup/
7. 注意事项
- 目录复制:复制目录必须使用
-r或-a选项 - 文件覆盖:默认会覆盖目标文件,使用
-i选项确认 - 权限问题:复制到系统目录需要 root 权限
- 符号链接:默认复制链接指向的文件,使用
-d保留链接 - 磁盘空间:复制大文件前确保目标位置有足够空间
8. 常见问题解决
(1) 权限不足
# 使用 sudo 提升权限
sudo cp file.txt /etc/
# 修改目标目录权限
sudo chmod 777 /target/dir
cp file.txt /target/dir/
(2) 目录不存在
# 创建目标目录
mkdir -p /backup/dir
cp file.txt /backup/dir/
(3) 文件已存在
# 使用 -i 选项确认覆盖
cp -i file.txt /backup/
# 使用 -n 选项不覆盖
cp -n file.txt /backup/
# 备份并重命名
cp file.txt /backup/file.txt.$(date +%Y%m%d)
(4) 磁盘空间不足
# 检查磁盘空间
df -h
# 清理空间后重试
rm -f /tmp/large_file
cp large_file /backup/
核心要点总结:
cp用于复制文件和目录,是日常文件操作的核心命令- 常用选项:
-r(递归)、-a(归档)、-i(交互)、-f(强制)、-p(保留属性) - 目录复制:必须使用
-r或-a选项 - 实际应用:文件备份、目录复制、系统维护、批量操作
- 权限要求:复制到系统目录需要 root 权限
- 安全操作:使用
-i选项避免误覆盖,使用-n选项避免覆盖
cp 命令是 Linux 系统中最基础也是最常用的命令之一,熟练掌握可以大大提高文件管理效率。