文章目录
- 硬连接和软连接的区别
- 硬连接
- 软连接
- 链接命令`ln`
- `ln`指令参数含义
- 例子
- 硬链接函数`link()`
- 符号链接函数`symlink()`
- 解除链接函数`unlink()`
- link/symlink/unlink函数头文件为
#include <unistd.h>
硬连接和软连接的区别
硬连接
硬连接指通过索引节点来进行连接。
在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。
在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
链接命令ln
- 当我们需要在不同的目录,用到相同的文件时,用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
ln -s 源文件 目标文件
。为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,表示软连接(symbolic link)- ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
- ln的链接有软链接 和硬链接两种,软链接就是
ln -s 源文件 目标文件
,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln 源文件 目标文件
,没有参数-s,它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。 - 不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁盘空间。
ln
指令参数含义
-f : 链结时先将与 dist 同档名的档案删除-d : 允许系统管理者硬链结自己的目录-i : 在删除与 dist 同档名的档案时先进行询问-n : 在进行软连结时,将 dist 视为一般的档案-s : 进行软链结(symbolic link)-v : 在连结之前显示其档名-b : 将在链结时会被覆写或删除的档案进行备份-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾-V METHOD : 指定备份的方式--help : 显示辅助说明--version : 显示版本
例子
创建了快捷方式S99QuecOpen_sarapp
指向了文件../init.d/QuecOpen_startapp
硬链接函数link()
- 硬链接命令为ln,函数为link
int link(const char *oldpath, const char *newpath);
–参数*oldpath:已有的文件路径。
–参数*newpath:新建的硬链接文件路径。
–返回值:成功返回0,错误返回-1。
符号链接函数symlink()
- 符号链接也叫软链接,symlink
int symlink(const char *oldpath, const char *newpath);
–参数*oldpath:已有的文件路径
–参数*newpath:新建的符号链接文件路径
–返回值:成功返回0,错误返回-1
解除链接函数unlink()
int unlink(const char *pathname);
–参数*pathname:链接文件的路径
–返回值:成功返回0,错误返回-1
– unlink指向软链接,删除软链接;指向最后一个硬链接,相当于删除文件