【坑】linux目录软连接的相关操作--很容易误操作

2023-11-23 01:20

本文主要是介绍【坑】linux目录软连接的相关操作--很容易误操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写一下文档,记录自己工作中的重大事故,警醒自己以后别犯错。

 

1)目录不能进行硬连接,只能进行软连接,也就是 ln命令必须加上 -s 参数,如下:

[root@ALIYUN:~]#ln /srv/bak-lj/ /opt/lj
ln: `/srv/bak-lj/': hard link not allowed for directory  【错误】
[root@ALIYUN:~]#
[root@ALIYUN:~]#ln -s /srv/bak-lj/ /opt/lj
[root@ALIYUN:~]#

 

 

2)目录软连接可以重命名移动,【大坑】但是要千万不能带有后面的"/",否则mv命令执行失败。如下:

root@debian8:/opt# mv 1srv/ 1srv--  【重命名失败,因为带有后面的"/"后就不是软连接本身的文件名了】
mv: cannot move ‘1srv/’ to ‘1srv--’: Not a directory
root@debian8:/opt#
root@debian8:/opt# mv 1srv/ /tmp/
mv: cannot move ‘1srv/’ to ‘/tmp/1srv’: Not a directory
root@debian8:/opt#

如下测试,不加后面的 "/" ,下面的命令就是正常的,而且软连接的效果依旧可以保留:

root@debian8:/opt# ll
total 8
lrwxrwxrwx 1 root root 5 Jun 13 08:48 1srv -> /srv/
drwxr-xr-x 8 root root 4096 May 31 08:05 bitnami
drwxr-xr-x 10 root root 4096 Jun 4 02:05 gitlab
root@debian8:/opt#
root@debian8:/opt# mv 1srv 1srv--
root@debian8:/opt# ll
total 8
lrwxrwxrwx 1 root root 5 Jun 13 08:48 1srv-- -> /srv/
drwxr-xr-x 8 root root 4096 May 31 08:05 bitnami
drwxr-xr-x 10 root root 4096 Jun 4 02:05 gitlab
root@debian8:/opt#
root@debian8:/opt# mv 1srv-- /tmp/1srv
root@debian8:/opt#

 

3)删除软连接的操作,虽然可以用rm,但是我要提醒你:一定要unlink, 而不是用rm,否则有可能你会因此而丢掉工作。如下使用rm删除软连接的两种情况:
3.1)运气好的情况,rm删除软连接后,实际连接的目录文件还存在,如下:

root@debian8:/opt# ll -d /opt/1srv
lrwxrwxrwx 1 root root 5 Jun 13 08:48 /opt/1srv -> /srv/
root@debian8:/opt# ls /srv/
a b
root@debian8:/opt# rm -rf /opt/1srv
root@debian8:/opt# ls /srv/
a b
root@debian8:/opt#

3.2)运气差的情况,rm删除软连接后,实际连接的目录文件也被删除了,如下:

root@debian8:/opt# ln -s /srv/ 1srv
root@debian8:/opt# ls /srv/
a b
root@debian8:/opt# ll -d 1srv
lrwxrwxrwx 1 root root 5 Jun 13 09:00 1srv -> /srv/
root@debian8:/opt# rm  -rf  1srv/  【坑啊,大多数人喜欢用tab键补全,此处一不小心就会带上"/", 那么悲剧就开始了】
root@debian8:/opt#
root@debian8:/opt# ls /srv/  【数据没了,你会哭晕在厕所】
root@debian8:/opt#

 

3)强烈建议软连接的删除操作,必须使用 最保险的unlink命令 , 而不是用 mv 移动或者重命名,更加不要用 rm 命令处理。

虽然centos和debian下面 mv 带有"/" 的软连接,会提示错误,如下:
centos6下面

[root@ALIYUN:/opt]#ll -d lj
lrwxrwxrwx 1 root root 12 Jun 13 16:12 lj -> /srv/bak-lj/
[root@ALIYUN:/opt]#
[root@ALIYUN:/opt]#mv lj/ /tmp/
mv: cannot move `lj/' to `/tmp/lj': Not a directory
[root@ALIYUN:/opt]#

debian8下面

root@debian8:/opt# ll -d 1srv
lrwxrwxrwx 1 root root 5 Jun 13 08:15 1srv -> /srv/
root@debian8:/opt#
root@debian8:/opt# mv 1srv/ /tmp/
mv: cannot move ‘1srv/’ to ‘/tmp/1srv’: Not a directory
root@debian8:/opt#

但是我确实是碰到过特殊服务器的特殊情况,mv 带有"/" 的软连接,不但没有提示出错,而且把里面的文件移动了,造成了重大事故。挨叼是必须的,而且差点丢掉工作。如下图:

 

转载于:https://www.cnblogs.com/voiphudong/p/7002378.html

这篇关于【坑】linux目录软连接的相关操作--很容易误操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/414300

相关文章

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

关于Maven生命周期相关命令演示

《关于Maven生命周期相关命令演示》Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以... 目录1. Maven 生命周期概述1.1 Clean Lifecycle1.2 Default Li

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

java Stream操作转换方法

《javaStream操作转换方法》文章总结了Java8中流(Stream)API的多种常用方法,包括创建流、过滤、遍历、分组、排序、去重、查找、匹配、转换、归约、打印日志、最大最小值、统计、连接、... 目录流创建1、list 转 map2、filter()过滤3、foreach遍历4、groupingB