首页 > 技术文章 > cp

forlive 2017-12-22 17:17 原文

cp(选项)(参数)   复制
当复制多个源文件时,目标必须是个目录。
cp命令默认使用会带上-i选项,当目标已有文件时,会询问用户是否覆盖掉,可以用\cp来取消-i选项

-a:将文件的所有属性都一并复制,用于归档文件。,以后还有归档压缩的命令
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,如果目标文件或目录都存在直接覆盖

[root@bogon admin]# cp -f a/c b/ 
cp: overwrite `b/c'? y
强制复制也会提示询问用户是否覆盖,可以用\
[root@bogon admin]# \cp -f a/c b/ 
[root@bogon admin]# 

 -i:如果目标文件或目标目录都存在,询问用户是否覆盖

[root@bogon admin]# cp -i a/c b/
cp: overwrite `b/c'? y
这也是cp命令默认的方式
[root@bogon admin]# alias cp
alias cp='cp -i'

-l:对源文件建立硬连接,复制源文件的innode号,而非复制文件;

[root@bogon admin]# cp /a a
[root@bogon admin]# cp -l /a aa
[root@bogon admin]# ls -li /a a aa          加上-i显示出文件的inode号
139923 -rwxr-xr-x. 1 root root 0 Dec 22 01:45 a          这个是直接复制过来的文件
 12090 -rwxrwxrwx. 2 root root 0 Dec 22 00:55 /a       这货是源文件
 12090 -rwxrwxrwx. 2 root root 0 Dec 22 00:55 aa      这个是通过cp -l复制过来的文件

 -P:保留源文件或目录的属性;

[root@bogon admin]# cp aa /
[root@bogon admin]# ls -l aa /aa
-rwxrwxrwx. 1 admin admin 0 Dec 22 00:55 aa
-rwxr-xr-x. 1 root  root  0 Dec 22 01:13 /aa
以root用户为例,当我复制admin用户家目录下的aa文件到根目录下时,文件的属主和属组变成了root。
[root@bogon admin]# cp -p aa /
cp: overwrite `/aa'? y
[root@bogon admin]# ls -l aa /aa
-rwxrwxrwx. 1 admin admin 0 Dec 22 00:55 aa
-rwxrwxrwx. 1 admin admin 0 Dec 22 00:55 /aa
当加上-p选项后,复制完成后的文件属主和属组没有发生变化,还是原来的admin
这个-p貌似对原文件属主属组为root的无效???

-R/r:递归处理,将指定目录下的所有文件与子目录一并复制;

[root@bogon admin]# cp -rv b c
`b' -> `c/b'
`b/c' -> `c/b/c'
`b/c/d' -> `c/b/c/d'
`b/c/d/e' -> `c/b/c/d/e'

 -s:对源文件建立符号连接,而非复制文件;

[root@bogon admin]# cp -s /a aa
[root@bogon admin]# ls -l aa
lrwxrwxrwx. 1 root root 2 Dec 22 01:32 aa -> /a

 -b:覆盖已存在的文件目标前将目标文件备份;

[root@bogon admin]# cp -bv /a a
cp: overwrite `a'? y
`/a' -> `a' (backup: `a~')
[root@bogon admin]# ls -l a*
-rwxr-xr-x. 1 root root 0 Dec 22 01:42 a
-rwxrwxrwx. 2 root root 0 Dec 22 00:55 a~

 -v:显示操作过程

上面都已经显示过了

 

推荐阅读