002 cp命令

命令说明

cp(copy)用于复制文件或目录,可以把一个或多个源文件复制到指定的目标文件或目录中。

语法

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

常用参数

参数说明
-i交互模式,覆盖前提示确认
-r / -R递归复制目录(复制目录必加)
-a归档模式,保留链接、权限、时间戳等属性,等价于 -dR --preserve=all,备份时常用
-p保留源文件的权限、所有者和时间戳
-u只在源文件比目标新或目标不存在时才复制
-f强制复制,目标存在时先删除再复制
-v显示复制过程
-n不覆盖已存在的文件

使用示例

$ cp a.txt b.txt

把 a.txt 复制为 b.txt

$ cp a.txt /backup/

把 a.txt 复制到 /backup/ 目录下

$ cp a.txt b.txt /data/

同时复制多个文件到 /data/ 目录

$ cp -r /opt/app /opt/app.bak

递归复制整个 app 目录为 app.bak

$ cp -a /var/www/ /backup/www/

完整保留属性地备份网站目录

$ cp -i conf.conf /etc/app/

复制并在覆盖前提示确认

$ cp -u *.log /archive/

只复制更新的日志文件

实用技巧

  • 很多发行版默认 alias cp="cp -i",脚本中若要静默覆盖可用 \cp 或 command cp。
  • 复制目录时 -r 与 -a 的区别:-a 会保留符号链接、权限、属主和时间戳,做迁移和备份优先用 -a。
  • cp 复制会更新目标文件的修改时间;如需保留原时间戳加 -p。