sjchen 发表于 2023-10-24 22:38

没啥玩的了:创建Ramdisk用于存储临时文件(抄来的呵呵)

现在配一台式机经常内存搞到128G,弄出一点来做个Ramdisk,将临时文件放在这里。先上代码:
# Set Ramdisk size, unit (MB)
SIZE=2048
# Disk name
DISKNAME=Ramdisk
# Get home folder path
HOME_DIR=$(cd ~;pwd)
# List of folders to be transferred to Ramdisk
declare -a PATH_LIST=("Library/Caches/Google" "Library/Caches/Homebrew")
# List of empty folders to create
declare -a EMPTY_PATH_LIST=("LaTeXTEMP" "Screenshot" "TEMP")
# Create a Ramdisk when it does not exist
if [[ ! -d /Volumes/${DISKNAME} ]]; then
      DISK_ID=`hdiutil attach -nomount ram://$(( ${SIZE} * 1024 * 1024 / 512 ))`
      diskutil partitionDisk $DISK_ID GPT APFS "${DISKNAME}" 0
fi
# Write the process of transferring folders as a function
create_symbolic_link(){
      if [[ ! -d /Volumes/${DISKNAME}/${HOME_DIR}/${LINK_PATH} ]]; then
                mkdir -p "/Volumes/${DISKNAME}/${HOME_DIR}/${LINK_PATH}"
      fi
      if [[ -d ${HOME_DIR}/${LINK_PATH} ]] && [[ ! -h ${HOME_DIR}/${LINK_PATH} ]];then
                rm -rf "${HOME_DIR}/${LINK_PATH}"
      fi
      if [[ ! -h ${HOME_DIR}/${LINK_PATH} ]];then
                ln -s "/Volumes/${DISKNAME}/${HOME_DIR}/${LINK_PATH}" "${HOME_DIR}/${LINK_PATH}"
      fi
}
# Write the process of creating an empty folder as a function
create_empty_folder(){
      if [[ ! -d /Volumes/${DISKNAME}/${EMPTY_FOLDER} ]]; then
                mkdir -p "/Volumes/${DISKNAME}/${EMPTY_FOLDER}"
      fi
}

# Move to Ramdisk disk
cd /Volumes/${DISKNAME}

# Move folders according to list contents
for LINK_PATH in "${PATH_LIST[@]}";
do
      create_symbolic_link ${LINK_PATH}
done

# Create an empty folder based on the list content
for EMPTY_FOLDER in "${EMPTY_PATH_LIST[@]}";
do
      create_empty_folder ${EMPTY_FOLDER}
done
上面代码将Chrome和Homebrew的Cache转移到Ramdisk。将代码存为createRamdisk.sh,建立一个文件夹/usr/local/ramdisk,将它扔到这里。
sudo mkdir /usr/local/ramdisk
sudo mv ~/Desktop/createRamdisk.sh /usr/local/ramdisk登陆时启动,创建一个local.ramdisk.plist文件
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
      <dict>
                <key>Label</key>
                <string>local.ramdisk</string>
                <key>ProgramArguments</key>
                <array>
            <string>/usr/local/ramdisk/createRamdisk.sh</string>
      </array>
                <key>RunAtLoad</key>
                <true/>
      </dict>
</plist>
设置权限和登陆启动
cp ~/Desktop/local.ramdisk.plist ~/Library/LauchAgents用sublime text 写文档,空文件夹LaTexTEMP用于存储编译时的临时文件,在LaTeXTools中设置
"output_directory": "/Volumes/Ramdisk/LaTeXTEMP",
这样用sync软件不需要同步没用的中间文件。

james02100 发表于 2023-10-25 10:16

谢谢分享!楼主能不能加一此操作步骤的图片进来?因为我看到【登陆时启动,创建一个local.ramdisk.plist文件
】这里时就不知道怎么处理下面的代码了......

wxaqua 发表于 2023-10-25 10:26

虽然我没那么大内存,不过收藏一下还是值得的,说不定就能用上呢{:9_364:}

james02100 发表于 2023-10-25 10:38

请问楼主的代码建成的Ramdisk有多大?比如我想建一个8GB大小的Ramdisk,请问怎么修改代码?谢谢

samsum 发表于 2023-10-25 12:58

目测代码第二行,2048mb=2g

devilma 发表于 2023-10-25 13:10

学习了,谢谢楼主提供

hc_5120 发表于 2023-10-26 11:58

感谢分享!!!
小手一抖,积分到手

superxgz 发表于 2023-10-26 14:41

应该是 ~/Library/LaunchAgents 吧

superxgz 发表于 2023-10-26 15:43

本帖最后由 superxgz 于 2023-10-26 15:55 编辑

哦, 没问题
页: [1]
查看完整版本: 没啥玩的了:创建Ramdisk用于存储临时文件(抄来的呵呵)