cp
是 Linux/Unix 系统中用于复制文件或目录的核心命令,其参数(选项)可以灵活控制复制行为。以下是常用参数及其含义的详细说明:
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
参数 | 含义 | 示例 |
---|---|---|
-a |
归档模式:保留所有文件属性(权限、所有者、时间戳等),递归复制目录。等同于 -dR --preserve=all |
cp -a /old /backup |
-r / -R |
递归复制:复制目录及其子目录和文件 | cp -r dir1 dir2 |
-i |
交互模式:覆盖前提示用户确认 | cp -i file1 file2 |
-f |
强制覆盖:直接覆盖已存在的目标文件(默认行为可能依赖 Shell 别名) | cp -f file1 file2 |
-n |
不覆盖:跳过已存在的目标文件 | cp -n file* /backup |
-u |
增量复制:仅当源文件比目标文件新时覆盖 | cp -u *.log /backup |
-v |
显示详细过程:输出复制操作信息 | cp -v file1 file2 |
-p |
保留属性:保留文件权限、时间戳等(部分属性) | cp -p file1 /backup |
-l |
创建硬链接:替代复制文件(节省空间) | cp -l file1 link1 |
-s |
创建符号链接:生成软链接而非复制文件 | cp -s file1 symlink |
--preserve= |
保留指定属性:如 mode (权限)、ownership (所有者)、timestamps (时间戳)等 |
cp --preserve=timestamps file1 file2 |
--backup= |
备份覆盖的文件:可选 numbered (带编号)、simple (默认)等 |
cp --backup=numbered file1 file2 |
-b |
自动备份:覆盖前生成带 ~ 后缀的备份文件 |
cp -b file1 file2 |
-t |
指定目标目录:将源文件列表复制到目标目录 | cp -t /dest dir1/file1 dir2/file2 |
-r
或 -a
,否则会报错。alias cp='cp -i'
)而异。-f
强制覆盖时,若目标文件无写权限,仍会失败(需配合 chmod
)。-P
保留链接,或 -L
跟随链接复制实际内容。--sparse=always
可优化大文件的存储效率。备份目录(保留所有属性)
cp -a /data /backup/data_2023
仅复制更新的文件
cp -u *.txt /backup/
强制覆盖且显示详情
cp -fv source/* dest/
生成备份文件
cp --backup=numbered config.conf config.conf
rsync
更强大:如需增量同步、远程复制等,推荐使用 rsync
命令。/usr/
),可能需要 sudo
提权。通过合理组合参数,cp
可以高效完成从简单复制到复杂备份的所有任务。