Time Machineバックアップを引っ越したくて、公式の方法に従ったがこれはできない。
Finderで「Backups.backupdb」をコピーしろとあるが、(Mojaveでは?)ハードリンク が実データのコピーとされてしまっているのか時間も容量も要する。具体的には、
- 残り5秒からx GB / y GBの表示が分子も分母も増大するというEndless Rain
- 当然転送先に収まらないため、さんざん待たせた挙句の果てがエラー
しかしながら、以下の記事に助けられ、無事成功…と思ったが、
移行できるにはできたのだが、ほとんどのフォルダが参照先不明のエイリアスになっていた。lsで見ると、パーミッション444、所有者が謎のユーザ(7桁の数字)、サイズ0のファイル。確認したら書き出したディスクイメージの時点でそうなっていた。
(記事を書いてしまったので)次なる挑戦者のためにやったことや参考記事を残しておこうと思う。
方法
1. 転送先ディスクの容量に収まるよう、ディスクユーティリティで転送元ディスクのパーティションサイズを縮小する。空きも含めて転送するので、実際にバックアップされている容量は関係ないし、縮小した方が早く終わる。
2. ディスクユーティリティで転送元ディスクの番号(diskxまたはdiskxsy)を確認する。
3. 以下のコマンドで、一度ディスクイメージに書き出す。
$ sudo dd if=/dev/rdiskxsy of=/path/to/image.img bs=16m
rdisk
は誤植ではない。キャッシュサイズ16mは適当。進捗はctrl + Tで見られる。
4. ディスクユーティリティで転送先ディスクに復元する。転送先ディスクを選択し、復元をクリックし、「イメージ…」からimage.imgを選択してやる。最初はエラー(OSStatus)が出たが再起動したらできた。
補遺
この方法はずっと速い。rsyncもディスクユーティリティで直にパーティション選んで復元も無理だった。
また、今回の目的はUSB接続バックアップ(Backups.backupdb)とTime Machine共有(.sparsebundle)データの保存先分離だったため、.sparsebundleデータの縮小も必要だった。方法を以下に記しておく。
バックアップの確認
$ tmutil listbackups
バックアップの削除
$ sudo tmutil delete /Volumes/Time\ Machineバックアップ/Backups.backupdb/xxx/yyyy-mm-dd-HHMMSS/
Password:
Deleting: /Volumes/Time Machineバックアップ/Backups.backupdb/xxx/yyyy-mm-dd-HHMMSS
Deleted (nn.nM): /Volumes/Time Machineバックアップ/Backups.backupdb/xxx/yyyy-mm-dd-HHMMSS
Total deleted: nn.nM
sparsebundleイメージの縮小
$ hdiutil compact /Volumes/Time\ Machine/xxx.sparsebundle/
“xxx.sparsebundle”にアクセスするにはパスワードを入力してください:
圧縮を開始中…
空き領域を再び利用可能にしています…
..............................................................
圧縮の仕上げ中…
空き領域y.y TBのうちz.z TBを再び利用可能にしました。
参考
hdiutil compact:ターミナルからTimeMachineのバックアップを削除して使用可能領域を増やす - Qiita
コマンドから「Time Machineに入る > “xxx”のすべてのバックアップを削除」:time machine - Delete all backups of specific file/folder with tmutil - Ask Different