Linux学习笔记之 软链接和硬链接

Linux学习笔记之 软链接和硬链接

  • 前言
  • 硬链接用 ln 源文件 硬链接
    • 硬链接特点
      • 可删除源文件
      • 硬链接不能跨文件系统(分区)
      • 硬链接不能链接目录,
      • 硬链接不会建立新的 inode 信息,也不会更改 inode 的总数。
  • 软链接用 ln -s 源 软
    • 软链接的特点和 Windows 中的快捷方式完全一致
  • 对比例子
    • 例子1
    • 栗子2

前言

一般不用硬而用软 , 硬不能链接目录
软连接和Windows快捷方式相同

硬链接用 ln 源文件 硬链接

硬链接特点

  • 可删除源文件

不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,inode 号就在, 这个文件都可以被访问。

  • 硬链接不能跨文件系统(分区)

因为在不同的文件系统中,inode 号是重新计算的。

  • 硬链接不能链接目录,

因为如果给目录建立硬链接,那么不仅目录本身需要重新建立,目录下所有的子文件,包括子目录中的所有子文件都需要建立硬链接,这对当前的 Linux 来讲过于复杂。

  • 硬链接不会建立新的 inode 信息,也不会更改 inode 的总数。

不论是修改源文件,还是修改硬链接文件,另一个文件中的数据都会发生改变。

软链接用 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]$ 

你可能感兴趣的:(#,Linux,CentOS,Ubuntu,等,linux,学习)