草庐IT

强大的MKLINK----帮助节省c盘空间

God-001 2023-05-05 原文

参考博文:

https://blog.csdn.net/MonoBehaviour/article/details/106077852

 Windows下mklink使用_星幕·云影的博客-CSDN博客

简介:mklink是windows自带的功能,一般需要运用管理员权限才能执行;我常用于给文件建立从 C 盘到D盘的链接,以节省空间

首先,以管理员身份运行 命令提示符

                                  

让我们运用  MKLINK /?   看一看他的具体功能

                             

 

 C:\WINDOWS\system32>MKLINK /?
创建符号链接。

MKLINK [[/D] | [/H] | [/J]] Link Target

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

注意:因为powershell不支持mklink命令,所以要在前面加cmd /c表示用cmd来运行该命令,路径注意引号(r路径包含空格加上"   ",没有空格加不加“ ”都可以),可以是相对路径也可以是绝对路径。

 符号链接(Symbolic link)

(z注意: mklink创建 链接的  第一个文件原来是没有的,通过mklink会自动创建,Target文件夹需要你自己创建

 例如   :A . 什么参数都不带

 MKLINK  "D:\name node" D:\csdn

即将d盘中的name node 文件链接到D盘的csdn文件,执行代码后也就是这

 B .带参数

a.  /D      创建目录符号链接。默认为文件 符号链接。

 MKLINK /D "D:\name" "D:\csdn"

即将d盘中的name 文件夹链接到D盘的csdn文件夹,执行后

鼠标点击访问该文件夹时,实际上是在访问它连接的文件夹 

 特点

  • 创建链接后的图标和快捷方式很像, 都有一个箭头的标志
  • 在系统中不占用空间
  • 在文件系统中不是一个单独的文件
  • 如果源文件被删除了,链接就没用了
  • 移除源文件不会影响符号链接
  • 移除链接文件也不会影响源文件
  • win10_x64_build10565上测试不可以右键修改图标和设置管理员运行
  • 文件大小为0字节和不占用空间
  • 文件属性的创建时间和修改时间都是软链接创建和修改时的时间
  • 文件类型是.SYMLINK
  • 可以在cmd下运行软链接(假如链接的是程序, 且运行命令是XXX即可)(win10_x64_build10565上测试通过)

通过相对路径创建的软链接在移动后无法使用,绝对路径创建的移动后不影响使用。符号链接可以直接右键删除,或通过rmdir命令删除,不会影响原文件,但del命令则会把目标文件删除。

 b:    /H      创建硬链接而非符号链接。

  • 硬链接只能用于文件,不能对文件夹创建硬链接,不然会提示“拒绝访问”
  • 在系统中占用的空间与源文件相同,但在系统中引用的是相同的对象(不是拷贝)
  • 图标和创建快捷方式的图标不同(没有快捷方式的小箭头)
  • 移除源文件不会影响硬链接
  • 移除硬链接不会影响源文件
  • 如果源文件被删除,它的内容依然通过硬链接存在
  • 硬链接文件的任何更改都会影响到源文件
  • 文件大小, 占用空间, 创建和修改时间跟原原文件一样
  • 可以在cmd下运行硬连接(假如链接的是程序)
  • 通过上述命令就可以创建从“link”路径到“target”路径的硬链接,例如:在D盘根目录下新建文本“A.txt”,然后输入命令如下即可创建到”A.txt”的硬链接”B.txt”
  • 在文件资源管理器上看,“B.txt”与“A.txt”占用同样大小的空间,其实这个数据并不用去理会,硬链接相当于给文件的数据多创建了一个“入口”,“A.txt”,“B.txt”指向的是硬盘中的同一块区域,因此这两个文件的内容是完全一样的,编辑任何一个文件都会影响到另一文件,当删除其中一个文件,只是删除这个文件其中一个“入口”,要两个文件都删除,文件系统才会标志这块硬盘区域上的文件被删除

 c:    /J      创建目录联接。

  • “目录联接”只能应用于文件夹,不可用于文件。对文件夹创建的“目录联接”与“符号链接”并没有区别,一样可以实现软件数据的迁移。不过貌似这两者对剪切操作有不一样的表现。

    例如,我现在在D盘创建“文件夹A”,在“文件夹A”里新建A.txt,然后在D盘根目录创建一个“目录联接B”指向这个“文件夹A”,通过这个“目录联接B”,我可以访问到A.txt,接着我对“目录联接B”进行剪切操作,剪切到C盘,发现“文件夹A”和“目录联接B”还是在D盘,但是打开却发现A.txt不见了,被剪切到了C盘的“文件夹B”中,也就是说对“目录联接”的剪切操作会影响原来的文件。

  •      给文件夹里的内容提供一个“入口” 即所谓的“联接点”,剪切操作时会通过这个“联接点”把内容剪切出来,原来的目录和“联接点”虽然没有变化,但里面的内容被剪切出来了。而“符号链接”的剪切操作仅仅是对这个“符号链接”的剪切,并不会透过这个“符号链接”把其内容剪切掉。

转载了  第二位博主大部分内容,欢迎前去关注两位博主

有关强大的MKLINK----帮助节省c盘空间的更多相关文章

  1. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

    我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

  2. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  3. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  4. ruby-on-rails - 需要帮助最大化多个相似对象中的 3 个因素并适当排序 - 2

    我需要用任何语言编写一个算法,根据3个因素对数组进行排序。我以度假村为例(如Hipmunk)。假设我想去度假。我想要最便宜的地方、最好的评论和最多的景点。但是,显然我找不到在所有3个中都排名第一的方法。Example(assumingthereare20importantattractions):ResortA:$150/night...98/100infavorablereviews...18of20attractionsResortB:$99/night...85/100infavorablereviews...12of20attractionsResortC:$120/night

  5. ruby - 帮助使用 Ruby 中的 "Whenever"gem 来执行 cron 任务 - 2

    我以前没有使用过cron,所以我不能确定我这样做是对的。我想要自动化的任务似乎没有运行。我在终端中执行了这些步骤:sudogeminstall每当切换到应用程序目录无论何时。(这创建了文件schedule.rb)我将此代码添加到schedule.rb:every10.minutesdorunner"User.vote",environment=>"development"endevery:hourdorunner"Digest.rss",:environment=>"development"end我将此代码添加到deploy.rb:after"deploy:symlink","depl

  6. ruby-on-rails - 从帮助器规范中 stub 一个帮助器方法 - 2

    我正在构建Rails应用程序并使用RSpec制定测试。我为我正在创建的名为current_link_to的方法编写了测试。此方法应该检查当前页面是否对应于我传递给它的路径,并将current类添加到生成的链接中,以防它匹配。这是规范:require"spec_helper"describeApplicationHelperdodescribe"#current_link_to"dolet(:name){"Products"}let(:path){products_path}let(:rendered){current_link_to(name,path)}context"whenthe

  7. ruby 认为我在引用一个顶级常量,即使我指定了完整的命名空间 - 2

    在我的应用程序中我有classUserincludeUser::FooendUser::Foo定义在app/models/user/foo.rb现在我正在使用一个定义了自己的Foo类的库。我收到此错误:warning:toplevelconstantFooreferencedbyUser::FooUser仅引用具有完整路径的Foo,User::Foo,而Foo实际上从来没有指的是Foo。这是怎么回事?更新:才想起我之前遇到过同样的问题,在问题1中看到这里:HowdoIrefertoasubmodule's"fullpath"inruby? 最佳答案

  8. Ruby 命名空间与类还是模块? - 2

    考虑Ruby类Foo::Bar。惯例是将“Foo”命名空间作为一个模块,但它也可以很容易地作为一个类:moduleFoo;classBar;end;end对比:classFoo;classBar;end;end在第二种情况下,Bar不是Foo的内部类,它只是在Foo的单例上定义的另一个常量。在这两种情况下,父类(superclass)都是Object并且它们只包含Kernel模块。它们的祖先链是相同的。因此,除了您可以根据其类使用Foo进行的操作(如果是类则实例化,如果是模块则扩展/包含),命名空间的性质是否对有任何影响酒吧?是否有令人信服的理由选择其中一个名称间距而不是另一个?我看到

  9. ruby - 如何在命名空间类中包含模块? - 2

    我在将模块包含在命名空间类中时遇到问题。下面的示例抛出错误uninitializedconstantBar::Foo::Baz(NameError)。我在这里缺少哪些基本的Ruby知识?moduleFoomoduleBazdefhelloputs'hello'endendendmoduleBarclassFooincludeFoo::Bazendendfoo=Bar::Foo.new 最佳答案 使用::强制查找到顶层:moduleBarclassFooinclude::Foo::Bazendend

  10. ruby - 如何为命名空间类定义 Fabricator - 2

    我想为类定义Fabricator,其命名空间类似于“Foo::Bar”。告诉我它的工作方式。这是我的代码。模型/foo.rbclassFooincludeMongoid::Documentembedded_in:foo_container,polymorphic:truefield:xxx....end模型/foo/bar.rbclassFoo::Bar数据/制造商/foo_bar_fabricator.rbFabricator(:foo_bar,class_name:'Foo::Bar')doyyy'MyString'zzz'MyString'end当我尝试在parino控制台上创建

随机推荐