こちらの方法で解決しない状況が発生し、新しい記事を書きました。
Catalina で 1TB → 4TB の TimeMachine へHDDを移行する
Time Machine 用ディスクの移行方法は Apple のサイト 別のバックアップディスクに Time Machine バックアップを転送する方法 - Apple サポート に詳しく載っています。しかし
新しいディスクにバックアップデータをコピーする
- Finder で、それぞれのバックアップディスクの新しいウインドウを開き、ウインドウ間でファイルをドラッグできるようにします。
- 古いバックアップディスクの最上位に、次のどちらかが表示されます (お使いのバックアップディスクの種類によって異なります)。
- 末尾が「.sparsebundle」のファイル
「Backups.backupdb」という名前のフォルダ
「Backups.backupdb」フォルダが表示される場合は、Mac に直接接続した外付けの USB ドライブ、Thunderbolt ドライブ、 または FireWire ドライブを新しいバックアップディスクとして使う場合にのみ、バックアップを転送することができます。 Time Machine で使えるディスク でも別の種類のディスクの場合は、バックアップを転送できません。
- 古いバックアップディスクの「.sparsebundle」ファイルを新しいバックアップディスクの最上位にドラッグします。
- (入力を求められた場合は) 管理者の名前とパスワードを入力し、コピーが完了するまで待ちます。
この部分の 2. - 3. の部分が延々と終わりませんでした。
公式の方法ではうまくいかないので、
をまとめました。
参考:
ありえない容量がコピーされている原因は、バックアップのディレクトリ構成内でシンボリックリンクが貼られている = 以前のバックアップから変化していないファイルが多重にコピーされているのが問題のようでした。 つまり、シンボリックリンクがシンボリックリンクとしてコピーされてくれさえすればこの問題は解決します。 この時点で、普通にドラッグ & ドロップではコピーできない = 公式の方法では移行できないことが判明します。
cp -r
でシンボリックリンクまで実体としてコピーされて困ったので Mac の man を読んでいたのだが(中略)
代わりに
-R
を使うべきだそうだ。その場合のシンボリックリンクの扱いをどうするかはオプションで指定できて、デフォルトでは no symbolic links are followed 。-P If the -R option is specified, no symbolic links are followed. This is the default.
追記(他のやり方など)
cp -a
派
- ただしこれが実装されているかは環境依存(hiby:
-a
オプションが実装されてない UNIX OSも在るのですよ…)
cp -a
のヘルプを参照してみます。
-a Same as -pPR options. Preserves structure and attributes of
files but not directory structure.
-p Cause cp to preserve the following attributes of each source
file in the copy: modification time, access time, file flags,
file mode, user ID, and group ID, as allowed by permissions.
Access Control Lists (ACLs) and Extended Attributes (EAs),
including resource forks, will also be preserved.
-P If the -R option is specified, no symbolic links are followed.
This is the default.
-R If source_file designates a directory, cp copies the directory
and the entire subtree connected at that point. If the
source_file ends in a /, the contents of the directory are
copied rather than the directory itself. This option also
causes symbolic links to be copied, rather than indirected
through, and for cp to create special files rather than copy-
ing them as normal files. Created directories have the same
mode as the corresponding source directory, unmodified by the
process' umask.
-a
の説明どおり、アクセス権、ファイル日時等を全て保った状態でコピーする。シンボリックリンクもそのままで追跡しないようです。
cp -a
が実行できないと、いうことで cp -a
を試しましたが、 sudo
しても権限がないと言われてしまいます。
$ sudo cp -av /Volumes/Backup_late2016/Backups.backupdb /Volumes/Backup_late2016\ 1/.
Password:
cp: /Volumes/Backup_late2016/Backups.backupdb: unable to copy extended attributes to /Volumes/Backup_late2016 1/./Backups.backupdb: Operation not permitted
/Volumes/Backup_late2016/Backups.backupdb -> /Volumes/Backup_late2016 1/./Backups.backupdb
cp: /Volumes/Backup_late2016/Backups.backupdb: Operation not permitted
[システム環境設定]
-[セキュリティとプライバシー]
-[プライバシー]タブ
-(左ペインの)[フルディスクアクセス]
-(左下の鍵を解除。要パスワード)
-「+」ボタン押下
-「ターミナル」を追加
macOS Mojave(OSX 10.14)以降でセキュリティ設定が厳しくなったため 、
sudo
付きやユーザーのホームディレクトリ下でも 「Operation not permitted
」が出るようになりました。これは、du
ls
mv
cp
といった基本コマンドでも同じです。
ここに挙がっている通りで、 Time Machine 用のファイルをターミナルから操作する際は フルディスクアクセス の権限がターミナルに必要なようです。
これをしたら無事にコピーがスタートしました。が、すごく時間がかかっていました。しばらく放置していたのですが、画像のところで HDD がスリープするほど長時間止まっていました。これはよくありません。
別の方法をかんがえます。
dd
最強こうなったら dd
コマンドで HDD ごとコピーします。完了後にディスクユーティリティでパーティションを 1TB に拡張させることで移行を試みました。
これが正解でした。
まずはハードディスクが /dev/
以下のどこに割り当てられているかディスクユーティリティで確認します。
disk*
を確認したらマウントを解除して、間違えないように書き込みます。
私のMac Miniではこんな感じでした。いつも
bs=32m
で指定していましたが、bs=16m
のが早いわけですね。$> ./test_dd_bs.sh creating a file to work with 1175000+0 records in 1175000+0 records out 601600000 bytes transferred in 3.716253 secs (161883487 bytes/sec) --------------------------------------- Testing block size = 16m 35+1 records in 35+1 records out 601600000 bytes transferred in 1.312157 secs (458481751 bytes/sec) --------------------------------------- Testing block size = 32m 17+1 records in 17+1 records out 601600000 bytes transferred in 1.512825 secs (397666614 bytes/sec) --------------------------------------- Testing block size = 64m 8+1 records in 8+1 records out 601600000 bytes transferred in 1.472201 secs (408639823 bytes/sec) --------------------------------------- Testing block size = 128m 4+1 records in 4+1 records out 601600000 bytes transferred in 1.510589 secs (398255218 bytes/sec) --------------------------------------- Testing block size = 256m 2+1 records in 2+1 records out 601600000 bytes transferred in 1.574169 secs (382169855 bytes/sec) --------------------------------------- Testing block size = 512m 1+1 records in 1+1 records out 601600000 bytes transferred in 1.684105 secs (357222349 bytes/sec)
自分の Mac で計っていないですが、これに従ってブロックサイズを設定しました。通常より早いような気がします。
$ sudo dd if=/dev/rdisk3 of=/dev/rdisk2 bs=16m
Password:
44712+1 records in
44712+1 records out
750156374016 bytes transferred in 10548.198580 secs (71117013 bytes/sec)
この dd
を行う際にも フルディスクアクセス 権限が必要でした。移行先の HDD をマウントすると前のドライブ同様、
Time Machine に入ることができます。
これが確認できたら容量に合わせてパーティションを拡張します。 ディスクユーティリティのパーティションから空き領域を消去します。
もしエラーが出た場合は First Aid を試してみましょう。パーティションの拡張が終わった後も一度かけておくのがおすすめです。
ここまでで移行が終了したらラッキーです。