cp
是 Linux 中用于复制文件或目录的核心命令,功能强大且灵活。以下是详细用法和常见场景示例:
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
选项 | 作用 |
---|---|
-i |
覆盖前提示确认(交互模式) |
-r /-R |
递归复制目录(必选) |
-v |
显示复制过程(verbose) |
-u |
仅复制源比目标更新的文件 |
-p |
保留文件属性(权限、时间戳) |
-a |
归档模式(相当于 -rp ,保留所有信息) |
-l |
创建硬链接而非复制 |
-s |
创建符号链接(软链接) |
复制文件到目标路径
cp file.txt /backup/ # 复制到目录,保持原名
cp file.txt /backup/new.txt # 复制并重命名
复制目录(必须加 -r
)
cp -r /data/logs /backup/ # 递归复制整个目录
交互模式(避免覆盖)
cp -i *.txt /backup/ # 覆盖前询问
保留文件属性(权限、时间)
cp -p important.conf /etc/ # 保留原属性
cp -a /home/user /backup/ # 归档模式(常用于完整备份)
仅更新较新的文件
cp -u *.sh /scripts/ # 仅复制比目标更新的文件
创建链接而非复制
cp -s /var/log/messages ~/ # 创建软链接(节省空间)
cp -l bigfile.dat ~/ # 创建硬链接
-i
或使用 alias cp='cp -i'
。*
或 ?
匹配多个文件(如 cp *.jpg /images/
)。Permission denied
。# 复制时排除特定文件
rsync -av --exclude='*.tmp' /source/ /dest/ # 需安装 rsync
# 显示实时进度(大文件时)
cp -v bigfile.iso /backup/ | pv -lep -s $(du -sb bigfile.iso | awk '{print $1}')
掌握这些用法后,cp
可以应对绝大多数复制需求!遇到特殊场景可结合 man cp
查阅手册。