Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
软链接类似Windows下的快捷方式。硬链接通过文件系统的inode连接来产生新文件名,而不是产生新文件。
inode:记录文件属性,一个文件一个inode。inode相当于文件ID,查找文件的时候要先找到inode,然后才能读出文件的内容。
ln 命令用于创建连接文件,命令格式如下:
ln [选项] 源文件 目标文件
选项:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行,强制创建连接文件,如果目标存在,那么先删除掉目标文件,然后再建立连接文件。
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
-V “-V<备份方式>”或“--version-control=<备份方式>”
--help 显示帮助信息
--version 显示版本信息
硬连接
硬链接是多个文件都指向同一个inode,硬链接知识点:
①、具有相同inode的多个文件互为硬链接文件,创建硬链接相当于文件实体多了入口。
②、对于硬链接文件,只有删除了源文件以及对应的所有硬连接文件,文件实体才会被删除。
③、根据硬链接文件的特点,我们可以通过给文件创建硬连接的方式来防止文件误删除。
④、不论修改源文件还是连接文件,另一个文件的数据都会被改变。
⑤、硬连接不能跨文件系统。
⑥、硬连接不能连接到目录。
因为以上这些限制,硬链接其实不常用。
符号连接(软连接)
符号连接类似Windows下的快捷方式,符号链接也叫做软连接,软连接要用的多。符号连接相当于创建了一个独立的文件,这个文件会让数据读取指向它连接的哪个文件的文件名。软连接的特点:
①、可以连接到目录。
②、可以跨文件系统。
③、删除源文件以后,软连接文件也就“打不开了”。
④、符号连接文件通过->来指示具体的连接文件。
⑤、符号连接要使用绝对路径,否则连接出问题。
再来看相对路径与绝对路径的区别:
注意:
当用cp命令copy一个软链接时,copy的是软链接所对应的内容,而不是它本身。
如:
# echo "1234567890" > test.txt
# ln -s test.txt test2.txt
# cp test2.txt test3.txt
test3.txt就是test.txt,而不是test2.txt 。
要直接cp软链就需要加-d参数
如:
# cp -d test2.txt test3.txt