您的位置:首页 > 运维架构 > Linux

每天进步一点点——linux——cp

2015-06-18 09:38 555 查看

一            简介

cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。

 

[root@Nagios ~]# alias

alias cp='cp -i'

二            命令格式

cp [选项]... [-T] 源 目的

或:cp [选项]... 源... 目录

或:cp [选项]... -t 目录 源...

三            常用参数

-a, --archive                
等于-dR--preserve=all

 
         --backup[=CONTROL        
为每个已存在的目标文件创建备份

 
-i,--interactive             覆盖前询问(使前面的
-n 选项失效)

 
-l,--link                    链接文件而不复制

 
-L,--dereference             总是跟随符号链接

 
-n,--no-clobber              不要覆盖已存在的文件(使前面的
-i 选项失效)

 
-R,-r, --recursive           递归复制目录及其子目录内的所有内容

 

四            不常用参数

-a, --archive                
等于-dR --preserve=all

     --backup[=CONTROL        
为每个已存在的目标文件创建备份

 -b                           
类似--backup
但不接受参数

     --copy-contents          
在递归处理是复制特殊文件内容

 -d                           
等于--no-dereference--preserve=links

 
-f,--force                   如果目标文件无法打开则将其移除并重试(当
-n 选项

                                       
存在时则不需再选此项)

 
-i,--interactive             覆盖前询问(使前面的
-n 选项失效)

 -H                           
跟随源文件中的命令行符号链接

 
-l,--link                    链接文件而不复制

 
-L,--dereference             总是跟随符号链接

 
-n,--no-clobber              不要覆盖已存在的文件(使前面的
-i 选项失效)

 
-P,--no-dereference          不跟随源文件中的符号链接

 -p                           
等于--preserve=模式,所有权,时间戳

     --preserve[=属性列表     
保持指定的属性(默认:模式,所有权,时间戳),如果

                                       
可能保持附加属性:环境、链接、xattr


 -c                          
sameas --preserve=context

     --sno-preserve=属性列表  
不保留指定的文件属性

     --parents                
复制前在目标目录创建来源文件路径中的所有目录

 
-R,-r, --recursive           递归复制目录及其子目录内的所有内容

     --reflink[=WHEN]         
控制克隆/CoW
副本。请查看下面的内如。

     --remove-destination     
尝试打开目标文件前先删除已存在的目的地

                          
             文件 (相对于 --force
选项)

     --sparse=WHEN            
控制创建稀疏文件的方式

     --strip-trailing-slashes 
删除参数中所有源文件/目录末端的斜杠

 
-s,--symbolic-link           只创建符号链接而不复制文件

 
-S,--suffix=后缀            
自行指定备份文件的后缀

 -t, 
--target-directory=目录 
将所有参数指定的源文件/目录

                                          
复制至目标目录

 
-T,--no-target-directory     将目标目录视作普通文件

 
-u,--update                 copy only whenthe SOURCE file is newer

                                
than thedestination file or when the

             
                   destination file is missing

 
-v,--verbose                explain what isbeing done

 
-x,--one-file-system        stay on thisfile system

 
-Z,--context=CONTEXT        set securitycontext of copy to CONTEXT

     --help           
显示此帮助信息并退出

     --version        
显示版本信息并退出

五            示例

5.1     
复制单个文件到目录,文件目标不存在

[bzfys@Nagiost1]$ tree

.

├── t2

├── t3

│??
└── t2

└── t4
[bzfys@Nagios t1]$ cp t4 ./t3/

[bzfys@Nagiost1]$ tree

.

├── t2

├── t3

│??
├── t2

│??
└── t4

└── t4

5.1     
复制单个文件到目录,文件目标存在,加-a与不加-a区别

[root@Nagiost1]# ll

总用量 8

drwxrwxr-x 2 bzfys bzfys 4096 6月 
18 09:16 t2

drwxrwxr-x 3 bzfys bzfys 4096 6月 
18 09:18 t3

-rw-rw-r-- 1 bzfys bzfys   
0 6月 
18 09:17 t4

[root@Nagiost1]# cp t4 t3/

cp:是否覆盖"t3/t4"?
y

[root@Nagiost1]# ll t3/

总用量 4

drwxrwxr-x 2 bzfys bzfys 4096 6月 
18 09:16 t2

-rw-rw-r-- 1 bzfys bzfys   
0 6月 
18 09:22 t4

[root@Nagiost1]# cp -p t4 t3/

cp:是否覆盖"t3/t4"?
y

[root@Nagiost1]# ll t3/

总用量 4

drwxrwxr-x 2 bzfys bzfys 4096 6月 
18 09:16 t2

-rw-rw-r-- 1 bzfys bzfys   
0 6月 
18 09:17 t4

不难看出,如果有-p参数拷贝的文件时间戳等属性也不会变

5.2  复制目录

[root@Nagiost1]# cp t3 t5

cp:
略过目录"t3"

[root@Nagiost1]# cp -a t3 t5

[root@Nagiost1]# tree

.

├── t2

├── t3

│??
├── t2

│??
└── t4

├── t4

└── t5

   
├── t2

   
└── t4

 

5 directories, 3 files

可以看出如果要复制目录需要-a或者-r参数(-r参数后面演示)

5.3     
复制一个目录到另一个目录

[root@Nagiost1]# cp t3 t6/

cp:
略过目录"t3

[root@Nagiost1]# cp -r t3 t6

[root@Nagiost1]# tree

.

├── t2

├── t3

│??
├── t2

│??
└── t4

├── t4

├── t5

│??
├── t2

│??
└── t4

└── t6

   
└── t3

       ├── t2

       └── t4

 

8 directories, 4 files

[root@Nagiost1]# cp -r t3/ t6/

cp:是否覆盖"t6/t3/t4"?
y

[root@Nagiost1]# tree

.

├── t2

├── t3

│??
├── t2

│??
└── t4

├── t4

├── t5

│??
├── t2

│??
└── t4

└── t6

   
└── t3

       ├── t2

       └── t

我们可以看出,加不加/最后的结果是一样的

 

六            参考资料

http://vbird.dic.ksu.edu.tw/

http://gnu.org/licenses/gpl.html

man手册


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: