Linux 的 cp
命令用于复制文件或目录。以下是其常见用法和选项的详细说明:
基本语法
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
常用选项
选项 | 说明 |
---|---|
-r 或 -R |
递归复制目录(用于复制目录及其子内容)。 |
-i |
交互模式,覆盖前询问用户确认。 |
-f |
强制覆盖,不提示(若与 -i 冲突,-f 优先)。 |
-p |
保留文件属性(权限、时间戳等)。 |
-a |
归档模式,相当于 -dR --preserve=all (保留所有属性并递归复制)。 |
-v |
显示详细输出(显示复制过程)。 |
-u 或 --update |
仅复制源文件比目标文件新或目标不存在的文件。 |
--preserve |
保留特定属性(如 mode , ownership , timestamps )。 |
-d |
保留符号链接(不复制指向的文件)。 |
-l |
创建硬链接而非复制内容(节省空间)。 |
-s |
创建符号链接而非复制内容。 |
常见用法示例
-
复制文件到目标路径
cp file.txt /path/to/destination/
- 若目标路径是目录,文件会复制到该目录下。
- 若目标路径是文件名,则文件会被复制并重命名。
-
递归复制目录
cp -r dir1/ dir2/
- 若
dir2
存在,dir1
会作为子目录复制到dir2
内。 - 若
dir2
不存在,则创建dir2
并将dir1
的内容复制进去。
- 若
-
保留文件属性(权限、时间戳)
cp -p source.txt target.txt
-
归档模式(完全备份目录)
cp -a project/ project_backup/
-
仅复制新文件(增量复制)
cp -u *.log /backup/
-
强制覆盖(跳过确认)
cp -f old.txt new.txt
-
复制符号链接本身
cp -d symlink symlink_copy
-
显示复制过程
cp -v *.jpg images/
注意事项
- 覆盖行为:若系统别名设置了
cp -i
,默认会询问覆盖,可用\cp
或-f
强制覆盖。 - 目录存在性:目标目录必须存在(除非递归复制到新目录)。
- 权限问题:普通用户可能需要
sudo
写入系统目录,且保留权限需足够权限。 - 符号链接:默认复制链接指向的文件,使用
-d
或-P
保留链接本身。
应用场景
- 备份文件:
cp -a
保留所有属性。 - 同步更新:
cp -u
仅复制更新的文件。 - 创建硬链接:
cp -l
节省空间(修改任一文件会影响另一个)。 - 快速创建符号链接:
cp -s
生成软链接。
掌握这些用法,可以高效管理文件复制任务!