前言
OneDrive的自动同步功能在多主机工作时特别便捷,但OneDrive只能默认同步保存在该位置的文件到其服务器,有时需要同步本地其他目录的文件只能借助辅助文件夹手动同步。
尝试解决方案:利用DOS命令mklink
给待同步的文件目录在OneDrive文件夹下创建映射。
关于 mklink 命令
简介
NTFS 符号链接又称“符号链接”,是 NTFS 文件系统中指向文件系统中的另一个对象的一类对象,被指向的对象叫做“目标”。mklink
是 Windows 系统下用于创建符号链接的工具,存在于 Windows Vista 及以后版本的 Windows 操作系统中。
语法
1 | C:\WINDOWS\system32>mklink |
目录链接
/d
与/j
的区别创建新链接路径
/d
可以是相对路径,也可以是绝对路径;/j
必须是绝对路径执行后,剪切/移动新链接路径
/d
生成的目录,移动到其他地方,仍旧保持链接。对源目录无影响,/d
生成的目录消失/j
生成的目录,移动到其他地方,会产生一个新的副本文件夹,源文件夹内容全部移至新普通文件夹内,源文件夹清空,源文件夹仍旧存在,/j
生成的目录也依旧存在
示例:
target文件夹中存有文件a.txt,执行命令行创建链接
1
mklink /j D:\link\target D:\target
剪切
D:\link\
中的目录文件夹target(带有小箭头)至E:\
后,D盘源文件夹内容全清空,全部(即a.txt)被移动至E盘的target(此时不带小箭头)文件夹中,同时D:\link\
中生成的目录target(带有小箭头)依旧存在,但此时由于目标文件夹D:\target
被清空而显示为空。
软件打开
用filedialog打开,
/d
生成的目录,地址栏会跳到源目录位置。
/j
生成的目录,地址栏不会跳到源目录位置。用FolderDialog打开,两者相同。
总结:
/d
更像一个快捷方式。
文件链接
参数
/h
版本的mklink
命令可以为文件创建硬链接。当源路径是目录时,不带参数的mklink
会报错「拒绝访问」。在cmd
中使用dir
列出当前目录的文件列表时,硬链接的样式与正常文件没什么不同。删除参数
/H
版本的mklink
命令创建的硬链接,不会影响源路径指向的文件。删除参数/H
版本的mklink
命令创建的硬链接指向的源文件,也不会影响硬链接。只有当一个文件的所有硬链接都被删除时,文件才被真正删除。
不带参数
不带参数的
mklink
命令可以为文件创建符号链接。当源路径是目录时,不带参数的mklink
不会报错,但是实际产生的符号链接不可用。在cmd
中使用dir
列出当前目录的文件列表时,符号链接显示为SYMLINK
,同时在文件名后以方括号表示链接的源地址。删除不带参数的
mklink
创建的符号链接,不会影响源路径指向的文件。删除不带参数的mklink
创建的符号链接指向的源文件,访问符号链接时无法访问。
限制
使用
mklink
命令需要管理员权限。这个功能必须是在NTFS文件系统上才能使用。
参数
Link
和Target
要求不能使用 Windows 中不允许用作文件名的字符(\ / : * ? “ < > |)。并且如果Link
和Target
这两个参数中需要包含空格,则必须使用英文双引号将内容引起来,以避免参数识别错误。1
mklink /d "C:\Users\<win-username>\OneDrive\ws" "D:\Workspace"
符号链接在系统启动的时候是不工作的,下面这些文件(夹)不可以作为符号链接替换
1
2
3\Windows
\Windows\system32
\Windows\system32\config
使用方法
建立(以Onedrive为例)
OneDrive默认的保存位置是C:\Users\<win-username>\OneDrive
以管理员模式打开命令提示符,在打开的窗口中输入命令:
1 | mklink /d C:\Users\<win-username>\OneDrive\target E:\target |
注意:执行操作时请确保C:\Users\<win-username>\OneDrive
下没有名为“target”的目录,否则将会报错。
回车键执行后,命令提示符返回“……创建的文件链接”字样的文字,即说明建立连接成功。
删除
在OneDrive设置中选择同步文件夹时取消勾选自建符号链接的目录。
直接删除符号链接目录。
cmd
命令删除1
2#删除虚拟的链接目录,并不会删除远程文件夹真实文件,注意千万不能用del,del会删除远程的真实文件。
rmdir C:\Users\<win-username>\OneDrive\target
注意事项
- 链接目录内的文件即使已经上传完毕,其状态也会一直显示正在上传(参考)。
- 在Web版OneDrive中删除自建的符号链接会导致目标目录内文件丢失。