複製 Time Machine 映像檔

[華語, cmn-Hant-TW]

因為某些原因,要把遠端的 Time Machine 備份映像檔的內容複製到另一個映像檔。原本的映像檔是用這篇提到的方法生出來的,複製的目標則是系統自己產生的映像檔,兩個主要的差別是原來的大小寫沒差,而系統產生的大小寫有別。也因為這樣的差異,不能用系統內建的磁碟工具程式來複製,因為磁碟工具程式對拷時兩邊的大小寫設定要一樣。啊如果是把兩個映像檔分別掛載用 cp 或是 rsync 複製呢?是可以複製啦,但是目標磁碟一下就被灌爆了,因為 Time Machine 裡面有一堆神秘的 hard link,cp 跟 rsync (至少 10.6 內建的不行,不然就是我參數下不對) 都不能正確處理,複製過去後通通被當作不同的檔案,被灌到滿出來也只是剛好。

之前都用 CarbonCopyCloner 在複製硬碟,所以想說這情況 CCC 能不能處理,結果 CCC 完全無視 Time Machine 的備份目錄,所以也是沒辦法。後來試了一下 SuperDuper! 這個備份軟體,整顆複製是沒問題,但這模式會把目標磁碟清掉連大小寫設定都複製來源磁碟,所以要換大小寫的話,就只能掛載後用 Copy different files 的選項來複製,而這個選項是付費版的功能,要用的話也只就能乖乖付錢了,不過他是真的可以正確處理 Time Machine 硬碟,這錢付下去還算是值得。

附帶一提,複製過去的 Time Machine 備份使用上大致上是沒啥問題,也可以進去撈資料,但是一開始有遇到備份到停不了,一直不斷在整理,按取消鍵後又看似有備份成功。查了一下 log 發現跟 fseventsd 有關,而且是備份完之後才跑的所以其實真的是有備份成功,不過也懶得去深究原因了,索性把所有的 .fseventsd (包括根目錄 跟 Time Machine 上的,因為我不知道是哪邊出錯) 通通砍掉,重開機讓系統重新去建立,後來就沒遇到這個問題了。原因還是不明,也不一定是 Time Machine 複製造成的,不過問題解決了就是。

Posted in Mac. Tags: , . No Comments »

Time Machine 備份掛點

[華語, cmn-Hant-TW]

Time Machine 跑一跑突然跳出來說無法備份,查了一下 /var/log/system.log 發現長這樣 (重點部位打馬賽克)

May 24 14:04:52 Panther com.apple.backupd[25334]: Starting standard backup
May 24 14:04:52 Panther com.apple.backupd[25334]: Attempting to mount network destination using URL: smb://whsyu@10.9.1.120/backup_panther
May 24 14:04:56 Panther com.apple.backupd[25334]: Mounted network destination using URL: smb://whsyu@10.9.1.120/backup_panther
May 24 14:04:56 Panther com.apple.backupd[25334]: Backup verification failed for image /Volumes/backup_panther-1/Panther_${MAC_ADDR}.sparsebundle!
May 24 14:04:56 Panther com.apple.backupd[25334]: Error 513 changing immutability for /Volumes/backup_panther-1/Panther_${MAC_ADDR}_2010-05-24-140456.sparsebundle
May 24 14:04:56 Panther com.apple.backupd[25334]: Unable to make /Volumes/backup_panther-1/Panther_${MAC_ADDR}_2010-05-24-140456.sparsebundle immutable!
May 24 14:04:56 Panther com.apple.backupd[25334]: Creating disk image /Volumes/backup_panther-1/Panther.sparsebundle
May 24 14:04:58 Panther com.apple.backupd[25334]: Error -5000 creating backup disk image
May 24 14:04:58 Panther com.apple.backupd[25334]: Failed to create disk image /Volumes/backup_panther-1/Panther.sparsebundle, status: -5000
May 24 14:05:03 Panther com.apple.backupd[25334]: Backup failed with error: 20
May 24 14:05:03 Panther com.apple.backupd[25334]: Ejected Time Machine network volume.

這個映像檔是放在遠端透過 smb 連線,所以 backupd 會自動嘗試掛載,然後似乎是因為映像檔檢查失敗所他嘗試要做一些處理來修復,結果修不好就噴錯誤訊息了。而且不只是噴錯誤訊息,連映像檔的檔名都被改了,看起來像是附加時間標記,應該是做到一半爛掉吧。

備份是放在一台 FreeBSD 的某個 zfs 磁碟上,因為有做每日的 snapshot,所以試著從之前幾天的備份撈看看,錯誤依然存在;先人工 fsck 再讓 Time Machine 讀,結果還是一樣,最後就決定直接去碰映像檔裡面看看有沒有什麼地方可以動的。

雖然說 .sparsebundle 在 Finder 下看到是一個映像檔,不過其實底層就跟 .app 一樣只是一個目錄,也因此要看內容很方便,只要切到目錄內即可。 經過了一些嘗試發現裡面有一個檔案叫 com.apple.TimeMachine.MachineID.plist 裡面有記錄一些前次備份的資訊,包括驗證結果等等 (從檔案內的 xml 標記來猜測)。 對照錯誤訊息的紀錄可看出 backupd 幾乎是瞬間判定驗證失敗,那就很有可能是直接參考這個檔案後立刻做出反應。 把這個檔砍掉之後開 Time Machine 再叫他備份一次,果然這次 backupd 就乖乖的重新跑 fcsk_ufs 來驗證,驗證完之後又可以正常備份了。

在測試的過程中 zfs 的 snapshot 幫了不少忙,因為在試這個檔案之前有先惡搞映像檔內的其他檔案過,結果當然是失敗了,不過一失敗後就立刻用 zfs rollback 把實驗前剛打的 snapshot 還原回來重測別的檔案,這個回溯幾乎是瞬間完成,省了不少時間跟指令。

Posted in Mac. Tags: , . 2 Comments »

Time Machine 備份間隔設定

[客家話, hak-Hant-TW]

參考這篇,當簡單。開 Terminal 用 root 身份下這道指令:

defaults write /System/Library/LaunchDaemons/com.apple.backupd-auto StartInterval -int 7200

就變作 7200 秒、2 點鐘了 ( 預設是 3600秒、1 點鐘)。

Posted in Mac. Tags: . No Comments »

升級到 iPhone OS 3.1.3

[華語, cmn-Hant-TW]

上次升到 3.1.2 的時候是用 blackra1n 破解的,破解過程很簡單不過每次從待機狀態叫醒時總是會卡卡的,當然了也不能確定是不是真的就是 blackra1n 造成的,只是說之前用 dev-team 的破解方式都沒有這種感覺就是,所以就有計畫在新版出來的時候給他回去用 dev-team 的解決方案試看看。

這次 3.1.3 出來目前除了沒鎖的老機器外大家都不建議急著升,新的 iPhone 3GS 跟 iPod Touch 3G 亂升會有再也無法破解的風險 (雖然我相信新破解的出現只是時間的問題)。啊我的剛好就是老機器也沒鎖,備份完之後就拿 dev-team 的新版 PwnageTool (3.1.5) 來玩看看,反正真的不能用的話大不了再降回去 3.1.2 即可。

這次回去用 PwnageTool 的第一件事就是要再跑一次 DFU 模式把鳳梨開機畫面叫回來 (因為前一版用 blackra1n 破的方式不是走這條路,所以開機的時候還是原來那顆閃亮亮的蘋果)。接著做特製軔體、然後用 iTunes 寫入後再從備份復原,最後用 AptBackup 把 cydia 的軟體安裝回去…… 步驟沒啥變,不過最後跑完 AptBackup 之後就當在開機畫面了,而且試了兩次都是這樣,所以就放棄還原 cydia 的部份,最後再手動安裝來補齊。

大部分的程序之前都有實際走過,包括回復原先的 ssh, tcsh… 等,所以沒遇到太大問題,裝了比較重要的幾個 App 例如 MobileLog 等就先試玩看看還會不會頓,感覺似乎真的有比較順? 希望不是心理因素。

附帶一提,這次在試 AptBackup 的時候一度誤刪了最近的一個有內容的備份,還好 Time Machine 一直有開所以直接用那個很炫的挖出幾個小時前的備份,重開 iTunes 後那個備份又活過來了,整個過程(包括 google 備份是塞在哪)費時不超過五分鐘。第一次感覺到 Time Machine 的好用,相當感動!

手動 fsck Time Machine 映像檔

[華語, cmn-Hant-TW]

今天早上用 MacBook Pro 的時候覺得系統頓頓的,開 Activity Monitor 一看原來是有一個 fsck_hfs 的程序正在狂吃記憶體跟 CPU,接著查 log 發現他是在 fsck /dev/disk1s2 …… 啊咧我明明只有一顆硬碟那個 disk1 是從哪冒出來的啊?

再測試了一些東西之後我猜應該是和 Time Machine 有關,因為只要強制砍掉 backupd 這個程序之後 /dev/disk1 就會消失,所以很明顯的這個 /dev/disk1 是對應到 Time Machine 的磁碟映像檔, 在 Time Machine 開始備份之前會經過某道神祕的程序把磁碟映象檔「加」到 /dev 裡面,然後才開始備份,而這個 fsck_hfs 應該就是在這道神祕程序中被叫起來的,既然是卡在執行 fsck_hfs 這個程式的時候,那當然就要手動來跑一下看是什麼情況。

這個討論串裡有講到要手動加上 Time Machine 的 sparsebundle 映像檔 (從底層來看他實際上是一個目錄而非檔案) 的方法,首先要執行 hdiutil,假設此檔名為 $image_name,系統對應到 /dev/disk1 (hdiutil 會告訴你他對應到哪個節點):

hdiutil attach -nomount -readwrite $image_name.sparsebundle

然後再執行 fsck_hfs:

fsck_hfs -f /dev/rdisk1s2

這樣就可以看到他跑的過程了,看起來程式執行上是沒啥問題,可能是因為檔案超大所以吃爆多資源而且要掃很久才會有掛掉的錯覺,事實上他是很認真的在 fsck 的啊!

Posted in Mac. Tags: , , . No Comments »

Time Machine over Samba share

[華語, cmn-Hant-TW]

嘗試用遠端 samba 分享的目錄跑 Time Machine 的時候吃到沒辦法建立備份映像檔的錯誤,用 Console.app 看了一下錯誤訊息長這樣:

/System/Library/CoreServices/backupd[40100]: Error 45 creating backup disk image

直接連到那個目錄下發現了映像檔做到一半的痕跡,所以似乎是跑一半不知道什麼原因失敗,而不是完全連不到,那問題就比較好解決 – 用 hdiutil 手動來建立即可。檔案名稱的格式是”電腦名稱_macaddress.sparsebundle“。其實就直接參考 Time Machine 做爛掉的那個檔案名稱就好了,這樣比較省事。接著就開 Terminal 切換到那個目錄下執行這個指令:

hdiutil create -size 100G -fs HFS+J -type SPARSEBUNDLE Pighead_00112233445566.sparsebundle

這樣就替 MAC Address 00:11:22:33:44:55:66、名字叫 Pighead 的機器建好一個 100G 的備份映像檔了。要注意的是 sparsebundle 實際上是一個目錄,所以用 Terminal 看的話其實會看到 hdiutil 產生了一個目錄,這是正常現象,用 Finder 看他就會像是一個映像檔了。

設好之後再把 Time Machine 打開他就會直接用這個建好的映像檔備份。附帶一提,用這種方式建立的映像檔掛載後在 Finder 顯示的名稱會是 untitled,看不爽的話用一般的方式改名稱即可不會影響他備份的功能。

Posted in Mac. Tags: , , . 1 Comment »

Time Machine, SMB mount

[華語, cmn-Hant-TW]

看到了 Apple 新發表了 時空小藥丸 Time Capsule ,就想說也來備份一下吧。結果發現原來 Apple 有設限制, 不給人用網路芳鄰(SMB)當備份磁碟,大概是怕用 windows 分享出來的磁碟會有些不相容的問題,所以就擋掉了吧。

 啊還是得想辦法走網路用 samba 啊,不然備份筆記型電腦還要一直拿外接硬碟實在太累人了。在網路上找了找發現這個討論串有講到解鎖的方法,其實也蠻簡單的,下個指令就可以了。

defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

然後重開系統偏好設定,果然就看到 SMB 磁碟,這樣就可以把備份丟到伺服器上去了。

Posted in Mac. Tags: , , . 3 Comments »