符号链接
符号链接(Symbolic Link)类似于我们熟知的“快捷方式”,是一个指向其它位置的文件,但与快捷方式不同的是,符号链接不会跳转到它所指向的位置,而是类似于“替代”它所指向的文件或文件夹,对操作系统而言,符号链接就是它所指向的文件本身,对符号链接的所有操作就像是对文件本体操作一样,没有区别,利用这一特性,我们将软件保存数据的文件夹“符号链接”到其它分区,数据就会被转移。在linux系统中符号链接也叫作“软链接”。
创建方法
⭐使用Windows命令行(cmd或者powershell)
# 文件符号链接
mklink link.txt source.txt# 目录符号链接
mklink /D link_folder source_folder
⭐使用python创建
import os# 创建文件的符号链接
os.symlink('source.txt', 'link.txt')# 创建目录的符号链接
os.symlink('source_folder', 'link_folder', target_is_directory=True)
硬链接
硬链接(Hard Link)更类似于文件的“复制”,除了文件名称不同之外,你无法区分硬链接和源文件的区别,但硬链接实际并不复制文件和占用空间,它只是和源文件名称共同指向同一块物理空间,硬链接并不会新建inode信息,而是在源文件的inode信息中为链接域增加1,删除源文件或删除硬链接并不会真正删除文件,只有inode链接域为0时文件才会被删除,正因如此,硬链接只能创建在同一分区中,并且不支持文件夹。
⭐使用Windows命令行(cmd或者powershell)
# 创建硬链接(仅支持文件)
mklink /H hardlink.txt source.txt
⭐python
import os# 创建硬链接
os.link('source.txt', 'hardlink.txt')
目录联接(联接点)
Windows系统中大量使用了一种叫作目录联接(Junction Point)的文件夹,表面上像是快捷方式或符号链接,有快捷方式的箭头,但你可以将它看作是文件夹形式的硬链接,文件夹属性更像是文件夹本体。这些文件夹的作用大多是为了兼容老的操作系统,通常是隐藏文件夹。
⭐使用Windows命令行(cmd或者powershell)
# 创建目录联接(仅支持目录)
mklink /J link_folder source_folder
⭐python
import subprocess# 创建目录联接
subprocess.run(['mklink', '/J', 'link_folder', 'source_folder'], shell=True)
快捷方式
快捷方式类似于一个“文本”文件,保存了它所指向的链接地址,这种方式执行有些缓慢,而且会占用一部分磁盘空间,而符号链接将链接地址保存在文件系统的inode数据结构中,高效执行且不会占用磁盘空间。
⭐右键创建
⭐按alt键拖动创建
⭐python
import win32com.clientdef create_shortcut(target_path, shortcut_path):shell = win32com.client.Dispatch("WScript.Shell")shortcut = shell.CreateShortCut(shortcut_path)shortcut.Targetpath = target_pathshortcut.save()# 示例:创建快捷方式
create_shortcut("C:\\Program Files\\app.exe", # 目标文件"C:\\Users\\Desktop\\app.lnk" # 快捷方式位置
)
另外注意
- 符号链接
需要管理员权限
可以跨分区使用
支持文件和目录
源文件删除后链接失效
类似于快捷方式,但系统层面的实现 - 硬链接
只能用于文件,不支持目录
不能跨分区使用
源文件删除后链接仍然有效
不占用额外磁盘空间
无法区分源文件和硬链接 - 目录联接
只能用于目录
可以跨分区使用
Windows系统特有
需要管理员权限
常用于系统文件夹重定向 - 快捷方式
最常用的链接方式
可以跨分区使用
会占用少量磁盘空间
不需要特殊权限
用户界面可见的箭头标识