作为一个不是很细心的人,以前我一直以为替身和 symlink 是一个东西,而且 OS X 系统也很明确地告诉我,他俩的文件名都为替身,曾经试过用替身将系统文件链接出来,但都没成功,后来就没再研究了,直到这两天强迫症又犯了,看到 SSSSSSSD 的空间不断缩小缩小缩小,想着这其中有许多奇奇怪怪的应用程序我也不常用,但就是占地方,比如 Xcode。在替身的指引下,我又研究了 symlink:
关于这个 Symbolic Link 和普通 替身 也就是快捷方式的区别,这里说一下。
创建替身是 hard link (硬链接),实际上是为文件建一个别名。链接文件和原文件实际上是同一个文件。
symbolic link 建立的是一个指向,即链接文件内的内容是指向原文件的指针。它们是两个文件。
hard link 只能用于文件,不能用于目录;symbolic link 可以为目录建链接。
hard link 不能跨文件系统操作;symbolic link 连接的是文件名,可以跨文件系统建立连接。
这个解释说了半天还是让人一头雾水,简单地说,你把系统文件迁移到别的位置,再建立一个替身放回原来的目录,不可行!建立一个 symlink 放回原来的目录,可行!
于是在 symlink 的指引下,我开始对系统文件进行搬迁操作。首批搬迁的几个大文件有:
/usr/local/texlive/2013
/Library/Application Support/Adobe
/Users/Boyux/Library/Caches
,这个目录我选择放在了 RamDisk 里,省得自己清理- 更新:
/Users/Boyux/Library/Application Support/com.evernote.Evernote
- 更新:
/Users/Boyux/Library/Mail/V2
后来我不满足于 symlink 搬迁,由于我是 SSD+HDD 手动管理的结构(早就不用 FusionDrive 了),属于活在 SSD,吃在 HDD 的模式,这其中的一个问题在于,默认的 Home 目录(也就是那些文稿图片下载目录)放在 SSD 中,许多程序默认调用的目录也都在这个 Home 目录下,但基本上这些数据性文件我都会放到 HDD,通知由于 Home 目录无法编辑,你一编辑系统就提示 OS X 需要这些文件
,连管理员权限都不行。我一直都想把 Home 目录迁移走,至于为什么到现在才完成这事儿,主要还是因为我懒…
搬迁的几个问题有:
- Library 目录的迁移,这个用 symlink 可以解决;
- 一些程序内有指向性目录的目录变更问题,比如我的三个网盘,尤其以 Dropbox 最为抽风,在更换 Home 目录之后,Dropbox 会直接报错,还不给你修复选项,Google 后发现需要删除home目录下的
.dropbox
文件,这是一个隐蔽文件…而百度云和坚果云只需重新定位一下目录文件即可 - 原来建立的 symlink 由于原始文件变更,原来的 symlink 们都失效了,得把他们找出来删除换上新的 link。
这其中有一个小插曲,起初转移的三个文件夹中,那个 2013
文件夹,我只记得是在 texlive
文件夹下,但具体在哪个目录我给忘了,翻遍整个系统目录,又用 cleanmymac 审查了 tex 的相关文件都找不到,后来一翻 simple note,发现自己当时在转移这个文件的时候随手记下了路径,瞬间有种想为自己点赞的冲动,看来习惯记笔记是好事啊,自己有一个好习惯→_→。
但是现实总是有些阻碍,比如我在设置默认截图路径的时候,
defaults write com.apple.screencapture ~/Pictures/Capture
由于我的 HDD 名字里带有 (
符号,导致命令行里一直出现错误,虽然总觉得能有解决方法,但是为了方便,我直接把磁盘名中括号都去了,结果这一去,程序们又不识别路径了,只能在账户设置里重新指定一下 Home 目录(然后又得和三大网盘抗争一番)。
更改 home 目录或者 home 文件夹名称的方法可参考我的另一片博文:
目前我的系统已经不会瞎闹腾了,一切都趋于良好,只是在其他软件都正常快速工作的时候,我的 Simple Note
在打开速度上总是慢半拍,想了一下,它的文件存储路径应该还是在 SSD 上,为何打开速度会这么慢…
关于优化 SSD,这里简略地罗列一下
开启 Trim
我用的 Trim-Enabler
变更睡眠模式
sudo pmset -a hibernatemode 0
然后在桌面新建一个空白无后缀文本文件 sleepimage
,进入 /var/vm
目录,将桌面的 sleepimage
覆盖到 /var/vm
路径中,然后按 cammand+i
将锁定选项勾上,防止系统更改。这能为 SSD 腾出至少 5GB 的空间。
关闭 time machine 本地备份
sudo tmutil disablelocal
禁用虚拟内存
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist sudo rm /private/var/vm/swapfile*
更新:由于一些众所周知的原因,我又开启了虚拟内存→_→
用 `noatime` 方式挂载 SSD
在桌面新建 com.SSD.noatime.plist
文件,用文本编辑器打开后贴上:
Label com.SSD.noatime ProgramArguments mount -vuwo noatime / RunAtLoad
保存后在终端输入:
sudo mv ~/Desktop/com.SSD.noatime.plist /Library/LaunchDaemons/ sudo chown root:wheel /Library/LaunchDaemons/com.SSD.noatime.plist
然后重启,在终端输入 mount
,查看 ssd 后的状态是否为 noatime
觉得有必要的,可以添加 RamDisk
打开 AppleScript 编辑器,输入
do shell script " if ! test -e /Volumes/RamDisk ; then diskutil erasevolume HFS+ RamDisk `hdiutil attach -nomount ram://$((2*1024*1024*2))` mkdir -p /Volumes/RamDisk/Chrome/Cache mkdir -p /Volumes/RamDisk/Safari/Cache mkdir -p /Volumes/RamDisk/Library/Caches fi "
创建 2G 的 ramdisk,并在 ramdisk 中创建三个缓存目录,保存为应用程序
,添加到启动项既可。重启后,将三个缓存目录分别建立 symlink 到各个 chrome、safari 和 library 的缓存路径就可以了。
Chrome: ~/Library/Caches/Google/Chrome/Default Safari: ~/Library/Caches/com.apple.Safari Library: ~/Library/Caches
当然,一般来讲当把整个 caches 目录搬进 ramdisk 就无需单独设置浏览器缓存了。
大概就这些了…等想起来再补充
突然想到,这么一来,time machine 的备份中就会出现奇奇怪怪的 symlink 链接,然后如果我要换电脑或者重装系统这些链接就会失效,然后就……
算了,用一天 Mac 当一天果粉,没准明天就换 Windows 了呢…