還記得以前在Windows上使用過Ramdisk來將32位系統不能識別的內存轉成磁盤,存放臨時文件什麼的。突發奇想在Mac是否是也能用內存來放Cache呢?雖然有SSD,可是考慮到壽命問題,加上速度,內存盤也仍是頗有優點的。html
找了一下,最簡單的方法是下載一個APP,或者執行下面的腳本:緩存
bashdiskutil erasevolume HFS+ RamDisk `hdiutil attach -nomount ram://$((2*1024*1024*2))`
可是這樣並不夠優雅,很容易不當心就把RamDisk給Eject了,有尋思了一番,決定採用腳本形式,並且是建立隱藏的RamDisk,同時支持註銷自動備份~事不宜遲,立刻動手。bash
在/etc/
下建立Ramdisk
目錄,用來存放相關文件app
建立/etc/Ramdisk/initramdisk.sh
code
bash#!/bin/sh # 設置內存盤的名稱 DISK_NAME=RamDisk MOUNT_PATH=/Volumes/$DISK_NAME # 設置備份文件的保存路徑 WORK_PATH=/etc/Ramdisk BAK_PATH=$WORK_PATH/$DISK_NAME.tar.gz # 設置分配給內存盤的空間大小(MB) DISK_SPACE=1024 # 建立Ramdisk if [ ! -e $MOUNT_PATH ]; then dev=`hdid -nomount ram://$(($DISK_SPACE*1024*2)) | cut -d' ' -f1` partition=${dev}s1 rdev=`echo $dev | sed -e 's/disk/rdisk/'` rpartition=`echo $partition | sed -e 's/disk/rdisk/'` echo y | fdisk -ia hfs $dev newfs_hfs -v $DISK_NAME $partition hdiutil mount -nobrowse $rdev hdiutil mount -nobrowse $rpartition fi # 恢復備份 if [ -s $BAK_PATH ]; then tar -zxf $BAK_PATH -C $MOUNT_PATH fi
建立/etc/Ramdisk/syncramdisk.sh
htm
bash#!/bin/sh # 設置內存盤的名稱 DISK_NAME=RamDisk MOUNT_PATH=/Volumes/$DISK_NAME # 設置備份文件的保存路徑 WORK_PATH=/etc/Ramdisk BAK_PATH=$WORK_PATH/$DISK_NAME.tar.gz LISTFILE=$WORK_PATH/list # 設置最大的cache大小(MB) MAX_CACHE_SIZE=50 # 備份Ramdisk內容,超過50M的目錄直接再也不保存 cd $MOUNT_PATH declare -a fa i=0 for file in $(du -s Caches/* | sort -n) do fa[$i]=$file let i=i+1 done size=$((i/2)) echo "file number:"$size cd $WORK_PATH echo ".?*">$LISTFILE for((i=0;i<$size;i++)) do if ((${fa[$((i*2))]}<(($MAX_CACHE_SIZE*1024*2)) ));then echo "add:"${fa[$((i*2+1))]} else echo ${fa[$((i*2+1))]}>>$LISTFILE fi done if [ -e $MOUNT_PATH ] ; then cd $MOUNT_PATH tar --exclude-from $LISTFILE -czf $BAK_PATH . fi
在終端下執行:blog
bash# 登陸時執行initramdisk.sh defaults write com.apple.loginwindow LoginHook /etc/Ramdisk/initramdisk.sh # 註銷時執行syncramdisk.sh defaults write com.apple.loginwindow LogoutHook /etc/Ramdisk/syncramdisk.sh
在終端下繼續執行:內存
bash# 刪除Cahces rm -rf ~/Library/Caches # 在RamDisk建立Caches目錄並連接 mkdir /Volumes/RamDisk/Caches ln -s /Volumes/RamDisk/Caches ~/Library/Caches
bashmv ~/Library/Application\ Support/Google/Chrome /Volumes/RamDisk/ ln -s /Volumes/RamDisk/Chrome ~/Library/Application\ Support/Google/Chrome
其餘須要移到RamDisk的東西也能夠如法炮製。get
原文連接:http://blog.yourtion.com/mac-use-ramdisk-accelerate.htmlit