插件窝 干货文章 Linux cp

Linux cp

文件 复制 bash 目录 646    来源:    2025-05-11

cp 是 Linux 系统中用于复制文件和目录的核心命令。作为 IT 工程师,以下是关于 cp 命令的详细说明和实用技巧:


基础语法

cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录

常用选项

选项 作用
-i 覆盖前提示确认(交互模式)
-n 禁止覆盖已存在文件
-r/-R 递归复制目录(包括子目录)
-v 显示详细操作过程
-u 仅复制源中更新或缺失的文件
-p 保留原文件的属性(权限、时间戳等)
-a 归档模式(相当于 -rp,保留所有属性)
-l 创建硬链接而非复制
-s 创建软链接(符号链接)

典型用例

  1. 复制文件到目标路径

    cp file.txt /backup/          # 复制到目录
    cp file1.txt file2.txt dir/   # 复制多个文件到目录
    
  2. 递归复制目录

    cp -r /source/dir /backup/    # 复制目录及其内容
    
  3. 保留文件属性(适用于备份)

    cp -pa /var/www /backup/      # 保留权限、时间戳等
    
  4. 仅更新差异文件

    cp -u *.log /backup/          # 仅复制更新的日志文件
    
  5. 创建链接而非复制

    cp -s /opt/app/config.conf /etc/  # 创建符号链接(节省空间)
    

注意事项

  1. 覆盖风险

    • 默认情况下 cp 会静默覆盖目标文件,建议高危操作前添加 -i 选项或使用别名: bash alias cp='cp -i' # 加入 ~/.bashrc 永久生效
  2. 通配符处理

    • 复制多个文件时,确保通配符被正确引用: bash cp *.pdf ~/docs/ # 复制所有PDF文件
  3. 权限问题

    • 若目标目录无写入权限,会报错 Permission denied,需使用 sudo 提权。
  4. 特殊文件

    • 复制设备文件(如 /dev/sda)需使用 -a 选项保持属性。

高级技巧

  1. 结合 find 选择性复制

    find /src -name "*.conf" -exec cp {} /backup/ \;
    
  2. 排除特定文件

    rsync -av --exclude='temp/' /source/ /backup/  # 需安装 rsync
    
  3. 显示进度(需安装 pv

    pv source.iso > destination.iso
    

替代方案

  • rsync:更强大的增量同步工具,支持断点续传、远程复制等。
  • dd:适用于块设备或二进制文件的精确复制(如磁盘克隆)。

掌握 cp 命令的灵活使用能显著提升文件管理效率,尤其在自动化脚本和系统维护中。建议通过 man cp 查阅完整手册。