win10 mklink 软连接 硬链接 Linux ln 和复制的区别 一文读懂

我的历程

因为每次在linux下跑实验,都会对数据集涉及到一个操作,就是生成数据集的软连接,可以大大的节约内存,不用在不同项目用同一个数据集的时候,把数据集一一复制到项目文件里。 但是我再win10跑实验的时候好像没有这个操作。所以我就想能不能找到类似的操作指令,后面发现就是 mklink指令。现在刚好遇到个因为创建软连接引起来的bug,现在做个总结 。

linux软链接硬链接复制的区别

先看看这个
linux软链接硬链接复制的区别: link.

linux 下的软硬连接操作

https://www.cnblogs.com/sueyyyy/p/10985443.html

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 –rftest

修改软链接

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 : 显示版本

windows下的软硬链接

mklink指令

1、打开开始菜单,搜索:cmd 在命令提示符上单击右键,选择【以管理员身份运行】; 快捷键 win+R ;或者直接在文件夹位置 输入cmd
输入cmd 也会打开黑盒子界面

2、在命令提示符中键入:mklink /? 系统会给出 mklink 命令的帮助:

创建符号链接。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 创建目录符号链接。默认为文件符号链接。
/H 创建硬链接而非符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径(相对或绝对)。

mklink小实验 建议自己动手

mklink命令怎么用?教你win10中使用mklink命令的方法
http://www.winwin7.com/JC/19487.html

我的实验实际使用

生成数据集的软连接 cmd中使用

mklink /j 目标文件 源文件 

成功后pycharm 中的项目效果图
数据集软连接

注意:

1.硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。
2.硬链接只能用于文件,不能用于目录;软链接可以为目录建链接。 (特别注意这点,我遇到bug了)
3.硬链接不能跨文件系统操作。

A硬链B 删除B后A依然存在,且可用。
A软链B 删除B后A存在,但不可用了(相当于Windows下快捷方式指向的目标不存在了)

我遇到的bug PermissionError: [Errno 13] Permission denied

开始我为一个训练好的权重文件 AlexNet.pth (不是目录文件)在另一个项目生成软链接 ,cmd窗口没有报错,代码这样的。

mklink /j F:\WorkSpace\Python\deep-learning-for-image-processing\pytorch_classification\analyze_weights_featuremap\AlexNet.pth F:\WorkSpace\Python\deep-learning-for-image-processing\pytorch_classification\Test2_alexnet\AlexNet.pth

项目运行,调用这个文件的时候发生了错误
PermissionError: [Errno 13] Permission denied ./AlexNet.pth
然后我打开文件夹所在位置,双击打开也是报错了。
所以我就开始百度问题,开始以为是权限问题,后面在源文件 右键属性 修改了权限还是报错,我就开始搜mklink 后报错 ,发现了是软链接和硬链接的问题。 所以我就改成了硬链接 就是 /j 和 /h的区别。

生成权重文件的硬链接

mklink /h F:\WorkSpace\Python\deep-learning-for-image-processing\pytorch_classification\analyze_weights_featuremap\AlexNet.pth F:\WorkSpace\Python\deep-learning-for-image-processing\pytorch_classification\Test2_alexnet\AlexNet.pth

为 F:\WorkSpace\Python\deep-learning-for-image-processing\pytorch_classification\analyze_weights_featuremap\AlexNet.pth <<===>> F:\WorkSpace\Python\deep-learning-for-image-processing\pytorch_classification\Test2_alexnet\AlexNet.pth 创建了硬链接

这样生成硬链接之后,项目运行用这个权重文件没有报错,完美解决啦

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值