linux如何使用cp复制目录
linux如何使用cp复制目录详细介绍
在 Linux 中复制目录需要使用 cp 命令的递归选项 -r(或 -R),以下是不同场景的用法示例:
1. 基础复制(最常用)
bash
源目录 目标路径project /backup/
- 关键:必须加
-r(recursive,递归复制),否则会报错Not a directory - 效果:复制目录内所有文件 + 子目录,不保留原目录权限 / 时间戳
2. 保留完整属性(推荐)
bash
源目录 目标路径~/Documents /mnt/usb/backup/
-a是「归档模式」,会保留:
所有者 / 权限 时间戳 符号链接 扩展属性- 适合备份,保持文件系统级一致性
3. 覆盖前询问(防误删)
bash
源目录 目标路径old_project new_project
-i(interactive):交互式确认,避免误覆盖重要文件- 场景:在不确定目标是否有旧数据时使用
4. 过滤特定文件(高级)
bash
源目录 目标路径
源目录 目标路径
--exclude:直接排除指定文件 / 目录(支持通配符)- 复杂过滤:建议用
rsync(更专业的同步工具)
常见错误
- 忘记
-r:cp 目录 目标会报错,因为默认不递归 - 权限问题:复制系统目录(如
/etc)需加sudo - 目标路径结尾:
cp -r a/ b→ 目录a内的内容复制到b中cp -r a b→ 整个目录a复制为b(推荐写法)
总结表格
| 场景 | 命令示例 | 说明 |
|---|---|---|
| 普通复制 | cp -r src/ dst/ |
基础用法,必须加 -r |
| 完整备份 | cp -a docs/ backup/ |
保留所有文件属性 |
| 安全覆盖 | cp -ri old/ new/ |
覆盖前询问 |
| 排除特定文件 | cp -r --exclude="log" app/ dist/ |
过滤日志文件 |
日常使用建议优先用 -a 保持一致性,新手建议搭配 -i 避免误操作。如果需要增量复制(仅更新变化文件),推荐使用 rsync -avh。