@梁宇轩10年前

08/1
21:28
技术笔记

Windows下利用軟鏈接節省系統盤空間

近來打osu!成癮,Beatmaps越下越多,osu!又不慎裝在系統盤,眼見系統盤掛起了紅燈,心情比較鬱悶。其實除去Beatmaps,osu!本體只有154MB,但我下載的Beatmaps已經有2.47GB了。

#02-01

移走Songs目錄後osu!目錄

想起之前看過利用軟鏈接(維基百科)無縫轉移文件出系統盤的文章,決定使用這種技術來轉移文件。

2013.08.05更新:經OX提醒憶起osu!確實可以直接移動,但是最好移動完成之後運行一次,似乎會自動修復文件關聯和快捷方式。

Google了一下,發現Windows Vista及以上的系統是可以直接使用系統自帶的命令mklink來建立軟鏈接的。而Windows 2000及以上的系統就已經支援軟鏈接了,可以使用Mark Russinovich開發的Junction(下載地址[英語])。不過需要注意的是,Windows下軟鏈接只能用在NTFS格式的分區上

零、前期準備

無論是使用mklink還是使用Junction,都需要前期準備。如果osu!正在運行,則需要先退出,然後將Songs目錄移動到有空餘空間的地方。

一、使用mklink建立軟鏈接

接下來以管理員身份打開命令提示字元,否則會不夠權限。然後使用cd命令進入osu!的安裝文件夾。最後執行以下命令。

mklink /J Songs "Target"

將其中的Target替換為前面Songs目錄剪切到的地方的絕對路徑。例如將Songs目錄剪切到了E盤根目錄下,並且改名成”osu beatmaps”,那麼就執行下面這個命令。

mklink /J Songs "E:\osu beatmaps"

完成以後,你會發現osu!安裝目錄下有一個像捷徑的東西。

#02-02

完成以後

但是雙擊打開就會發現,這裡直接鏈接到了剪切到的那個目錄,而且與原來的Songs目錄完全一樣。至於那個箭頭完全不用管它,這個軟鏈接目錄與普通的文件夾使用方面沒有區別,但不會佔用系統盤的空間。 如果要刪除軟鏈接目錄,只需按普通刪除方式刪除即可。

二、使用Junction建立軟鏈接的方法

下載完Junction後,推薦解壓到Windows\System32下,這樣會比較方便。然後打開命令提示字元,使用cd命令進入osu!的安裝文件夾,輸入以下命令。

junction Songs "Target"

將其中的Target替換為前面Songs目錄剪切到的地方的絕對路徑。例如將Songs目錄剪切到了E盤根目錄下,並且改名成”osu beatmaps”,那麼就執行下面這個命令。

junction Songs "E:\osu beatmaps"

首次使用Junction的時候會彈出一個許可協議,同意之後才能繼續。

#02-03

彈出的許可協議

在Windows XP下,軟鏈接文件夾與普通文件夾沒有任何區別,而且直接刪除軟鏈接目錄的時候還會刪除裏面的文件。如果要移除軟鏈接,則要使用下面這個命令,這樣移除軟鏈接的時候就不會丟失文件。

junction -d Songs

四、技術介紹

完成了有目的的教程之後,接下來來介紹一下這兩個命令。

1.mklink

mklink是Windows Vista及以上系統自帶的命令,除了軟鏈接以外,還可以建立硬連接。

#02-04

mklink命令的說明

若原命令中的/J換成/D或者/H,可以建立不同形式的鏈接,之間的區別點擊這裡(英文維基百科)。

2.Junction

Junction是由用Mark Russinovich開發的工具,開發的原因就是當時Windows平臺上沒有一個建立軟鏈接的工具,最後在Windows Vista被微軟吸收了。

命令的使用方法十分簡單,除了新建和刪除軟鏈接以外,還有查看目錄下的有什麼軟鏈接,因為當時dir命令還不能幹這個,加上一個-s參數和一個文件路徑就可以了,如果要查看osu!安裝目錄下的軟鏈接,可以執行下面的命令。

#32位系統
junction -s "C:\Program Files\osu!"
#64位系統
junction -s "C:\Program Files (x86)\osu!"

利用這兩個利器,可以大量減輕系統盤負擔,不僅僅是osu!的Beatmaps,還能移走更多的東西,因為完全是無縫的,所以不用擔心出現什麼找不到文件的情況。

Windows下利用軟鏈接節省系統盤空間

  1. 吐槽:
    A.“进来打OSU!成瘾”
    1.错字
    2.不和我玩osu,差评!
    B.Linux也有类似功能哦,基本都是自带哦
    C.其实osu可以直接剪切黏贴,基本属于绿色软件。
    D.终于更新了!!
    以上,吐槽完毕,收档!

    回复
    1. 梁宇軒 文章作者

      A.這個前言是7.15的時候敲的 然後各種各樣奇奇怪怪的事情就出現了 QAQ
      B.Linux下本來就有(ln)但是文章總要有個目的嘛~
      C.想起也是,之前有過這樣的經歷,寫進文章裏。
      D.不予置評

      回复