Linux学习笔记之 软链接和硬链接
前言
一般不用硬而用软 , 硬不能链接目录
软连接和Windows快捷方式相同
硬链接用 ln 源文件 硬链接
硬链接特点
不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,inode 号就在, 这个文件都可以被访问。
因为在不同的文件系统中,inode 号是重新计算的。
因为如果给目录建立硬链接,那么不仅目录本身需要重新建立,目录下所有的子文件,包括子目录中的所有子文件都需要建立硬链接,这对当前的 Linux 来讲过于复杂。
不论是修改源文件,还是修改硬链接文件,另一个文件中的数据都会发生改变。
软链接用 ln -s 源 软
软链接的特点和 Windows 中的快捷方式完全一致
- 删除软链接文件,源文件不受影响。而删除原文件,软链接文件将找不到实际的数据,从而显示文件不存在。
- 软链接会新建自己的 inode 信息和 block,只是在 block 中不存储实际文件数据,而存储的是源文件的文件名及 inode 号。
- 软链接可以链接目录。
- 软链接可以跨分区。
对比例子
例子1
makedir test //创建文件夹
cd test //进入文件夹
touch a //创建a文件
ln a aHard1 //创建硬链接
ln -s a aSoft1 //创建软链接
vi a //可打开
vi aHard1 //可打开
vi aSort1 //可打开
rm -rf a //删除a
vi a //打不开
vi aHard1 //可打开
vi aSort1 //打不开
栗子2
[k@localhost ~]$ mkdir temp
[k@localhost ~]$ cd temp
[k@localhost temp]$ mkdir test
[k@localhost temp]$ cd test
[k@localhost test]$ echo "first" > a //创建内容为 first 的a文件
[k@localhost test]$ cat a
first
[k@localhost test]$ ln a hard
[k@localhost test]$ cat hard
first
[k@localhost test]$ ln -s a soft
[k@localhost test]$ cat soft
first
[k@localhost test]$ rm a //删除了a
[k@localhost test]$ cat a
cat: a: 没有那个文件或目录
[k@localhost test]$ cat hard
first //硬链接还能访问到磁盘的内容
[k@localhost test]$ cat soft
cat: soft: 没有那个文件或目录
[k@localhost test]$ echo "second" > a //重新创建内容为 second 的a文件
[k@localhost test]$ cat a
second
[k@localhost test]$ cat hard
first //硬链接还是原来的类容
[k@localhost test]$ cat soft
second //软连接是新内容
[k@localhost test]$ ln a hard
ln: 无法创建硬链接"hard": 文件已存在
[k@localhost test]$ rm hard
[k@localhost test]$ ln a hard
[k@localhost test]$ cat hard
second
[k@localhost test]$