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
的替代,它提供更多功能和更好的性能