怎样像 Time Machine 一样备份

感觉自己有点像标题党。不过无论怎样,在弄坏了两块硬盘之后,必须要有一个重视备份的态度了。
在 OS X 上,最简单方便的备份工具应该是 Time Machine 了。但问题还是有的,我事实上是个 control freak,这点导致我觉得坐等 Time Machine 备份,我自己连手都插不上有点别扭。再加上总是要插上外置硬盘,还是很麻烦的。以上原因,我觉得还是另辟它径吧。
提起备份,很多人会去找漂亮的备份程序,其实不必。rsync 就是一个足够强大的备份工具,在功能上它甚至强大到可以完全取代 Time Machine。下面是我的备份脚本,*nix 系统都通用。Windows 系统的话,可以通过 Cygwin 来达到同样的效果。
#!/bin/sh date=`date "+%Y-%m-%d-%H%M%S"` rsync -avzP --delete --size-only --exclude .DS_Store --exclude .Trash --exclude .svn --exclude Library/Caches --exclude .bzr --exclude Library/Logs --exclude Library/Application\ Support/SyncServices/ --link-dest=/Volumes/DATA/backup/current /Users/michael /Volumes/DATA/backup/back-$date rm /Volumes/DATA/backup/current ln -s /Volumes/DATA/backup/back-$date /Volumes/DATA/backup/current
上面的脚本中,/Volumes/DATA 是一个外接的硬盘。Basically 这个脚本就是把本地硬盘上的东西备份到外接硬盘上。
这个脚本的关键就是 *nix 系统下的 hard link,所谓 hard link,就是一个指向存储介质的指针。可以有 N 个指针指向同一块硬盘上的内容,除非删除所有的指针,否则内容还是会被保留。rsync 中的 –link-dest 参数就是如此作用,如果有与目前备份内容一致的,不需要拷贝,只需要建立 hard link 就可以了。这样整个备份可以省时间省存储空间。每次的备份文件都是按备份时间保留的,由于是 hard link,虽然经常备份,但实际上占用的存储空间并不大。我的感觉,只需要有一块比要备份硬盘大1.5倍的硬盘,就可以随心所欲的备份了。