ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [20171230]windows mklink.txt

[20171230]windows mklink.txt

原创 Linux操作系统 作者:lfree 时间:2017-12-31 20:41:36 0 删除 编辑
[20171230]windows mklink.txt

--//别人的系统,原来的D盘磁盘空间不足,加入新的磁盘,想把原来的D的数据移动到E盘,而通过D盘依旧可以访问,
--//问如何做?实际上在windows下也存在类似linux的ln命令,很容易实现这样的需求.我看了一个命令语法.如下:

D:\temp>mklink
创建符号链接。

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

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

--//我的感觉/D /J 好像一样的,不知道两种区别在哪里.检索如下:

https://baike.baidu.com/item/mklink/566760?fr=aladdin

目录符号链接与目录连接点的区别

目录符号链接(/D)与目录连接点(/J)非常相似,但是本质是不同的。目录符号链接依旧是符号链接,是指向目录的符号链接,而目录连接
点不属于符号链接。

目录符号链接允许 Target 使用相对路径,当使用相对路径时创建目录符号链接之后,如果移动了符号链接文件,操作系统将无法再找到
原来的目标。

目录连接点只允许 Target 使用绝对路径,当创建目录连接点时,如果传入的参数是相对路径,mklink 命令会自动将相对路径补全为绝
对路径。

当目录符号链接使用绝对路径时,其行为与目录连接点完全一样。

此外,目录符号链接还可以指定 SMB 远程网络中的路径,而目录连接点不可以。

--//自己做一些测试:
d:\temp>dir
 驱动器 D 中的卷没有标签。
 卷的序列号是 0006-A37E

 d:\temp 的目录

2017/12/30  21:11    <DIR>          .
2017/12/30  21:11    <DIR>          ..
2017/11/24  22:01    <DIR>          app
2017/12/31  20:11    <DIR>          test
               0 个文件              0 字节
               4 个目录 41,630,515,200 可用字节
--//在test目录建立文件d.txt

d:\temp>mklink /D e:\test test
为 e:\test <<===>> test 创建的符号链接

d:\temp>dir e:\ | grep test
2017/12/31  20:12    <SYMLINKD>     test [test]

d:\temp>dir e:\test
 驱动器 E 中的卷没有标签。
 卷的序列号是 000C-24BB

 e:\test 的目录

找不到文件
--//为什么.

d:\temp>rmdir e:\test

--//继续:

d:\temp>mklink /D e:\test .\test
为 e:\test <<===>> .\test 创建的符号链接

d:\temp>dir e:\ | grep test
2017/12/31  20:16    <SYMLINKD>     test [.\test]

d:\temp>dir e:\test\
 驱动器 E 中的卷没有标签。
 卷的序列号是 000C-24BB

 e:\test 的目录

找不到文件

--//继续:
d:\temp>mklink /D d:\test .\test
为 d:\test <<===>> .\test 创建的符号链接

d:\temp>dir d:\test
 驱动器 D 中的卷没有标签。
 卷的序列号是 0006-A37E

 d:\test 的目录

找不到文件

--//真不知道这个/D参数什么用.

d:\temp>rmdir d:\test

d:\temp>mklink /D e:\test d:\temp\test
为 e:\test <<===>> d:\temp\test 创建的符号链接

d:\temp>dir e: | grep test
2017/12/31  20:20    <SYMLINKD>     test [d:\temp\test]

d:\temp>dir e:\test\
 驱动器 E 中的卷没有标签。
 卷的序列号是 000C-24BB

 e:\test 的目录

2017/12/31  20:11    <DIR>          .
2017/12/31  20:11    <DIR>          ..
2017/12/31  20:11                18 d.txt
               1 个文件             18 字节
               2 个目录 41,630,515,200 可用字节

--//只有这样才正常使用,相对路径如何用.只有中括号的里面目录存在才是ok的.
d:\temp>rmdir e:\test

d:\temp>mklink /D d:\temp\aaaa test
为 d:\temp\aaaa <<===>> test 创建的符号链接

d:\temp>dir
 驱动器 D 中的卷没有标签。
 卷的序列号是 0006-A37E

 d:\temp 的目录

2017/12/31  20:23    <DIR>          .
2017/12/31  20:23    <DIR>          ..
2017/12/31  20:23    <SYMLINKD>     aaaa [test]
2017/11/24  22:01    <DIR>          app
2017/12/31  20:11    <DIR>          test
               0 个文件              0 字节
               5 个目录 41,630,515,200 可用字节

d:\temp>dir aaaa
 驱动器 D 中的卷没有标签。
 卷的序列号是 0006-A37E

 d:\temp\aaaa 的目录

2017/12/31  20:11    <DIR>          .
2017/12/31  20:11    <DIR>          ..
2017/12/31  20:11                18 d.txt
               1 个文件             18 字节
               2 个目录 41,630,515,200 可用字节

--//真不知道ms为什么要创建这个参数,意义不大.到这里我才明白/D参数的含义.

d:\temp>mklink /D e:\ttt toad
为 e:\ttt <<===>> toad 创建的符号链接
--//最后的参数实际上不一定在本地目录,ms的相对是针对前面的Link.我自己理解错误.

d:\temp>dir e: | egrep  "toad|ttt"
2013/07/16  22:30    <DIR>          toad
2017/12/31  20:29    <SYMLINKD>     ttt [toad]

d:\temp>dir e:\ttt
 驱动器 E 中的卷没有标签。
 卷的序列号是 000C-24BB

 e:\ttt 的目录

2013/07/16  22:30    <DIR>          .
2013/07/16  22:30    <DIR>          ..
2011/10/10  09:52       145,096,704 Toad .dat
2013/07/16  22:32    <DIR>          Toad for Oracle 11
2011/10/10  09:52            52,469 Toad for Oracle 11.exe
               3 个文件    145,149,209 字节
               3 个目录 35,444,133,888 可用字节

--//实际上这个就是windows的快捷方式,只不过使用命令行实现罢了.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2149545/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969562