200字
cp
2025-10-10
2025-10-10

"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数据目录,保留所有文件的权限、所有者、链接关系和时间戳,确保备份与源目录完全一致,用于数据迁移或灾备。


评论