软硬方式链接
在Linux系统中存在硬链接和软连接两种文件。
硬链接(hard link):可以将它理解为一个“指向原始文件inode的指针”,系统不为它分配独立的inode和文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的inode连接数就会增加1;而且只有当该文件的inode连接数为0时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件inode的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是,由于技术的局限性,我们不能跨分区对目录文件进行链接。
软链接(也称为符号链接[symbolic link]):仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具有一样的性质。
ln命令
ln命令用于创建链接文件,格式为“ln [选项] 目标”,其可用的参数以及作用如表6-6所示。在使用ln命令时,是否添加-s参数,将创建出性质不同的两种“快捷方式”。
ln命令中可用的参数以及作用
参数 作用
-s 创建“符号链接”(如果不带-s参数,则默认创建硬链接)
-f 强制创建文件或目录的链接
-i 覆盖前先询问
-v 显示创建链接的过程
实例
echo "cao ni ma" > test.txt #创建原始测试文件test.txt
ln -s test.txt soft_link.txt #创建文件test.txt的软链接文件soft_link.txt
ln test.txt hard_link.txt #创建文件test.txt的硬链接文件hard_link.txt
rm -rf test.txt #删除源文件test.txt
cat soft_link.txt #软连接文件打不开
cat hard_link.txt #硬链接文件能正常打开
软连接
[root@root ~]# echo "1833" > 1833.txt
[root@root ~]# cat 1833.txt
1833
[root@root ~]# ln -s 1833.txt 1.txt
[root@root ~]# cat 1.txt
1833
[root@root ~]# rm -r 1833.txt
rm:是否删除普通文件 "1833.txt"?y
[root@root ~]# cat 1833.txt
cat: 1833.txt: 没有那个文件或目录
[root@root ~]# cat 1.txt
cat: 1.txt: 没有那个文件或目录
硬链接
[root@root ~]# echo "1833" > 1833.txt
[root@root ~]# ln 1833.txt 2.txt
[root@root ~]# cat 2.txt
1833
[root@root ~]# rm -r 1833.txt
rm:是否删除普通文件 "1833.txt"?y
[root@root ~]# cat 2.txt
1833
[root@root ~]#