连接文件ln的使用方法

 

连接文件有点类似Windows的“快捷方式”。即,很多的连接文件(link file)其实都指向同一个源文件(source file)。
连接文件分为:硬连接   和   符号连接   两种。(这两种连接文件的结构完全不一样

[1] 硬连接(实际连接)

什么是硬连接?
硬连接只是在某个目录下新增一个该文件的关联数据而已。
例如:
假设我的/root/crontab是一个硬连接的文件,它连接到/etc/crontab文件,即/root/crontab与/etc/crontab是同一个文件,只是有两个目录(/etc和/root)记录了crontab文件的关联数据。更直白点儿地说,由/etc目录所记录的关联数据可知,crontab的inode放在A处,而/root目录下的关联数据,crontab同样也指到A处的inode,所以,crontab文件的inode与块都没有改变,只是有两个目录记录了关联数据。

使用硬连接的好处?
最大的好处就是“安全”。如同上述的/root/crontab与/etc/crontab两个文件,不管删除哪一个文件,其实仅删除目录下面的文件关联数据,并没有更改源文件的inode与块数据。而且,不论由哪个目录连接到正确的crontab的inode与块,都可以正确无误地进行数据的修改。
一般来说,使用硬连接设置连接文件时,磁盘空间与inode的数目都不会改变。
(注意:也肯能会改变。那就是当目录的块被用完时,就可能会新加一个块来记录,而导致磁盘空间的变化。不过,一般硬连接所用掉的关联数据量很小,所以通常不会改变inode与磁盘空间的大小。)

硬连接的限制
由于硬连接是在同一个分区上建立数据关联,所以硬连接是有限制的:
一是:不能跨文件系统
二是:不能连接目录

总结
由此可知,硬连接只是在某个目录下的块多写入一个关联数据,所以并不会用掉inode与磁盘空间。



[2] 符号连接(即快捷方式)

符号连接是什么?

符号连接就是在建立一个独立的文件,这个文件会让数据的读取指向它连接的文件内容。
所以,当源文件被删除之后,符号连接的文件不能打开,会一直显示“无法打开某文件”。(注意:符号连接相当于Windows下的快捷方式)
由于符号连接所建立的文件为一个独立的新文件,所以会占用掉inode与块。

总结
由于硬连接的限制太多,包括无法做“目录”的连接,所以用的比较少。而符号连接使用的较多,符号连接可以连接目录。

[3] 动手一试

创建连接文件使用ln命令。ln   [ -sf ]   源文件   目标文件
参数:
-s:如果ln不加任何参数就进行连接,那么就是硬连接,-s就是符号连接
-f:如果目标文件存在时,就主动将目标文件直接删除后再建立。

试一:将/etc/passwd复制到/tmp中,并且观察inode块
cd /tmp
cp -a /etc/passwd .
du -sb ; df -i .
# 得到/tmp下面有多少字节的容量

试二:将/tmp/passwd创建硬连接成为passwd-hd文件
ln passwd passwd-hd
du -sb ; df -i .
# 对比上面发现没有变化,即使在/tmp中多了一个文件,整个inode与块的容量并没有改变。
ls -il passwd*
# 可以显示,原来是指向同一个inode。另外,第二栏的连接数也会增加。

试三:将/tmp/passwd建立一个符号连接。
ln -s passwd passwd-so
ls -il passwd*
# 可以发现,这个passwd-so指向的inode号不同了。这是一个新的文件。
du -sb ; df -i .
# 显示inode使用数发生变化,即+1。

试四:删除源文件passwd,其他两个文件是否能打开?
rm passwd
cat passwd-hd
# 可以正常显示
cat passwd-so
# 提示没有这个文件或文件夹,无法打开显示

<think>好的,我现在需要帮用户解答关于Ubuntu中使用ln命令创建软链接的问题。首先,用户提到的“LN”可能是指软链接(symbolic link),也就是ln命令的-s选项。我需要先回忆一下ln命令的基本用法,特别是创建软链接的部分。 根据用户提供的引用,特别是引用[1]里提到使用ln -s来创建软链接,命令格式是ln -s 源路径 链接路径。这可能是一个起点。接下来,我需要考虑常见的用法示例,比如如何创建链接到目录或文件,以及可能出现的问题。 用户可能遇到的问题包括权限问题、路径错误或者链接失效的情况。例如,如果用户尝试创建链接到不存在的源路径,会得到错误提示。这时候需要提醒用户检查源路径是否正确。此外,引用[2]中提到权限问题,比如chmod 600修改密钥权限,但这里可能不直接相关,但权限问题在创建链接时也可能出现,比如没有写权限的目标目录。 另外,用户可能需要知道如何查看软链接,使用ls -l命令显示详细信息,这时候链接会显示箭头指向源文件。还有,如何删除软链接,应该使用rm命令,而不是unlink,虽然unlink也可以,但用户可能更熟悉rm。 常见问题可能包括:软链接创建后不工作,可能因为源文件被移动或删除,或者路径使用了相对路径而在当前目录下找不到。这时候需要解释绝对路径和相对路径的区别,建议在创建时使用绝对路径以避免问题。 另外,引用[3]提到了软件安装和镜像源,这可能与软链接的使用场景有关,比如将软件安装目录链接到其他位置。但用户的问题主要集中在ln命令本身,所以可能不需要深入这部分,但可以提到应用场景。 还需要注意,硬链接和软链接的区别,用户可能混淆两者。硬链接不能跨文件系统,不能链接目录,而软链接可以。因此,在教程中需要简要说明这一点,避免用户错误使用。 最后,结合用户提供的引用,特别是引用[1]的具体命令示例,应该将其包含在回答中,并适当标注引用。同时,生成相关问题,帮助用户进一步了解ln命令的其他方面,比如删除软链接、解决路径问题、权限问题等。 现在,整理这些思路,组织成一个结构清晰的回答,分步骤说明创建软链接的方法,常见问题及解决方法,并附上示例代码和引用标注。同时,生成相关问题,引导用户深入学习。</think>### Ubuntu系统中使用`ln`命令创建软链接的教程 #### 一、创建软链接的基本语法 软链接(符号链接)类似于Windows的快捷方式,通过以下命令创建: ```bash ln -s /path/to/source /path/to/link ``` - `-s`:表示创建符号链接(默认创建硬链接) - **源路径**需真实存在,**链接路径**为新创建的快捷方式名称[^1] #### 二、操作示例 1. **链接到文件** ```bash ln -s /home/user/documents/file.txt ~/Desktop/file_shortcut ``` `file_shortcut`将出现在桌面,指向原文件 2. **链接到目录** ```bash ln -s /var/www/html /home/user/webroot ``` 通过`webroot`目录可直接访问`/var/www/html` 3. **验证链接** 使用`ls -l`查看详细信息,箭头指向源文件: ```bash ls -l ~/Desktop/file_shortcut # 输出示例:lrwxrwxrwx 1 user user 23 Jan 1 12:00 file_shortcut -> /home/user/documents/file.txt ``` #### 三、常见问题及解决方法 1. **"Too many levels of symbolic links"** - **原因**:链接形成循环(如A→B→A) - **解决**:检查并删除循环引用 2. **"No such file or directory"** - **原因1**:源路径不存在 **操作**:确认源路径是否正确 - **原因2**:使用相对路径时目录位置变化 **建议**:尽量使用绝对路径创建链接 3. **权限问题** - 若目标目录无写入权限,需使用`sudo`或修改权限: ```bash sudo ln -s /path/to/source /system/directory/link chmod 755 /target/directory # 开放目录写入权限[^5] ``` 4. **删除软链接** ```bash rm /path/to/link # 仅删除链接,不影响源文件 ``` #### 四、典型应用场景 1. 将配置文件链接到统一管理目录(如`~/.config`) 2. 跨磁盘访问频繁使用的资源 3. 版本切换(如Python多版本管理)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值