极客进化岛
技术自由路

【linux】循序渐进学运维-cp

cp

功能:复制文件(夹)或目录

常用选项:

-a 归档
-b 目标文件存在创建备份,备份文件是文件名跟~
-f 强制复制文件或目录
-r 递归复制目录
-p 保留原有文件或目录属性
-i 覆盖文件之前先询问用户
-u 当源文件比目的文件修改时间新时才复制
-v 显示复制信息
-s 创建软连接
-u 创建硬链接

示例:

1. 复制一个源文件到目标文件夹

这个是使用频率最多的命令,负责将一个源文件复制到目标文件夹下

[root@zmkjedu71 ~]# cp /etc/passwd ./
[root@zmkjedu71 ~]# ls
anaconda-ks.cfg  install.log.syslog  公共的  视频  文档  音乐
install.log      passwd              模板    图片  下载  桌面
2. 同时复制多个文件到目标文件下

命令格式为:cp 源文件1 源文件2 目标文件夹 或 cp 文件* 目标文件夹

[root@zmkjedu71 ~]# mkdir zmkjedu71 
[root@zmkjedu71 ~]# touch book.sql
[root@zmkjedu71 ~]# touch a.txt
[root@zmkjedu71 ~]# touch b.txt
[root@zmkjedu71 ~]# cp book.sql a.txt b.txt zmkjedu71
[root@zmkjedu71 ~]# cd zmkjedu71/
[root@zmkjedu71 zmkjedu71]# ls
a.txt  book.sql  b.txt
3.利用通配符复制多个文件
[root@zmkjedu71 zmkjedu71]# ls
a.txt  book.sql  b.txt
[root@zmkjedu71 zmkjedu71]# mkdir test
[root@zmkjedu71 zmkjedu71]# cp *.txt test/
[root@zmkjedu71 zmkjedu71]# cd test/
[root@zmkjedu71 test]# ls
a.txt  b.txt
[root@zmkjedu71 test]#
4. 修改文件名

在备份文件的时候最为有用

[root@zmkjedu71 zmkjedu71]# touch passwd
[root@zmkjedu71 zmkjedu71]# ls
passwd
[root@zmkjedu71 zmkjedu71]# cp passwd passwd.bak
[root@zmkjedu71 zmkjedu71]# ls
passwd  passwd.bak
[root@zmkjedu71 zmkjedu71]# 
5. 递归复制

-r 表示递归

[root@zmkjedu71 ~]# cp -r ./* zmkjedu71/
cp: 无法将目录"./zmkjedu71" 复制到自己"zmkjedu71/zmkjedu71"

你将上级目录复制到子目录,是行不通的

[root@zmkjedu71 ~]# ls
anaconda-ks.cfg  book.sql  install.log         passwd     公共的  视频  文档  音乐
a.txt            b.txt     install.log.syslog  zmkjedu71  模板    图片  下载  桌面
[root@zmkjedu71 ~]# cd zmkjedu71/
[root@zmkjedu71 zmkjedu71]# ls
anaconda-ks.cfg  book.sql  install.log         passwd     公共的  视频  文档  音乐
a.txt            b.txt     install.log.syslog  zmkjedu71  模板    图片  下载  桌面
6. 创建文件的软连接

命令格式: cp -s 源文件和目标文件
相当于创建快捷方式


[root@zmkjedu71 ~]# mkdir test
[root@zmkjedu71 ~]# cd test/
[root@zmkjedu71 test]# cp -s /etc/passwd a.txt
[root@zmkjedu71 test]# ls
a.txt
[root@zmkjedu71 test]# md5sum a.txt /etc/passwd
132ce30504d9c7cd331fb80dba09367f  a.txt
132ce30504d9c7cd331fb80dba09367f  /etc/passwd
[root@zmkjedu71 test]# ll 
总用量 0
lrwxrwxrwx. 1 root root 11 5月  24 06:36 a.txt -> /etc/passwd
[root@zmkjedu71 test]# 
7. -a 参数可以让被复制的两个文件时间一样
[root@zmkjedu71 test]# ls
b.txt
[root@zmkjedu71 test]# ll
总用量 4
-rw-r--r--. 1 root root 2335 5月  24 06:38 b.txt
[root@zmkjedu71 test]# cp b.txt b1.txt
[root@zmkjedu71 test]# cp -a b.txt b2.txt
[root@zmkjedu71 test]# ll
总用量 12
-rw-r--r--. 1 root root 2335 5月  24 06:41 b1.txt
-rw-r--r--. 1 root root 2335 5月  24 06:38 b2.txt
-rw-r--r--. 1 root root 2335 5月  24 06:38 b.txt
8. -t 复制多个文件到某个目录

这种方式 -t后面直接跟目录

[root@zmkjedu71 test]# mkdir beifen

[root@zmkjedu71 test]# ls
b1.txt  b2.txt  beifen  b.txt
[root@zmkjedu71 test]# cp -t beifen b1.txt b2.txt
[root@zmkjedu71 test]# cd beifen/
[root@zmkjedu71 beifen]# ls
b1.txt  b2.txt
[root@zmkjedu71 beifen]# 

总结:
cp命令和MV在用法上是有一定区别的,尤其是在通配符的使用上。

赞(0)
未经允许不得转载:极客进化岛 » 【linux】循序渐进学运维-cp