在学习cp命令时我们会知道复制软链接时,如果要保留链接文件使用-d,但当我们实际操作时却常常出现如下

情况

[root@localhost ~]# ls -l /etc/redhat-release     #此文件为链接文件 lrwxrwxrwx. 1 root root 14 Oct 17 08:48 /etc/redhat-release -> centos-release

[root@localhost ~]# cp -d /etc/redhat-release /root/redhat.s   #使用-d 保存链接文件属性

[root@localhost ~]# ls -l /root/redhat.s            #查看可知centos-release是闪烁的,也就是不存在

lrwxrwxrwx 1 root root 14 Oct 22 09:06 /root/redhat.s -> centos-release

[root@localhost ~]# cat /root/redhat.s    #看不了/root/redhat.s链接文件 cat: /root/redhat.s: No such file or directory

为什么我们使用cp -d 复制链接文件会失败?那就要看cp -d 是如何复制软链接的。在上例中,我们打算将

/etc/redhat-release软链接复制到/root/redhat.s。在使用cp -d实际上是将原软链接中指针区代表原文件

路径的字符串拷贝到新创建的/root/redhat.s中下面命令可以看出其文件大小都为14,即centos-release

字符串大小

[root@localhost ~]# ls -l /etc/redhat-release /root/redhat.s

lrwxrwxrwx. 1 root root 14 Oct 17 08:48 /etc/redhat-release -> centos-release lrwxrwxrwx

1 root root 14 Oct 22 09:06 /root/redhat.s -> centos-release

当我们查看新建软链接/root/redhat.s时看到原文件路径是centos-release,就会到当前路径(/root/)

上查看centos-release文件,而实际上原文件在/etc/目录下,所以查看/root/redhat.s才会出现

/root/redhat.s: No such file or directory的错误。

根据这个原理我们可以推断,如果原链接文件存的是原文件的绝对路径的话,新建的链接文件就能找到原文件而不是报错,接下来我们实验一下。

#1. 先创建一个软链接/etc/redhat-release2,可知数据区存的是原文件的绝对路径/etc/centos-release

[root@localhost ~]# ln -s /etc/centos-release /etc/redhat-release2

[root@localhost ~]# ls -l /etc/redhat-release2 lrwxrwxrwx 1 root root 19 Oct 22 09:37 /etc/redhat-release2 -> /etc/centos-release

#2. 复制刚创建的软链接/etc/redhat-release2到/root/radhat2.s

[root@localhost ~]# cp -d /etc/redhat-release2 /root/radhat2.s

[root@localhost ~]# ls -l /root/radhat2.s lrwxrwxrwx 1 root root 19 Oct 22 09:41 /root/radhat2.s -> /etc/centos-release

#3. 查看新软链接内容

[root@localhost ~]# cat /root/radhat2.s CentOS release 6.7 (Final)

cp -d 复制软链接时总结

1. 当原链接文件中存的是原文件的绝对路径:创建的新链接文件可在任何路径下。

2. 当原链接文件中存的是原文件的相对路径:

例1:

新链接文件在/root/link2

相对路径是 centos (来自原链接文件的指针数据区)

那么/root/centos就是原文件路径

例2:

新链接文件为/root/test/link2

相对路径为../centos

那么/root/centos为原文件路径

原文件路径找得到就ok,找不到就报错。

原创文章,作者:lirou,如若转载,请注明出处:http://www.178linux.com/53450

linux 复制 软链接文件,cp复制软链接失效的原因相关推荐

  1. Linux CentOS  复制文件、替换文件 cp 复制文件、cp 覆盖文件 cp替换文件

    Linux CentOS  复制文件.替换文件 cp 复制文件.cp 覆盖文件 cp替换文件 一.Linux 复制文件语法 1. cp [option] src dest 2. option 可选参数 ...

  2. linux拷贝5g文件,电脑使用U盘复制5G文件提示“复制文件过大无法复制”如何解决...

    ‍‍ 新购买的U盘容量为8G,内存空间足够大了,复制文件都可以使用到.但是在电脑中使用U盘复制5G文件提示"复制文件过大无法复制"怎么回事呢?难道是U盘坏了吗?其实不是的,针对此故 ...

  3. CopyFile复制单个文件和复制指定路径下所有文件

    CopyFile复制单个文件和复制指定路径下所有文件 1.CopyFile复制单个文件 2.CopyFile复制指定路径下所有文件 1.CopyFile复制单个文件 原型: BOOL CopyFile ...

  4. 【10】linux命令每日分享——cp复制文件和目录

    大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的 类UNIX操作系统,Linux的基本思想有两点:一切都是文件:每个文件都有确定的用途:linux涉及到IT行业的方方面面,在 ...

  5. linux 常用命令系列—cp 复制文件与文件夹

    指令名称:cp(copy) 功能介绍:将一个文件复制至另一个文件,或将数个文件复制至另一目录. 语法格式: cp [options] source dest cp [options] source.. ...

  6. linux里的文件怎么复制到移动硬盘,linux数据拷贝复制到移动硬盘的问题

    问题:我服务器中有些数据需要find出来拷贝到移动硬盘中,并保持原目录结构, find ./ -name '*' -exec cp -v --parents {} /mnt \; 我是这样写的,./下 ...

  7. Linux /中创建目录文件,复制,移动,该改名

    1.创建目录文件指令 目录 1.创建目录文件指令 2.创建软链接. 3.复制文件 mkdir (文件名) 如果创建多个子目录输入 mkdir -fv /文件名/文件名/../../.. 2.创建软链接 ...

  8. java复制少文件_Java 复制文件的高效方法

    转载自:http://jingyan.baidu.com/article/ff4116259c2d7712e4823780.html 在Java编程中,复制文件的方法有很多,而且经常要用到.我以前一直 ...

  9. python第六篇:Python复制超大文件、复制二进制文件

    Python文件复制 # 写程序实现复制文件的功能 # 要求: # 1. 源文件路径和目标文件路径需要手动输入 # 2. 要考虑文件关闭的问题 # 3. 要考虑复制超大文件的问题 # 4. 要能复制二 ...

最新文章

  1. 关于MySql数据库设计表与查询耗时分析
  2. 年轻人对于“绰号”的认识
  3. YOLOv3 《YOLOv3: An Incremental Improvement》论文笔记
  4. boost::insert相关的测试程序
  5. 手工计算YARN和MapReduce、tez内存配置设置
  6. 深度学习在搜索和推荐领域的应用
  7. APPium-Xpath,swipe练习
  8. Big Sur恢复Catalina ? macOS Big Sur降级的三种方法 !
  9. 易优Eyoucms企业建站系统 1.4.2
  10. 数据科学 IPython 笔记本 9.11 结构化数据:NumPy 的结构化数组
  11. 华为为何还没鸿蒙,华为鸿蒙2.0正式发布,但无第三方公开支持,华为的路该怎么走?...
  12. matlab 图片数字化,基于MATLAB的尾流图像数字化处理
  13. 利用随机矩阵理论(random matrix theory)确定微生物网络构建阈值
  14. Caffe框架-入门浅谈及碰到的坑
  15. 二级Office知识点整合
  16. 1、高动态范围成像介绍
  17. 计算机的硬件地址在哪看,电脑的MAC地址在哪里查看
  18. HBuilderX快速上手
  19. 云南富宁港的建设之路
  20. Temu拼多多跨境店铺如何快速上货?

热门文章

  1. linux WOL 唤醒信号监听,解析
  2. 关于异步Promises
  3. oracle唯一约束null,Oracle外键约束中NULL的处理
  4. edid 工具获取hdmi_HDMI EDID解读
  5. OAuth2授权客户端访问资源服务
  6. 【springmvc】Rest ful风格
  7. iphone开发之Google地图实现…
  8. 如何自动翻译 WordPress 网站(快速且成本最低)
  9. rust: 构建 release 版本的程序
  10. 萌新的第二周技术总结