连接文件的方式
硬链接(hard link)
通过文件系统的inode
连接来产生新文件名,而不是产生新文件。
原理
由于每个文件都会占用一个inode
,文件内容由inode
的记录来指向。想要读取该文件,必须要经过目录记录的文件名来指向到正确的inode
号码才能读取。换句话说,文件名只与目录有关,但是文件内容则与inode
有关。所以,硬链接只是在某个目录下新建一条文件名连接到某inode
号码的关联记录而已。
例子
在一个目录下新建foo1.txt
的文件,然后使用命令ln foo1.txt foo2.txt
创建一个硬链接。
可以看出两个文件名都连接到1742500这个inode
号码。且文件的权限、属性完全一致。
特点
- 一般来说,使用硬连接设置连接文件是,硬盘的空间与
inode
数量都不会改变。 - 不能跨文件系统
- 不能连接到目录
符号连接
类似Windows
下的快捷方式的文件,可以快速连接到目标文件或目录
原理
符号连接实际上就是在创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。所以当源文件被删除后,符号连接的文件就会打不开。
例子
同样是上面的例子,这里使用ln -s foo1.txt foo2.txt
命令来建立一个符号连接。
可以看到两个文件的inode
号码不同,所以当然就是两个独立的文件。
特点
- 可以连接目录
- 符号连接所产生的文件为一个独立的文件,所以会占用
inode
和block
。
ln命令
参数
-s
:如果不添加如何参数就进行连接,那么就是硬连接。添加了-s
就是符号连接。-f
:如果目标文件存在,就主动将目标文件删除然后再添加。