windows中的软链接硬链接等

时间:2023-01-30 12:34:06

学校嘛,有些时候还是得逆逆上网客户端啥的,并且学校的不少工作,这Windows的需求还是挺强的,之前Win10的体验并不是太好,不过时隔这么久,打算从7升级到10了,恰好系统也该换了。

首先是命令行的关注,在家里使用了太久的marjaro,逐渐转为开发,以前对windows的命令行不关注也变为关注了,PowerShell安装了scoop,可以一键安装不少工具了,但是有一个痛点就是,以前对用户目录不关注,但是linux用久了反而觉得用户目录好用挖,我想在在命令行下切到我快捷方式指向的目录,但是是不行的,然后了解了一下这方面,就像是linux下的软链接硬链接一样。

使用PowerShell

软链接

New-Item -ItemType SymbolicLink -Path C:\\image -Target C:\\source.txt

硬链接

New-Item -ItemType HardLink -Path C:\\image.txt -Target C:\\source.txt

Junction

windows中文件与文件夹是完全不同的两种类型,创建文件夹链接不可以使用 HardLink ,但是可以使用 Junction

New-Item -ItemType Junction -Path C:\\test\_image -Target C:\\test\_source

虽然powershell可以建立,但是命令还是很繁琐,cmd下有个工具mklink

使用CMD

cmd下有个好用的工具mklink

C:\\>mklink

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

软链接和硬链接的区别

其实这部分和linux中的是差不多的

符号(软)链接(Symbolic link)

  • 执行命令 mklink link_name target_name
  • 创建链接后的图标和快捷方式很像
  • 在系统中不占用空间
  • 在文件系统中不是一个单独的文件
  • 在操作系统层解析(!?)
  • 如果源文件被删除了,链接就没用了
  • 移除源文件不会影响符号链接
  • 移除链接文件也不会影响源文件

硬链接(Hard link)

  • 执行命令 mklink /H link_name target_name
  • 在系统中占用的空间与源文件相同,但在系统中引用的是相同的对象(不是拷贝)
  • 在操作系统层解析(!?)
  • 图标和创建快捷方式的图标不同
  • 移除源文件不会影响硬链接
  • 移除硬链接不会影响源文件
  • 如果源文件被删除,它的内容依然通过硬链接存在
  • 硬链接文件的任何更改都会影响到源文件

快捷方式有何不同

首先不说快捷方式占空间, 软链接不占空间,还有我觉得很重要的区别是快捷方式带后缀.lnk,是个文件,无法通过路径重定向到目标地址,反正我不太推荐这个,除非是建立到桌面方便鼠标点击的用户。

软链接和Junction的区别

可能你会疑惑 mklink 命令参数 /D/J 的区别。这里我直接贴一段我查到的东西:

  1. 创建

    • /d 可以使用相对路径方式创建
    • /j 必须绝对路径方式创建

      此区别意义不大,建议所有的mklink目录均用绝对路径创建
  2. 复制和剪切

    • 复制:/d /j 均生成源目录的内容副本,变为一般文件夹
    • 剪切/移动:
      • /d 生成的目录,移动到其他地方,仍旧保持链接,对源目录无影响,/d生成的目录消失。
      • /j 生成的目录,移动到其他地方,会产生一个新的副本文件夹,源文件夹内容全部移至新普通文件夹内,源文件夹清空,源文件夹仍旧存在,/j生成的目录也依旧存在
  3. 软件打开 用 filedialog 打开,/d生成的目录,地址栏会跳到源目录位置。 /J 生成的目录,地址栏不会跳到源目录位置。 用 FolderDialog 打开,两者相同。

整体来说,/D 更像一个快捷方式。

符号链接(Symlink,Softlink)是对文件或目录的引用,实际上符号链接本身是一个“记录着所引用文件或目录的绝对或相对路径”的特殊文件,通过符号链接的操作都会被重定向到目标文件或目录。

交接点(Junction),也称为“再分析点”,是 NTFS 3.0 及以上文件系统(Windows 2000 及以上系统)的特性,它是链接本地目录(可跨卷)的访问点,通过交接点的操作都会被系统映射到实际的目录上。通过建立交接点,可以在保证一个目录实例(目录的一致性)的前提下,允许用户或程序从本地文件系统中的多个位置访问此目录。

对符号链接和快捷方式的“读、写、遍历”等操作都会被重定向到目标文件或目录;但对它们的“复制、删除、移动、配置 ACL”等操作只针对自身;符号链接不但可以应用于本地系统,还可以应用 UNC 路径。

对交接点内文件和子目录的“建立、删除、修改”等操作都被映射到对应的目录中的文件和子目录上;

对交接点的“复制、粘贴、剪切、配置 ACL”,只会影响此交接点;

在同一卷内移动交接点,只会影响此交接点;但在不同卷间移动交接点,会将此交接点转换为正常目录,并且交接点对应目录下的所有内容都会被移动;

通过“资源浏览器(Explorer.exe)”和“命令行 del”等工具删除交接点时,会同时删除对应目录下的所有内容(但不会删除目录);可通过“linkd.exe /d”安全的删除交接点;但在 vista 及以后的系统中,对交接点的删除会被正确的处理。

你可以自己建立这两个后,在同卷和在不同卷间复制移动粘贴看看区别,就暂时我了解到的来说的话,我个人建议是使用/D

windows中的软链接硬链接等的更多相关文章

  1. linux文件系统软链接硬链接

    引子 目前,UNIX的文件系统有很多种实现,例如UFS(基于BSD的UNIX文件系统).ext3.ext4.ZFS和Reiserfs等等. 不论哪一种文件系统,总是需要存储数据.硬盘的最小存储单位是扇 ...

  2. Linux 软链接 硬链接 ln命令(繁杂版)

    注意:创建软连接的时候,要用绝对路径!!! 这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln - ...

  3. Linux软链接硬链接的区别

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...

  4. linux中软连接和硬链接的区别

    linux中创建软连接和硬链接的方法: 软连接: ln -s oldfile slink 硬连接: ln oldfile hlink linux中创建软连接和硬链接的区别:        原理上,硬链 ...

  5. linux 软链接 硬链接

    查看文件sun.txt   加上参数i 是显示节点 inode [root@bogon test]# ls -li sun.txt 10006225 -rw-r--r--. 1 root root 0 ...

  6. Linux 软链接 硬链接 ln命令(简约说明版)

    注意:路径使用绝对路径!! 解决方法: 当我们需要在不同的目录下用到同一个文件时,会用到以下命令. 命令:ln 作用:为某一个文件在另外一个位置建立一个同步的链接 语法:ln [option] 源文件 ...

  7. Linux总结(十二)set_uid set_gid stic_bit 软链接 硬链接

    一 set_uid 之前我们修改普通用户的登陆密码,都是以管理员身份在操作,比如我们在lv账户下,我们使用sudo passwd lv 重置lv账户密码,此时我们直接拿到root权限忽略掉了文件权限的 ...

  8. 文件类型 | 命令ln | 软链接硬链接

    1.9文件类型 1.9.1常见文件类型 d:目录 -:普通文件 l:链接文件 b:设备 1.9.2文件后缀名 sh:shell脚本 tar.gz:压缩包 my.cnf:配置文件 test.zip:压缩 ...

  9. Linux 中软链接和硬链接的使用

    Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link). 硬链接和软链接 硬链接 --- ln 要链接的文件 新硬链接名 软连接 --- l ...

随机推荐

  1. 使用xUnit,EF,Effort和ABP进行单元测试(C#)

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 介绍 创建测试项目 准备测试基类 创建第一个测试 测试异常 在测试中使用仓储 测试异步方法 小结 介绍 在这篇博客中,我 ...

  2. 不要轻易使用linq代替sql

    使用Entityframework+Reposity模式 写出的代码执行效率极低. Linq代码: var querySql = rel_project_personservice.GetItems( ...

  3. Angular系列----AngularJS入门教程01:AngularJS模板 (转载)

    是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...

  4. CSS3伪类

    1.:last-child 比如:查找ul的最后一个li ul li:last-child { //样式 } 2.:first-child 比如:查找ul的第一个li ul li:first-chil ...

  5. EXTJS 4&period;2 资料 控件lable定义

    代码: { xtype:'label', id:'label', labelSeparator :'', // 去掉laebl中的冒号 fieldLabel : '这是个label' } 赋值: Ex ...

  6. UML 结构图之类图 总结

    [注] 本文不是类图的基础教程, 只是类图的图形总结. 学习UML图形 推荐阅读<UML参考手册>第2版. http://www.umlchina.com/ 推荐微软的开发软件设计模型 h ...

  7. js——BOM

    BOM:Browser Object Model  浏览器对象模型 open(页面的地址url,打开的方式) :方法  打开一个新的窗口(页面) 如果url为空,折磨人打开一个空白页面 如果打开方式为 ...

  8. POJ 3294 Life Forms(后缀数组&plus;二分答案)

    [题目链接] http://poj.org/problem?id=3294 [题目大意] 求出在至少在一半字符串中出现的最长子串. 如果有多个符合的答案,请按照字典序输出. [题解] 将所有的字符串通 ...

  9. VS2013使用技巧汇总

    1. Peek View 在不新建TAB的情况下快速查看.编辑一个函数的代码. 以前要看一个函数的实现,需要在使用的地方点击F12跳转到该函数,实际上这是很浪费时间的.VS2013Peek View便 ...

  10. 034 Maven中的dependencyManagement和dependencies区别

    这个标签使用过,但是具体的描述还是没有说明过.在这里,专门查了一下,写了这篇文章. 1.定义 在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管 ...