Skip to content

cp 命令:复制文件和目录

1. 命令简介

cp 命令是 "copy" 的缩写,用于复制文件和目录。它是 Unix 和类 Unix 系统中最基本和常用的命令之一。

2. 基本语法

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

3. 常用选项

  • -r-R:递归复制目录及其内容
  • -i:交互模式,覆盖前提示
  • -f:强制复制,不提示(即使目标文件存在)
  • -v:详细模式,显示复制过程
  • -p:保留源文件的模式、所有权和时间戳
  • -u:仅当源文件比目标文件新或目标文件不存在时才复制

4. 基础使用示例

  1. 复制单个文件:

    Shell
    cp file.txt copy_of_file.txt
  2. 复制文件到另一个目录:

    Shell
    cp file.txt /path/to/directory/
  3. 复制多个文件到目录:

    Shell
    cp file1.txt file2.txt file3.txt /path/to/directory/
  4. 复制目录及其内容:

    Shell
    cp -r source_directory destination_directory

5. 进阶使用技巧

  1. 保留文件属性:

    Shell
    cp -p original.txt copy.txt
  2. 仅复制更新的文件:

    Shell
    cp -u *.txt /path/to/backup/
  3. 复制并重命名:

    Shell
    cp original.conf{,.bak}

    这会创建 original.conf.bak

  4. 使用通配符复制多个文件:

    Shell
    cp *.jpg /path/to/photos/

6. 实用示例

  1. 创建文件的硬链接而不是复制:

    Shell
    cp -l file.txt link_to_file.txt
  2. 复制时排除某些文件:

    Shell
    cp -r source_dir/* dest_dir/ --exclude=*.tmp
  3. 复制大文件时显示进度:

    Shell
    cp big_file.iso /path/to/destination/ | pv

    注意:这需要安装 pv 命令。

7. 注意事项

  • 复制大量或大型文件时,考虑使用 rsync 命令,它更高效且支持断点续传。
  • 在脚本中使用 cp 时,最好加上错误检查。
  • 复制符号链接时,默认复制的是链接指向的文件,使用 -P 选项可以保留符号链接。

8. 相关命令

  • mv:移动或重命名文件
  • rsync:高级文件复制工具,支持远程复制
  • dd:用于复制低级数据

9. 技巧与建议

  1. 在复制重要文件之前,可以先创建备份:

    Shell
    cp important_file.txt{,.bak}
  2. 使用 --parents 选项可以在目标目录中创建源文件的目录结构:

    Shell
    cp --parents src/main/java/com/example/App.java dest/
  3. 在复制大量文件时,可以使用 tee 命令来记录日志:

    Shell
    cp -rv source_dir destination_dir | tee copy_log.txt

cp 命令是文件管理的基础工具之一。熟练使用它可以帮助你更有效地组织和备份文件。记住,虽然 cp 命令看似简单,但在处理大量数据或重要文件时,仍需谨慎操作。