1. 前言
本文主要是讲解在Linux系统里如何复制文件或文件夹,主要用到命令cp
。
2. Linux基础知识
使用pwd
命令查看当前所在路径
[root@zcwyou ~]# pwd
/root
表示当前所在目录为/root
使用cd
命令切换到其他目录,比如切换到/var/log
[root@zcwyou ~]# cd /var/log/
[root@zcwyou log]# pwd
/var/log
表示当前已经进入了/var/log目录了。
使用命令ll
查看当前目录所有文件
[root@zcwyou ~]# ll
total 30876
-rw-r–r– 1 root root 453884 Mar 6 23:38 20190306_233854_mysqlbackup.sql.xz
-rw-r–r– 1 root root 10249740 Mar 6 23:40 20190306_234028_wp_linux.tar.xz
-rw-r–r– 1 root root 1348552 Dec 13 10:37 access.log-20181212
-rw-r–r– 1 root root 667412 Feb 20 17:26 access.log-20190211
3. 复制单个文件
复制当前目录的access.log-20181212文件到/var/log/
[root@zcwyou ~]# cp access.log-20181212 /var/log/
4. Linux复制指定文件夹到其它目录
注意:
Linux系统里的目录=Windows系统里的的文件夹
linux复制指定目录下的全部文件到另一个目录中
复制指定目录下的全部文件到另一个目录中
文件及目录的复制是经常要用到的。linux下进行复制的命令为cp。
假设复制源目录 为 dir1 ,目标目录为dir2。怎样才能将dir1下所有文件复制到dir2下了
如果dir2目录不存在,则可以直接使用
[root@zcwyou ~]# cp -r dir1 dir2
即可。
如果dir2目录已存在,则需要使用
[root@zcwyou ~]# cp -r dir1/. dir2
如果这时使用cp -r dir1 dir2,则也会将dir1目录复制到dir2中,明显不符合要求。
ps:dir1、dir2改成对应的目录路径即可。
[root@zcwyou ~]# cp -r /home/www/xxx/statics/. /home/www/statics
如果存在文件需要先删除
[root@zcwyou ~]# rm -rf /home/www/statics/*
否则会一个个文件提示你确认,使用cp -rf 也一样提示
linux下cp整个文件夹的文件到另一个文件夹
[root@zcwyou ~]# cp -ri A/B/* A1/B1/
若复制过程中询问是否覆盖,输入y按回车,若不想看到提示直接覆盖使用-rf
另外若A A1不在同一目录下,最好填绝对路径,就是
[root@zcwyou ~]# cp /xxx/xxx/A/B/* /xxx/A1/B1/
把/xxx/xxx/A/B/目录里的所有的文件复制到目标目录:/xxx/A1/B1/
实例:
[root@zcwyou ~]# cp -ri /home/server/tomcat/* /home/server/test/
cp: target `/home/server/test/’ is not a directory
需要先创建目标文件夹/home/server/test
[root@zcwyou ~]# mkdir /home/server/test
5. cp命令详解
copy命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大。
语法: cp [选项] 源文件或目录 目标文件或目录
说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
该命令的各选项含义如下:
– a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
– d 拷贝时保留链接。
– f 删除已经存在的目标文件而不提示。
– i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
– p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
– r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
– l 不作拷贝,只是链接文件。
需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。
6. Linux复制文件的其它方法及注意事项
一:当不需要的文件类型较为单一时,可以通过完全复制然后删除指定类型的文件完成
Step1 使用命令cp -r test/ test2
将测试目录test下所有内容完全复制到test2
Step2 组合使用find及xargs,将.tes文件删除
xargs是给命令传递参数的一个过滤器,可以将前一个命令产生的输出作为后一个命令的参数
命令find test2/ -name ‘.tes’ |xargs rm -rf, 即将find产生的输出(test2目录下的所有tes文件),作为rm的参数,从而完全删除
适用场景举例:把项目文件备份,要去除其中的.svn文件,可以采用这种方式
二:需要的文件为单一类型,带目录结构复制
这种情况下可以使用tar命令将指定类型的文件打包,然后解包,同样需要组合使用find和xargs
Step1 建立目录test3
[root@zcwyou ~]# mkdir test3
Step2 将指定类型文件带目录结构打包
[root@zcwyou ~]# find test/ -name '*.txt' |xargs tar czf test3.tgz
Step3 解包到目录test3
[root@zcwyou ~]# tar zxvf test3.tgz -C test3
适用场景:较为普遍,例如可以复制某个Web项目的所有html/jsp/php文件;或复制其他项目中特定类型的源文件
7. 总结
Linux系统里复制文件或者目录(相当于Windows的文件夹的概念)是每个系统运维工程师必须掌握的技能,也是Linux系统里最常用的命令。复制文件或者目录里,注意结合其他系统命令,比如tree
命令显示目录结构,ll
命令显示指定目录里的所有文件,,pwd
命令显示当前工作目录。
评论前必须登录!
注册