cp命令

cp 命令 #

cp命令(copy)用于复制文件和目录。它可以将一个或多个源文件或目录复制到指定的目标位置。

语法 #

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

常用选项 #

选项 描述
-a, --archive 归档模式,等同于-dR –preserve=all
-b, --backup 为已存在的目标文件创建备份
-f, --force 如果目标文件无法打开则删除它并重试
-i, --interactive 覆盖前提示确认
-l, --link 创建硬链接而不是复制
-n, --no-clobber 不覆盖已存在的文件
-p, --preserve 保留源文件的属性(模式、所有权、时间戳)
-r, -R, --recursive 递归复制目录
-s, --symbolic-link 创建符号链接而不是复制
-u, --update 仅当源文件比目标文件新或目标文件不存在时才复制
-v, --verbose 显示详细操作信息

常见用法 #

1. 复制单个文件 #

cp source.txt destination.txt

2. 复制文件到目录 #

cp file.txt /path/to/directory/

3. 复制多个文件到目录 #

cp file1.txt file2.txt file3.txt /path/to/directory/

4. 递归复制目录及其内容 #

cp -r source_directory/ destination_directory/

5. 保留文件属性(权限、时间戳等) #

cp -p file.txt destination.txt

6. 归档模式复制(保留所有属性) #

cp -a source_directory/ destination_directory/

7. 交互式复制(覆盖前提示) #

cp -i file.txt destination.txt

输出示例(如果目标文件已存在):

cp: overwrite 'destination.txt'? y

8. 仅当源文件较新时才复制 #

cp -u source.txt destination.txt

9. 创建备份再复制 #

cp -b file.txt destination.txt

这将在覆盖destination.txt前创建一个名为destination.txt~的备份。

10. 创建符号链接而不是复制 #

cp -s /path/to/source.txt link.txt

11. 显示复制过程 #

cp -v file.txt destination.txt

输出示例:

'file.txt' -> 'destination.txt'

12. 不覆盖现有文件 #

cp -n source.txt destination.txt

13. 使用通配符复制多个文件 #

cp *.txt /path/to/directory/

提示 #

  • 使用-i选项可以防止意外覆盖重要文件
  • 复制目录时,记得使用-r-R选项
  • 使用-a选项进行完整备份,它会保留所有文件属性和链接
  • 目标路径如果以斜杠/结尾,cp会将其视为目录;否则,如果只有一个源文件,则视为文件名
  • 复制大量文件或大文件时,可以使用-v选项查看进度
  • 在脚本中,通常使用-f选项忽略错误
  • 使用-u选项可以实现简单的增量备份
  • 复制特殊文件(如设备文件)时,可能需要特殊权限
  • 在某些系统上,可以使用rsync命令作为cp的替代,它提供更多功能和更好的性能