作者的Mac電腦于2014購(gòu)買(MacBook Pro (Retina, 15-inch, Mid 2014))圾旨,當(dāng)時(shí)由于開發(fā)需要經(jīng)常跑虛擬機(jī)趴樱,花了不少銀子升級(jí)成了當(dāng)時(shí)的最高配置擒抛,1T SSD + i7 2.8GHz蔬充。由于當(dāng)時(shí)加了硬盤空間羽莺,作了系統(tǒng)和常用數(shù)據(jù)的分區(qū)灭袁,系統(tǒng)區(qū)給了200GB猬错,按道理應(yīng)該足夠了,但是最近突然出現(xiàn)硬盤空間不足的提醒茸歧,著實(shí)把我給震驚了倦炒。查看電腦關(guān)于,空間統(tǒng)計(jì)里面顯示系統(tǒng)區(qū)竟然占去了120多個(gè)GB软瞎。
因?yàn)轱@示是系統(tǒng)空間占用非常大逢唤,一開始以為是多次系統(tǒng)升級(jí)過程中操作系統(tǒng)的垃圾文件占用了太多的空間(類似windows系統(tǒng)更新文件),因此先是在網(wǎng)上搜索了幾遍涤浇,找了幾個(gè)什么mac電腦清理的常用軟件鳖藕,試完后發(fā)現(xiàn)基本上沒有什么用,除了清理掉一些瀏覽器緩存什么的只锭,系統(tǒng)空間幾乎沒有任何變化著恩。
最后沒有辦法決定一點(diǎn)點(diǎn)探索出來到底是哪些內(nèi)容消耗掉的空間比較多,由于系統(tǒng)空間占用比較多蜻展,因此直接先cd ~/Library進(jìn)入Library目錄喉誊,再用sudo du -d 1 -h命令,查看Library目錄里面哪些內(nèi)容的空間使用理比較大纵顾,系統(tǒng)經(jīng)過一番統(tǒng)計(jì)后伍茄,發(fā)現(xiàn)大的數(shù)據(jù)文件主要是如下一些目錄:
1. Android目錄 ?26GB+
2. Developer目錄 17GB+
3. Container目錄 22GB+
這幾個(gè)目錄就占去了差不多60GB,整個(gè)Library目錄空間80多個(gè)GB施逾。Android目錄里面比較大的文件主要是Android SDK敷矫,Developer目錄里面主要Xcode產(chǎn)生的臨時(shí)文件和iOS模擬器相關(guān)的文件比較大例获,Container是電腦上安裝docker后生成的docker image和container文檔。找到大數(shù)據(jù)的來源后曹仗,就便于對(duì)癥下藥了榨汤,而且這些文件看起來都不是操作系統(tǒng)本身升級(jí)過程中產(chǎn)生的臨時(shí)文檔。
Android是開發(fā)android應(yīng)用時(shí)下載的各個(gè)版本sdk文檔整葡,可以通過將老的一些不用的sdk刪除掉,就清釋放出來了不少空間讥脐。
Developer主要是iOS開發(fā)過程中Xcode產(chǎn)生的相關(guān)文檔遭居,里面又分為三個(gè)目錄,CoreSimulator旬渠、Shared和xcode俱萍,這個(gè)目錄的清理可以在網(wǎng)上搜索一下,很多朋友有這方面的清理經(jīng)驗(yàn)告丢。按照網(wǎng)上的經(jīng)驗(yàn)枪蘑,我是把CoreSimulator和xcode下的iOS Support這兩個(gè)目錄里面的內(nèi)容直接干掉了。這些干掉不影響Xcode的正常使用岖免,重新編譯項(xiàng)目或調(diào)試程序時(shí)會(huì)自動(dòng)再創(chuàng)建相應(yīng)文件岳颇。
Container這個(gè)目錄是由于docker本身的缺陷造成的,當(dāng)pull或本地build鏡像時(shí)颅湘,會(huì)寫數(shù)據(jù)到本地文件Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2话侧,我的電腦上,這一個(gè)文件就有17GB之多闯参。網(wǎng)上有一段腳本可以清理掉本地所有的image和container瞻鹏,并釋放這個(gè)文件的空間,不好地方是他會(huì)將電腦上的image都清理掉(也可以自己先定義IMAGES系統(tǒng)變量鹿寨,保存需要留存的)新博。具體代碼如下(也可以在網(wǎng)絡(luò)上搜索到):
#!/bin/bash
# Copyright 2017 Théo Chamley
# Permission is hereby granted, free of charge, to any person obtaining a copy of
# this software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
# to whom the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all copies or
# substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
IMAGES=$@
echo"This will remove all your current containers and images except for:"
echo${IMAGES}
read-p"Are you sure? [yes/NO] "-n 1 -r
echo# (optional) move to a new line
if[[!$REPLY=~^[Yy]$ ]]
then
exit1
fi
TMP_DIR=$(mktemp -d)
pushd$TMP_DIR>/dev/null
open -a Docker
echo"=> Saving the specified images"
forimagein${IMAGES};do
echo"==> Saving${image}"
tar=$(echo -n${image}|base64)
docker save -o${tar}.tar${image}
echo"==> Done."
done
echo"=> Cleaning up"
echo-n"==> Quiting Docker"
osascript -e'quit app "Docker"'
whiledocker info>/dev/null2>&1;do
echo-n"."
sleep 1
done;
echo""
echo"==> Removing Docker.qcow2 file"
rm~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
echo"==> Launching Docker"
open -a Docker
echo-n"==> Waiting for Docker to start"
untildocker info>/dev/null2>&1;do
echo-n"."
sleep 1
done;
echo""
echo"=> Done."
echo"=> Loading saved images"
forimagein${IMAGES};do
echo"==> Loading${image}"
tar=$(echo -n${image}|base64)
docker load -q -i${tar}.tar||exit1
echo"==> Done."
done
popd>/dev/null
rm -r${TMP_DIR}
至此,執(zhí)行了上面的三個(gè)清理后脚草,整體個(gè)Library目錄中的空間釋放出來了將近60GB赫悄,再查看系統(tǒng)空間的占用,由120多GB降到了70GB多一點(diǎn)馏慨。
以上是個(gè)人清理Library目錄的一個(gè)過程記錄涩蜘,希望能夠?qū)Υ蠹乙材軌蛴兴鶐椭@里的關(guān)鍵是使用du -d 1 -h查找出來電腦中空間比較的數(shù)據(jù)來源熏纯,然后再針對(duì)性一個(gè)個(gè)清理同诫。筆者清理完成這幾個(gè)目錄后,釋放出來的空間足夠用一陣子了樟澜,因此也就沒有再進(jìn)一步處理其它大文件误窖,大家也可以使用此命令找出自己電腦上比較大的文件叮盘,然后再針對(duì)性處理。