1 符号链接
1.1 windows:mklink
λ mklink
创建符号链接。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 创建目录符号链接。默认为文件符号链接。
/H 创建硬链接而非符号链接。
/J 创建目录联接。 (/J更像真实目录,/D更像快捷方式)
Link 指定新的符号链接名称。 (to 生成的符号名称位置)
Target 指定新链接引用的路径(相对或绝对)。(from 数据实际位置)
一般用法:
mklink “dst_file.txt” “src_file.txt”
mklink /J “dst_dir” “src_dir”
(建议路径加上引号,避免一些不必要的错误)
- 实验:新建一个“t1.txt”,内容为“123”,用mklink/H建立链接“t2.txt”,则修改t2.txt的内容为“12345”后,t1.txt的内容也会变。删除t1.txt的内容。t2.txt内容仍然在。
- 结论:文件名好比一个指针,指向硬盘的一个地址。我们删文件名的时候,本质只是在删指针。
- 硬链接的风险是,表面上似乎是两个文件的逻辑地方,实际上“一个逻辑地方”的改动,会影响“另一个逻辑地方”的文件内容。优点则是节省硬盘空间,不用冗余存储相同内容。而软链接一看就是“快捷方式”,很容易区分,不会有这个风险。
软硬链接区别表:
两种链接 | 文件大小 | 删除原文件后 | 能否跨磁盘(如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里好像无法判断出一个目录是符号链接
实验记录
一些具体的实验操作效果可以记录到这里