核心方法:cp
命令详解
cp
(copy)是Linux最常用的复制命令,通过不同参数实现灵活操作。
复制文件夹内所有文件(不包含子文件夹)
cp -v /源文件夹/* /目标文件夹/
- 作用:复制源文件夹内所有可见文件(含隐藏文件除外)到目标文件夹。
- 参数解析:
-v
:显示复制过程(可选)。- :通配符匹配源文件夹下所有非隐藏文件。
- 示例:
cp /home/user/docs/* /backup/docs/ # 复制docs下所有文件到备份目录
复制所有文件(含隐藏文件)
cp -v /源文件夹/.* /源文件夹/* /目标文件夹/
- 关键点:
- 匹配以开头的隐藏文件(如
.config
)。 - 需同时指定 和 确保覆盖所有文件。
- 匹配以开头的隐藏文件(如
递归复制整个文件夹(含子文件夹和文件)
cp -r /源文件夹 /目标文件夹/
- 参数解析:
-r
或-R
:递归复制目录及其内容。
- 示例:
cp -r /var/www/html /backup/ # 备份整个html目录
进阶场景与技巧
保留文件属性(权限、时间戳)
cp -a /源文件夹 /目标文件夹/
- 参数解析:
-a
:等同于-dR --preserve=all
,保留原始文件的所有属性。
避免覆盖已有文件
cp -n /源文件夹/* /目标文件夹/ # -n:不覆盖已存在文件 cp -i /源文件夹/* /目标文件夹/ # -i:覆盖前询问确认
使用 rsync
实现增量复制(推荐大型目录)
rsync -avh /源文件夹/ /目标文件夹/
- 优势:
- 仅复制变化文件,节省时间和带宽。
-a
:归档模式(保留属性),-v
:详细输出,-h
:友好显示单位。
注意事项与常见问题
- 权限问题:
- 若目标文件夹无写入权限,使用
sudo
提权:sudo cp -r /源文件夹 /目标文件夹/
- 若目标文件夹无写入权限,使用
- 路径格式:
- 路径结尾加 表示复制(如
cp /a/* /b/
复制a内文件到b)。 - 路径结尾不加 表示复制文件夹本身(如
cp -r /a /b/
在b中生成a
文件夹)。
- 路径结尾加 表示复制(如
- 覆盖风险:
- 目标文件夹有同名文件时,
cp
默认静默覆盖,建议首次操作前用-i
参数或提前备份。
- 目标文件夹有同名文件时,
- 符号链接处理:
- 默认复制链接指向的文件(非链接本身),需用
-d
保留链接:cp -d /源文件夹/* /目标文件夹/
- 默认复制链接指向的文件(非链接本身),需用
总结建议
- 基础操作:优先使用
cp -r
或cp -a
递归复制。 - 精细控制:需排除子目录时用 通配符,并补充 覆盖隐藏文件。
- 生产环境:大型目录迁移用
rsync
提升效率,避免数据中断。 - 安全习惯:操作前用
ls /源文件夹
确认文件列表,重要数据提前备份。
引用说明基于 GNU Coreutils 官方文档中
cp
与rsync
的规范,参考 Linux man 手册页(可通过man cp
或man rsync
查看),实践方法已在 Ubuntu 20.04/CentOS 7 等主流发行版验证,符合 POSIX 标准。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7159.html