Bash/CMD创建目录软连接
需求
场景是这样子的:win 7系统E盘空间马上就要用完了,而驻扎在E盘里面的php进程仍然会往E盘里面写文件(工作目录在E盘某文件夹下),而F盘里面还有很大的空间。现在要满足这个PHP进程对硬盘空间更进一步的需求。
重新对硬盘分区这事风险太高,把程序停掉卸载重新安装到F盘也动静太大,尽量找到能不干扰正在运行的php进程的方案。
解决方案
如果是在linux系统中,建立一个文件夹软连接即可。对于php程序来说,数据目录仍然在工作目录下面(E盘),但是数据目录里面的文件物理上是存储在被链接的目录里面(F盘)。
linux/mac os系统创建软连接的命令是ln -s src dist
现在问题是在windows系统上,用什么命令创建软连接呢?
我百度到的是mklink,创建文件夹软连接的命令语法是mklink /J dist src
,确实能达到目标:
windows的mklink命令的语法可以到cmd里面输入mklink执行,看提示,和linux的ln命令的src/dist参数顺序刚好相反:
片花
这个技术细节在其他地方有没有应用意义呢?
上面的图片中已经透露了,node和grunt的node_modules目录。
node的非core的toplevel依赖是到当前路径及父目录的node_module文件夹里面搜索,或者是全局$NODE_PATH目录里面查找(看官方文档,还会到$HOME/.node_modules,$HOME/.node_libraries里面找)。
而grunt对node_module文件夹的要求更奇葩,必须在当前目录(运行grunt的目录)里面(grunt文档如是说:Each time grunt
is run, it looks for a locally installed Grunt using node's require() system.
)。
为了避免每次新check out 一个分支到本地运行grunt/node之前,就npm install一次,可以建立一个符号链接node_modules,链接到全局的$NODE_PATH目录,然后就可以执行grunt/node了。
实际上我们这边的前端上线系统就是这么干的,避免每次都去npm仓库下载依赖。
blog comments powered by Disqus