linux cp命令6,第六节:cp命令

cp-----copy files and directories

语法:

SYNOPSIS

cp [OPTION]... [-T] SOURCE DEST

cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... -t DIRECTORY SOURCE...

功能:

cp命令主要用来将一个或多个源文件或者目录复制到指定目标文件或目录,它可以将单个源文件复制到一个指定文件名的具体的文件或一个已经存在的目录下。

选项:

-a:此参数效果等同于-dpR

-b: 覆盖目标文件之前,进行备份。备份文件会在字尾添加一个备份字符串,默认为:The backup suffix is ‘~’

-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件工目录

-f:不论目标文件或目录是否存在,强行复制

-i:覆盖目标已有的文件前,先询问用户

-l:对源文件建立硬链接,而非复制文件

-p:保留源文件或目录的属性信息

-r|-R: 递归处理,将指定目录下文件及子目录一并处理

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

-u: 只在源文件比目的地更新时复制

案例:

1)当源是一个文件,目标(目的地)不存在

则:在目的地创建一个文件,将源文件里的内容填充进新建的文件中

[root@manager ~]# cp /etc/fstab /app/mima (目标文件/app/mima事先不存在)

[root@manager ~]# cat /app/mima

#

# /etc/fstab

# Created by anaconda on Mon Jul 31 17:19:47 2017

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

2)当源是一个文件,目标(目的地)存在且是一个文件时,会覆盖目标文件里的内容(针对root用户,复制目标已存在的文件,会询问,cp='cp -i')

(注意:覆盖目标已存在的文件,要十分小心,或者可以额外增加-b参数,把已经存在的目标文件复制一份)

[root@manager ~]# echo "123abc">/app/a.txt

[root@manager ~]# cat /app/a.txt

123abc

[root@manager ~]# cp /etc/issue /app/a.txt

cp: overwrite `/app/a.txt'? y

[root@manager ~]# ll /app/

total 8

-rw-r--r--. 1 root root 47 Oct 19 11:05 a.txt

-rw-r--r--. 1 root root 783 Oct 19 10:47 mima

(以上操作,目标文件里的内容会被覆盖)

[root@manager ~]# echo "test134">/app/b.txt

[root@manager ~]# cp -b /etc/issue /app/b.txt

cp: overwrite `/app/b.txt'? y

[root@manager ~]# ll /app/

total 16

-rw-r--r--. 1 root root 47 Oct 19 11:05 a.txt

-rw-r--r--. 1 root root 47 Oct 19 11:06 b.txt

-rw-r--r--. 1 root root 8 Oct 19 11:06 b.txt~

-rw-r--r--. 1 root root 783 Oct 19 10:47 mima

[root@manager ~]# cat /app/b.txt

CentOS release 6.8 (Final)

Kernel \r on an \m

[root@manager ~]# cat /app/b.txt~

test134

(以上操作,添加-b参数,会把目标文件先备份一份)

3)当源是一个文件,目标存在且是一个目录时,不可以实现复制,文件无法覆盖

[root@manager app]# mkdir test/passwd -p

[root@manager app]# cp /etc/passwd test/

cp: overwrite `test/passwd'? y

cp: cannot overwrite directory `test/passwd' with non-directory

4)当源是多个文件,目的地不存在时,复制时会报错,目的地不能不存在

[root@manager app]# cp /etc/fstab /etc/issue /etc/passwd test/

cp: overwrite `test/passwd'? y

cp: cannot overwrite directory `test/passwd' with non-directory

5)当源是多个文件,目的地存在且是一个目录时,如果目录中存在与源文件同名的文件则覆盖;如果不存在与源文件同名的文件则新建并填充源文件中的内容;如果目的地目录中存在与源文件同名的目录,则不复制该源文件

[root@manager ~]# cp /etc/fstab /etc/issue /app/

[root@manager ~]# ll /app/

total 28

-rw-r--r--. 1 root root 47 Oct 19 11:05 a.txt

-rw-r--r--. 1 root root 47 Oct 19 11:06 b.txt

-rw-r--r--. 1 root root 8 Oct 19 11:06 b.txt~

-rw-r--r--. 1 root root 783 Oct 19 11:11 fstab

-rw-r--r--. 1 root root 47 Oct 19 11:11 issue

6)当源是一个目录,目标不存在的时候,则新建一个同名的目录,然后填充新的内容(复制目录,需要额外添加-r参数)

[root@manager ~]# cp -r /tmp/ /app/

[root@manager ~]# ll /app/

total 32

-rw-r--r--. 1 root root 47 Oct 19 11:05 a.txt

-rw-r--r--. 1 root root 47 Oct 19 11:06 b.txt

-rw-r--r--. 1 root root 8 Oct 19 11:06 b.txt~

-rw-r--r--. 1 root root 783 Oct 19 11:11 fstab

-rw-r--r--. 1 root root 47 Oct 19 11:11 issue

-rw-r--r--. 1 root root 783 Oct 19 10:47 mima

drwxr-xr-x. 3 root root 4096 Oct 19 11:10 test

drwxr-xr-t. 7 root root 4096 Oct 19 11:14 tmp

7)当源是个目录,目的地存在且为目录时,在目的地新建与源目录同名的内容并将源文件中的内容复制至新目录中。

[root@manager ~]# cd /app/

[root@manager app]# mkdir oldboy

[root@manager app]# cp -r /oldboy/ oldboy/

[root@manager app]# ll oldboy/

total 4

drwxr-xr-x. 2 root root 4096 Oct 19 11:16 oldboy

8)创建链接文件

软链接:

[root@manager app]# cp -s a.txt link.txt

[root@manager app]# ll link.txt

lrwxrwxrwx. 1 root root 5 Oct 19 11:17 link.txt -> a.txt

[root@manager app]# cat link.txt

CentOS release 6.8 (Final)

Kernel \r on an \m

硬链接:

[root@manager app]# cp -l b.txt soft.txt

[root@manager app]# ll soft.txt

-rw-r--r--. 2 root root 47 Oct 19 11:06 soft.txt

9)复制文件前保存源文件的属性

[root@manager ~]# ll /etc/fstab

-rw-r--r--. 1 root root 783 Oct 11 11:30 /etc/fstab

[root@manager ~]# cp -a /etc/fstab /app/

[root@manager ~]# ll /app/fstab

-rw-r--r--. 1 root root 783 Oct 11 11:30 /app/fstab

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值