1 符号链接

1.1 windows:mklink

  1. λ mklink
  2. 创建符号链接。
  3. MKLINK [[/D] | [/H] | [/J]] Link Target
  4. /D 创建目录符号链接。默认为文件符号链接。
  5. /H 创建硬链接而非符号链接。
  6. /J 创建目录联接。 (/J更像真实目录,/D更像快捷方式)
  7. Link 指定新的符号链接名称。 to 生成的符号名称位置)
  8. Target 指定新链接引用的路径(相对或绝对)。(from 数据实际位置)

一般用法:
mklink “dst_file.txt” “src_file.txt”
mklink /J “dst_dir” “src_dir”

(建议路径加上引号,避免一些不必要的错误)

  1. 实验:新建一个“t1.txt”,内容为“123”,用mklink/H建立链接“t2.txt”,则修改t2.txt的内容为“12345”后,t1.txt的内容也会变。删除t1.txt的内容。t2.txt内容仍然在。
  2. 结论:文件名好比一个指针,指向硬盘的一个地址。我们删文件名的时候,本质只是在删指针。
  3. 硬链接的风险是,表面上似乎是两个文件的逻辑地方,实际上“一个逻辑地方”的改动,会影响“另一个逻辑地方”的文件内容。优点则是节省硬盘空间,不用冗余存储相同内容。而软链接一看就是“快捷方式”,很容易区分,不会有这个风险。

软硬链接区别表:

两种链接 文件大小 删除原文件后 能否跨磁盘(如C盘与D盘)
软链接 0 失效
硬链接(用/H参数) 同原文件 不失效 不能

/D、/J区别:关于mklink的/D /J 区别_NotBack的编程专栏-CSDN博客

1.2 linux:ln

ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)

一般用法(文件和目录操作相同):ln -s src dst

linux的ln,target和link参数位置顺序跟mklink是相反的

2 与不同软件联动规则

2.1 windows

好像:会复制真实的内容副本,而不是复制符号

2.2 坚果云

测试版本:5.2.2

坚果云对符号链接同步规则:

windows linux
文件 会同步真实内容 不同步
目录 会同步空目录 不同步

如果linux已有符号a,然后windows又建立符号a同步,则linux的a会被更新覆盖成windows的版本

🤔指向相同相对路径则不会覆盖?

2.3 github

TODO

2.4 TreeSize

用TreeSize分析文件夹大小时,是两个文件的大小和而不是一个文件。因为TreeSize并不会智能地分析硬盘地址。

3 与python联动规则

用os.is_sym…
python里好像无法判断出一个目录是符号链接

实验记录

一些具体的实验操作效果可以记录到这里