cp 复制文件或目录

命令解释

复制(cp)这个命令特别重要,我们会经常进行一些数据的复制,但是这个命令也可以创建连接文件(也就是我们所熟悉的快捷方式)。如果你不是管理员(root)用户,就会牵扯到权限这个部分的困扰,接下来我们进行举例一一说明。

命令说明
[root@localhost ~]# cp [-adfilprsu] 源文件(source) 目标文件(destination)
[root@localhost ~]# cp [options] source1 source2 source3 ... destination
参数:
-a : 相当于 -pdr 的意思,我们下面会说明用法。[【常用】]
-d : 若源文件为连接文件的属性,怎么复制连接文件属性而非文件本身。
-f : 为强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试一次。
-i : 如目标文件(destination)已经存在时,在覆盖时会先询问。[【常用】]
-l : 进行硬连接的连接文件创建,而非复制文件本身。
-p : 连同文件的属性一起复制过去,而非使用默认属性。【备份常用】
-r : 递归持续复制,用于目录的复制行为。[【常用】]
-s : 复制成为符号链接文件,即“快捷方式”文件。[【常用】]
-u : 若 destination 比 source 旧才更新 destination。
最后要注意,如果源文件有两个以上,则最后一个的目标文件一定要是“目录”才行!
命令举例
例题一、将123.log文件复制到/test下,并更名为456.log
[root@localhost ceshi]# ll
-rw-r--r-- 1 root root    0 08-02 21:00 123.log
drwxr-xr-x 2 root root 4096 08-02 21:01 test
[root@localhost ceshi]# cp 123.log test/456.log
[root@localhost ceshi]# cp -i 123.log test/456.log
cp:是否覆盖“test/456.log”? n <= 不覆盖,取消操作。 y <= 覆盖。
# 由于test文件夹中已经存在456.log了,加上 -i 参数后,则在覆盖前会询问用户是否确定,就可以按下 n 或 y 来二次确认了!
例题二、查看/tmp目录下,会看到haha.log,将它复制到/home/ceshi下并且查看属性
root@localhost ceshi]# ll /tmp
-rw-rw-r-- 1 wenjie wenjie    0 08-02 21:09 haha.log
[root@localhost ceshi]# cp /tmp/haha.log . <= 想要复制到当前目录,最后的“.”不能忘
[root@localhost ceshi]# ll /tmp/haha.log haha.log
-rw-r--r-- 1 root   root   0 08-02 21:11 haha.log
-rw-rw-r-- 1 wenjie wenjie 0 08-02 21:09 /tmp/haha.log
# 在不加任何参数的情况下,文件的某些属性/权限会改变,连创建时间也不一样了。

[root@localhost ceshi]# cp -a /tmp/haha.log haha2.log
[root@localhost ceshi]# ll /tmp/haha.log haha2.log
-rw-rw-r-- 1 wenjie wenjie 0 08-02 21:09 haha2.log
-rw-rw-r-- 1 wenjie wenjie 0 08-02 21:09 /tmp/haha.log
# 两个文件属性一模一样,这就是 -a 的特性。
例题三、复制/tmp目录到/home/ceshi目录下面去
[root@localhost ceshi]# cp /tmp .
cp: 略过目录 “/tmp” <= 不能直接复制目录,需要加上 -r 的参数。
[root@localhost ceshi]# cp -r /tmp .
# -r 虽然是用来复制目录的,但是复制过来,文件与目录的权限可能会被改变
# 所以,也可以利用“cp - a /tmp .”来执行命令。
例题四、将例题一复制的 456.log 创建一个连接文件
[root@localhost ceshi]# cp -l test/456.log aaa.log
[root@localhost ceshi]# cp -s test/456.log bbb.log
[root@localhost ceshi]# ll
-rw-r--r-- 2 root root   47 08-02 23:05 aaa.log
lrwxrwxrwx 1 root root   12 08-02 23:08 bbb.log -> test/456.log
drwxr-xr-x 2 root root 4096 08-02 23:05 test

使用-l创建的aaa.log就是一个硬连接文件,而使用-s创建的bbb.log就是一个软连接文件,也就是说,bbb.log就是相当于咱们熟悉的“快捷方式”。

例题五、将例题四生成的bbb.log连接文件复制
[root@localhost ceshi]# cp bbb.log ccc.log
[root@localhost ceshi]# cp -d bbb.log ddd.log
[root@localhost ceshi]# ll bbb.log ccc.log ddd.log test/456.log 
lrwxrwxrwx 1 root root 12 08-02 23:08 bbb.log -> test/456.log
-rw-r--r-- 1 root root 75 08-02 23:15 ccc.log
lrwxrwxrwx 1 root root 12 08-02 23:16 ddd.log -> test/456.log
-rw-r--r-- 2 root root 75 08-02 23:09 test/456.log
# 能看出来,ccc.log与源文件一模一样,这里很有意思,咱们复制的是连接文件,结果却将原文件复制过来了
# 也就是说,如果没有加任何参数时,cp复制的是源文件,而非连接文件本身。
# 若要复制连接文件的属性,就得使用 -d 的参数了!
例题六、将1、2、3文件复制到test文件夹下
[root@localhost ceshi]# ll
-rw-r--r-- 1 root root    0 08-02 23:23 1
-rw-r--r-- 1 root root    0 08-02 23:23 2
-rw-r--r-- 1 root root    0 08-02 23:23 3
drwxr-xr-x 2 root root 4096 08-02 23:23 test
[root@localhost ceshi]# cp 1 2 3 test
[root@localhost ceshi]# ll test
-rw-r--r-- 1 root root 0 08-02 23:25 1
-rw-r--r-- 1 root root 0 08-02 23:25 2
-rw-r--r-- 1 root root 0 08-02 23:25 3
# 可以将多个文件复制到同一个目录中,但是最后一定要是目录
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值