核心命令:cp
(推荐基础场景)
cp
(copy)是Linux最基础的复制命令,通过添加递归参数实现文件夹复制:
cp -r 源文件夹路径 目标路径
-r
(或-R
、--recursive
):递归复制目录及其子内容(必需参数)。- 示例:将
/home/user/docs
复制到/backup
目录cp -r /home/user/docs /backup
- 目标路径为目录时,文件夹
docs
会复制到/backup
下(生成/backup/docs
)。 - 目标路径不存在时,命令会自动创建目录。
- 目标路径为目录时,文件夹
常用增强选项
选项 | 作用 | 适用场景 |
---|---|---|
-v |
显示复制详情(Verbose) | 需监控进度时 |
-p |
保留文件属性(权限、时间戳) | 备份或迁移 |
-a |
归档模式(等效-rp +保留链接) |
完整克隆文件夹(最推荐) |
-i |
覆盖前提示确认(Interactive) | 防误覆盖文件 |
-u |
仅更新(目标不存在或源更新时复制) | 增量备份 |
完整示例:保留属性并显示进度
cp -av /home/user/project /mnt/backup/
高级工具:rsync
(推荐复杂场景)
rsync
适用于大文件夹、远程同步或增量备份,提供更精细的控制:
rsync -av 源文件夹路径/ 目标路径/
-a
:归档模式(保留权限、符号链接等)。-v
:显示操作详情。-z
:压缩传输(节省带宽)。--progress
:实时显示进度。
示例:本地同步文件夹(尾部关键!)
rsync -av /home/user/data/ /backup/data/ # 注意源路径末尾的`/`
- 路径末尾的区别:
rsync -av source/ target/
→ 复制source
内容到target
内。rsync -av source target/
→ 在target
下创建source
文件夹。
远程同步示例(需SSH配置):
rsync -avz -e ssh /local/folder/ user@remote-server:/remote/path/
关键注意事项
-
覆盖风险:
cp
默认静默覆盖同名文件!添加-i
选项手动确认(cp -ri
)。- 使用
rsync
时可通过--dry-run
模拟操作(不实际执行):rsync -av --dry-run source/ target/
-
权限问题:
- 普通用户可能无权访问系统目录,需用
sudo
提权(谨慎操作):sudo cp -r /home/user/data /opt/
- 普通用户可能无权访问系统目录,需用
-
符号链接处理:
cp -a
或rsync -a
会保留符号链接原样。- 若需复制链接指向的实际文件,用
-L
选项(cp -rL
或rsync -aL
)。
-
大文件优化:
rsync
支持断点续传(--partial
)和带宽限制(--bwlimit=KBPS
)。
图形界面方法(适合新手)
在GNOME、KDE等桌面环境中:
- 打开文件管理器(如Nautilus)。
- 右键点击源文件夹 → 复制(Copy)。
- 进入目标目录 → 右键点击 → 粘贴(Paste)。
注意:图形界面可能不保留特殊文件属性(如ACL权限)。
总结建议
- 基础需求 → 用
cp -a
:简单快速,完整保留属性。 - 复杂场景 → 用
rsync -av
:增量备份、远程同步首选。 - 生产环境操作前:务必用
--dry-run
测试,避免误覆盖。
安全提示:
操作关键数据前先备份!避免使用\*
通配符导致意外覆盖,推荐明确指定路径。
引用说明基于Linux核心命令手册(man cp
、man rsync
)及开源社区最佳实践,遵循POSIX标准,已在Ubuntu 22.04/CentOS 7等主流发行版验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6686.html