做什么

复制文件或目录。

常用参数

参数 含义
-r / -R 递归复制目录
-i 覆盖前问
-f 强制覆盖(不问)
-n 不覆盖已存在的
-u 仅复制新的 / 修改过的
-a 归档模式(保留所有属性,等同 -dR --preserve=all
-p 保留模式 / 时间戳 / 所有者
-v 显示过程
-l 建硬链接而不是复制
-s 建软链接而不是复制

实战

cp a.txt b.txt              # 文件 → 文件
cp a.txt /tmp/              # 文件 → 目录
cp *.log /backup/           # glob:所有 log 到 /backup
cp -r src/ dest/            # 递归复制目录
cp -a src/ dest/            # ★ 推荐:完整克隆(属性 / 链接 / 时间都保留)
cp -p file.txt /tmp/        # 保留时间戳和权限
cp -u src/* /backup/        # 增量:只复制新的或改过的

大量文件用 rsync

# rsync 更强:可断点续传 + 显示进度 + 排除
rsync -av --progress src/ dest/

  • cp src/ dest/(带斜杠) vs cp src dest/
    • cp -a src/ dest/ → src 里的内容复制到 dest 里
    • cp -a src dest/ → src 文件夹本身复制成 dest/src
  • 默认不保留时间戳——重要时加 -p-a
  • 跨文件系统复制大文件慢但稳;同文件系统 mv 是瞬间(只改指针)