Linux从零开始学(视频教学版)
上QQ阅读APP看书,第一时间看更新

2.2.1 复制文件:cp

cp命令用来复制文件或目录。当复制多个文件时,目标文件参数必须为已经存在的目录。cp命令默认不能复制目录,复制目录必须使用-R选项。cp命令具备ln命令的功能。语法为:cp [选项] [参数],cp命令常用的参数如表2.2所示。

表2.2 cp命令常用参数及其说明

示例2-1将演示cp命令的用法,部分显示结果省略。

【示例2-1】

#以下演示cp命令的用法
[root@CentOS ~]# cd /usr/local/nginx/conf
nginx.conf
#如需显示执行过程,可以使用以下选项
#当使用cp命令复制单个文件时,第1个参数表示源文件,第2个参数表示目标文件
[root@CentOS conf]# cp -v  nginx.conf nginx.conf.20200412
`nginx.conf' -> `nginx.conf.20200412'
[root@CentOS conf]# ls -l nginx.conf nginx.conf.20200412
-rw-r--r--. 1 root root 2685 Apr 11 03:15 nginx.conf
-rw-r--r--. 1 root root 2685 Apr 12 20:33 nginx.conf.20200412
#复制多个文件
[root@CentOS conf]# cp -v nginx.conf nginx.conf.20200412  backup/
`nginx.conf' -> `backup/nginx.conf'
`nginx.conf.20200412' -> `backup/nginx.conf.20200412'
[root@CentOS conf]# ll nginx.conf nginx.conf.20200412  backup/
-rw-r--r--. 1 goss goss 2685 Apr 12 20:47 nginx.conf
-rw-r--r--. 1 root root 2685 Apr 12 20:59 nginx.conf.20200412
backup/:
total 8
-rw-r--r--. 1 root root 2685 Apr 12 21:01 nginx.conf
-rw-r--r--. 1 root root 2685 Apr 12 21:01 nginx.conf.20200412
#复制文件夹
[root@CentOS nginx]# cp conf conf.bak
cp: omitting directory `conf'
[root@CentOS nginx]# cp -r conf conf.20200412
[root@CentOS nginx]# ls –l
total 40
drwxr-xr-x. 2 root   root 4096 Apr 12 20:33 conf
drwxr-xr-x. 2 root   root 4096 Apr 12 20:33 conf.20200412
[root@CentOS goss]# su – goss
#复制时保留文件的原始属性
[goss@CentOS ~]$ cp  -a  /usr/local/nginx/ .
cp: cannot access '/usr/local/nginx/uwsgi_temp': Permission denied
cp: cannot access '/usr/local/nginx/fastcgi_temp': Permission denied
cp: cannot access '/usr/local/nginx/scgi_temp': Permission denied
cp: cannot access '/usr/local/nginx/client_body_temp': Permission denied
cp: cannot access '/usr/local/nginx/proxy_temp': Permission denied
[goss@CentOS ~]$ ls –l
drwxr-xr-x. 12 goss goss    4096 Apr 12 20:33 nginx
[goss@CentOS ~]$ ll
total 2784
drwxr-xr-x. 12 goss goss    4096 Apr 12 20:33 nginx
[root@CentOS goss]# cp -a nginx/ nginx.bak
[root@CentOS goss]# ls -l
total 2788
drwxr-xr-x. 12 goss goss    4096 Apr 12 20:33 nginx
drwxr-xr-x. 12 goss goss    4096 Apr 12 20:33 nginx.bak
[root@CentOS goss]# cp -r nginx nginx.root
[root@CentOS goss]# ls -l
total 2792
drwxr-xr-x. 12 goss goss    4096 Apr 12 20:33 nginx
drwxr-xr-x. 12 goss goss    4096 Apr 12 20:33 nginx.bak
drwxr-xr-x. 12 root root    4096 Apr 12 20:35 nginx.root
[root@CentOS conf]# cp -i /usr/local/nginx/conf/nginx.conf .
cp: overwrite './nginx.conf'? n
[root@CentOS conf]# cp -f  /usr/local/nginx/conf/nginx.conf .
[root@CentOS conf]#
#并不复制文件本身,而是创建当前文件的软链接
[root@CentOS conf]# cp -s nginx.conf nginx.conf_s
[root@CentOS conf]# ls -l
lrwxrwxrwx. 1 root root   10 Apr 12 20:49 nginx.conf_s -> nginx.conf
[root@CentOS conf]# md5sum nginx.conf /usr/local/nginx/conf/ng
nginx.conf          nginx.conf.bak      nginx.conf.default  nginx.conf.mv
[root@CentOS conf]# md5sum nginx.conf /usr/local/nginx/conf/nginx.conf
1181c1834012245d785120e3505ed169  nginx.conf
30d53ba50698ba789d093eec830d0253  /usr/local/nginx/conf/nginx.conf
[root@CentOS conf]# cp -b /usr/local/nginx/conf/nginx.conf .
cp: overwrite './nginx.conf'? y
[root@CentOS conf]# md5sum nginx.conf*
30d53ba50698ba789d093eec830d0253  nginx.conf
1181c1834012245d785120e3505ed169  nginx.conf~

cp命令可以复制一个或多个文件,当复制多个文件时,最后一个参数必须为已经存在的目录,否则会提示错误。如果忽略提示信息,则可以使用“-f”选项。

说明:为防止用户在不经意的情况下使用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令复制文件后,这个文件就会被覆盖,“i”选项可以在覆盖之前询问用户。