大量のファイルをコピーする
MacのTimeMachineバックアップに使っているディスクのUSBケーブルを間違って抜いてしまい,HDDを壊してしまった。立ち上げのたびに,修復できないからフォーマットするようにというメッセージが出るようになって書き込みもできない。最新版のファイルはMac本体にあるので,フォーマットした場合に失われるのは4年ほど前まで遡れる変更履歴ということになる。それで,ちょっと欲張って,データを別のHDDに移動させてからフォーマットすることにした。
問題は,膨大な数のファイルを迅速にコピーする方法。最初は素直にFinderを使ってコピーしようとした。そうしたら,ファイルサイズの計算を始めてしまい,一晩経っても終わらない。これでは話にならないので,ターミナルを開いてcp -Rでコピーすることを試みた。こちらは,直ちにコピーが始まったが,速度が速かったのは丸一日ちょっとくらいで,2日目になると大して大きく無いファイルでもコピーするのに何秒かかかるようになってしまった。結局,一番早くて速度低下が起きなかったは,
tar -cf – ./Backups.backupdb |(cd /Volumes/NewHDD/ ; tar -xvpf – )
を実行することだった。ただし,古い方のバックアップディスクにcdし,lsを実行した時にBackups.backupdbが見える状態でこのコマンドを実行する。/Volumes以下は,コピー先のHDDの名前とその中にあるコピー先フォルダまでを指定する。
コピー中は,リスクはあるが,ウイルスチェックソフトの実行は止めておくこと。コピーの度にチェックがかかると,数が多いだけにかかる時間が馬鹿にならない程度延びる。また,ディスクは
Mac OS拡張(ジャーナリング)でフォーマットするしかないが,ファイル変更履歴が記録されるので,単純コピーなら,ジャーナルはオフにしておく。dfするなどして,/dev以下のどれがコピー先ディスクか確認した後で
diskutil disableJournal disk***
を実行する。***には,/dev以下にあるデバイスの名前の一部が入る。
ただ,今回はこの努力は結局無駄になり,ディスクの内容は救い出せなかった。コピーは順調だったのだが,コピー元4TBディスクで3TB使用,コピー先4TBで行ったところ,コピー先の容量が3.5TBを超え,使用しているブロック数もコピー元をとっくに超えているのにコピーが終わらない。どうも,ディスクを壊した時に,読み出しでどこかでループに入るような壊れ方をしたらしい。特に失われた重要ファイルも無く,何ヶ月も前のファイルが必要になる可能性はほとんど無かったので,結局諦めて,壊れたディスクを再フォーマットして新たにバックアップを作成することにした。