深度学习训练中经常会遇到数据量庞大或者工程中模型报错太多导致磁盘空间不够,但是又不想修改原来在代码中写的路径,这个时候制作软连接很有作用,把占用量大的目录移到别的空闲磁盘,然后在原来的目录做一个软连接指向那个移到的空闲磁盘路径即可;软连接不占用磁盘空间,还可以两边同步修改。
命令:
ln -s 源路径 目标路径
比如:
ln -s /home/nvme0n1/biorec229/disk_nvme1n1_dataset/lishanlu_workspace/mytest /home/nvme0n1/biorec229/lishanlu/project/mytest
就是将后面的路径指向前面的源路径,打开后面路径文件夹mytest,会跳转到前面路径的mytest。
这里要吐槽一下,网上很多文章没写仔细,文件夹路径到底要不要加"/",到底要不要自己创建,都有很大的区别,我自己在这里踩了坑,所以记录一下:
1、目标文件夹mytest不存在的时候,建立软链接的时,目标文件夹后面加"/"是不行的
2、目标文件夹mytest不存在的时候,建立软链接的时,源文件夹后面加"/“或者不加”/"都是可行的,都能达到自动创建目标链接mytest指向源路径目录的目的。这也是推荐的方式
ln -s a b
,要想达到b指向a,那么源路径a文件夹存在,b不能存在。
3、目标文件夹mytest存在时候,建立软链接时,源文件夹后面加"/“或者不加”/“,目标文件夹后面加”/“或者不加”/"都是可行的,但是会在目标文件夹mytest里面创建软链接
#运行下面4条命令都会在目标文件夹mytest里面创建软链接
ln -s /home/nvme0n1/biorec229/disk_nvme1n1_dataset/lishanlu_workspace/mytest/ /home/nvme0n1/biorec229/lishanlu/project/mytest
ln -s /home/nvme0n1/biorec229/disk_nvme1n1_dataset/lishanlu_workspace/mytest /home/nvme0n1/biorec229/lishanlu/project/mytest
ln -s /home/nvme0n1/biorec229/disk_nvme1n1_dataset/lishanlu_workspace/mytest/ /home/nvme0n1/biorec229/lishanlu/project/mytest/
ln -s /home/nvme0n1/biorec229/disk_nvme1n1_dataset/lishanlu_workspace/mytest /home/nvme0n1/biorec229/lishanlu/project/mytest/
4、删除软链接
cd到软链接目录,直接rm 目标目录即可。
比如:
cd /home/nvme0n1/biorec229/lishanlu/project && rm mytest
可以看到即使软链接指向的源路径是一个目录,目标文件夹也不是目录,是一个链接,所以删除用rm,就可以
**注意:网上都说删除软链接目录,后面不能加"/"**,我试了一下会报错,因为mytest/是一个文件夹,我用rm命令删除是不成功的
命令执行失败,软链接还在,目录里面的东西也还在
但是如果我用
rm -rf test/
命令,则会执行成功,而且会把软链接目录里面的东西删除掉,由于两边是同步操作,源路径里面的东西也会被删除
版权归原作者 lishanlu136 所有, 如有侵权,请联系我们删除。