"Copy" 的缩写,是一个用于复制文件或目录的命令行工具。
该命令可以将文件或目录从源路径复制到目标路径,支持单个文件复制、多个文件批量复制、目录递归复制等场景,是文件备份和迁移的核心命令。
 cp [选项] <源文件/目录1> <源文件/目录2> ... <目标路径>常用选项
- -i:"interactive",交互式复制,若目标文件已存在,会提示是否覆盖,例如- cp -i file.txt /backup/当- backup目录中已有- file.txt时,会询问是否覆盖。
- -f:"force",强制复制,若目标文件已存在则直接覆盖,不提示确认,例如- cp -f new.txt old.txt直接用- new.txt覆盖- old.txt。
- -r或- -R:"recursive",递归复制目录,用于复制目录及其包含的所有文件和子目录,例如- cp -r docs /tmp/将- docs目录及内容复制到- /tmp下。
- -v:"verbose",显示复制过程的详细信息,例如- cp -v data.csv /archive/会输出- 'data.csv' -> '/archive/data.csv',便于跟踪复制进度。
- -p:"preserve",保留源文件的属性(包括权限、所有者、修改时间等),例如- cp -p config.ini /etc/复制后- config.ini的权限和修改时间与源文件一致。
- -a:"archive",归档模式,等同于- -dR --preserve=all,保留链接、递归复制并保留所有文件属性,适合完整备份目录(如- cp -a /home/user /backup/)。
- -l:"link",创建硬链接而非复制文件内容,例如- cp -l file.txt link.txt生成- file.txt的硬链接- link.txt,两者指向同一文件数据。
- -s:"symbolic link",创建符号链接(软链接)而非复制文件,例如- cp -s /usr/bin/python3 python生成指向- python3的软链接- python。
参考示例
- 示例1:复制单个文件到指定目录 执行 - cp report.pdf /home/user/docs/,将当前目录的- report.pdf复制到- docs目录下,若目标目录中已有同名文件,会直接覆盖(默认行为,非交互式)。
- 示例2:复制多个文件到目标目录 执行 - cp *.jpg /var/www/images/,将当前目录下所有- .jpg图片文件复制到Web图片目录,适合批量迁移同类文件。
- 示例3:递归复制目录及内容 执行 - cp -rv project /backup/,递归复制- project目录及其所有子文件/目录到- /backup下,并显示每个文件的复制过程,用于项目备份。
- 示例4:保留属性复制配置文件 执行 - cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak,复制Nginx配置文件并创建备份,保留原文件的权限和修改时间,确保备份文件属性与源文件一致。
- 示例5:交互式覆盖复制 执行 - cp -i new_config.ini /etc/app/,当- /etc/app/中已有- new_config.ini时,会提示- 是否覆盖 '/etc/app/new_config.ini'?,需手动确认后才执行复制,避免误覆盖重要文件。
- 示例6:创建文件的软链接 执行 - cp -s /opt/app/latest/bin/run.sh /usr/local/bin/run,在系统命令目录创建指向应用启动脚本的软链接,无需将脚本复制到- bin目录即可直接执行- run命令。
- 示例7:归档复制目录(完整备份) 执行 - cp -a /var/lib/mysql /backup/mysql_bak,以归档模式复制MySQL数据目录,保留所有文件的权限、所有者、链接关系和时间戳,确保备份与源目录完全一致,用于数据迁移或灾备。
 
    