命令介绍
命令:cp 复制文件或目录
用法: cp [OPTION]… [-T] SOURCE DEST cp 选项 源目标
cp [OPTION]… SOURCE… DIRECTOR cp 选项 源目录 新目录
cp [OPTION]… -t DIRECTORY SOURCE… cp 选项 目录源
命令选项
[root@fp-21 ~]# cp --help
-a, --archive # 复制目录时是使用,相当于-d、-p、-R参数组合
-d # 复制的源文件如果是链接文件,则复制链接文件而不是指向的文件本身
-f, --force # 强制复制,如果目标存在,不会进行-i、-u选项,直接覆盖
-i, --interactive # 复制时如果目标文件已经存在,询问是否替换
-H # 遵循源代码中的命令行符号链接
-l, --link # 不复制文件,生成硬链接文件
-L, --dereference # 始终遵循源中的符号链接
-n, --no-clobber # 不覆盖现有的文件
-P, --no-dereference # 永远不要跟随源代码中的符号链接
-p # 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-R, -r, --recursive # 递归复制目录
-s, --symbolic-link # 不复制文件,生成软链接文件
-S, --suffix=SUFFIX # 覆盖通常的备份后缀
-t # 将所有源参数复制到目录中
-T, --no-target-directory # 将 DEST 视为普通文件
-u, --update # 若文件同名,属性不一样(如修改时间,大小等),则覆盖目标文件
-v, --verbose # 复制的详细解释
--help # 帮助文档
--version # 版本信息
命令实例
# 复制目录时是使用,相当于-d、-p、-R参数组合
[root@fp-21 opt]# cp -a apple dir/
[root@fp-21 opt]# ll dir/
total 0
-rw-r--r--. 1 root root 0 Mar 4 22:05 apple
# 复制的源文件如果是链接文件,则复制链接文件而不是指向的文件本身
[root@fp-21 opt]# cp -d link_banana dir/
[root@fp-21 opt]# ll dir/
total 0
-rw-r--r--. 1 root root 0 Mar 4 22:05 apple
lrwxrwxrwx. 1 root root 6 Mar 4 23:15 link_banana -> banana
# 复制时如果目标文件已经存在,询问是否替换
[root@fp-21 opt]# cp -i apple dir/apple
cp: overwrite ‘dir/apple’? y
# 不覆盖现有的文件
[root@fp-21 opt]# cp -n apple dir/apple
# 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
[root@fp-21 opt]# ll dir/apple
-rw-r--r--. 1 root root 0 Mar 4 22:05 dir/apple
[root@fp-21 opt]# chown bin:bin apple
[root@fp-21 opt]# cp -p apple dir/apple
cp: overwrite ‘dir/apple’? y
[root@fp-21 opt]# ll dir/apple
-rw-r--r--. 1 bin bin 0 Mar 4 22:05 dir/apple
# 递归复制目录
[root@fp-21 opt]# mkdir dir.bak
[root@fp-21 opt]# cp -r dir ./dir.bak/
[root@fp-21 opt]# tree dir.bak/
dir.bak/
└── dir
├── apple
├── banana
└── link_banana -> banana
# 若文件同名,属性不一样(如修改时间,大小等),则覆盖目标文件
[root@fp-21 opt]# echo "改变文件大小" > apple
[root@fp-21 opt]# cp -u apple dir/apple
cp: overwrite ‘dir/apple’? y
[root@fp-21 opt]# ll dir/apple
-rw-r--r--. 1 bin bin 19 Mar 4 23:36 dir/apple
# 复制的详细解释
[root@fp-21 opt]# cp -v orange dir/
‘orange’ -> ‘dir/orange’