Linux软链接的使用
转自:https://www.cnblogs.com/sueyyyy/p/10985443.html,本博文仅对原博排版稍微优化。
更为细致的硬链接、软链接的介绍可参考:Linux中的硬链接和软链接
另外,提供笔者对软连接的一个最简单的理解:就相当于Windows中的快捷方式文件,但是软连接不仅可以链接文件,还可以链接目录。
并且给出一个应用场景示例:我们在训练深度学习模型时,通常数据集会单独放在一个目录下,我们某个模型的训练脚本则在工程目录内,这时我们就要给出很长一串路径写在我们的文件内,如:
train_dataset = datasets.ImageFolder(
'/ssd1t/song/Datasets/ImageNet/ImageNet_2012_DataSets/ILSVRC2012_img_train',
transforms.Compose(augmentation))
但实际上,我们可以通过软连接,将其链接到我们的工程目录下,并且这样并不会占据额外的空间:
ln -s /ssd1t/song/Datasets/ImageNet/ImageNet_2012_DataSets/ILSVRC2012_img_train imagenet_trainset
这样,在我们的训练脚本内指定路径时就可以直接指向imagenet的软连接imagenet_trainset
train_dataset = datasets.ImageFolder(
'imagenet_trainset',
transforms.Compose(augmentation))
另外要注意,如果想要生成目录(而非文件)的软连接,必须用绝对路径。
以下是转载原文:
简介
软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接。
具体用法是:ln -s 源文件 目标文件
。
当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在其它的 目录下用ln命令链接(link)就可以,不必重复的占用磁盘空间。
例如:
ln -s /usr/local/mysql/bin/mysql /usr/bin
这样我们就对/usr/bin目录下的mysql命令创建了软连接
软链接和硬连接
硬连接
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
使用方式
创建软链接
ln -s [源文件或目录] [目标文件或目录]
例:
当前路径创建test
引向/var/www/test
文件夹 :
ln –s /var/www/test test
创建/var/test
引向/var/www/test
文件夹
ln –s /var/www/test /var/test
删除软链接
和删除普通的文件是一样的,删除都是使用rm来进行操作
例:
删除test
rm –rf test
修改软链接
ln –snf [新的源文件或目录] [目标文件或目录]
这将会修改原有的链接地址为新的地址
例:
创建一个软链接
ln –s /var/www/test /var/test
修改指向的新路径
ln –snf /var/www/test1 /var/test
常用参数:
-f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式
--help : 显示辅助说明
--version : 显示版本