外付けHDD間で大量の写真データを引っ越す羽目に


Finderの限界を感じた瞬間...
外付けのHDDは時々不調になる。まあ、仕方ないかも、読み書き頻度高い使い方していて、消耗もするでしょう。
そのためにも、しっかりとバックアップもしているけど、バックアップサービスからデータを復旧するのは若干手間なので、不調のドライブからデータを取り出せるうちに別のドライブに退避した方が楽。
パスも全部維持できるから、後からLightroomにフォルダーパスだけ更新すればLibraryが狂うこともないし。

8Tのデータ、まあ、重い。Finderで過去にコピーしてたら、日単位の時間が必要だったので、流石に嫌だな〜と思い、他の方法を試した。
さらに、こちらの欠点があある:

  • Finderだと、家族がマシーン使いたくても若干躊躇する(まあ、小さい窓閉じちゃったらコピー停止だし・・・わかる)
  • どこまでコピーできたとか、ファイル単位の進捗がわからない(ただ気になるってだけだけど)
  • 前回の経験から、途中で中断した場合、フォルダー内容がまれにちゃんと補完されないことがあったりする
  • フォルダー内のファイルが一部だけ差分がある時、既存のファイルはスキップするというオプションが表示されるケースとされないケースがあり、無駄な作業することがある

なので、家族は触れることがない Terminal でうまいぐいにやってみよう。

使えるのは cprsync
cp の婆あい、アイルが多いと、too many arguments と怒られるやつです。このコマンドはちょっと回り道をで使う必要がある。
外付けのドライブ間コピーなので、パスは基本 /Volumes/* になるけど、自分の場合、ディスクに連番を降ってるので、こんな感じです:
コピー元: /Volumes/PICTURES\ 10
コピー先: /Volumes/PICTURES\ 13

今回、サブフォルダーの構成を維持しながら、コピー元にある 2020 と 2019 という二つのフォルダーを同時にコピーしたい。

使ったコマンドの例は以下です。速度の明確な差はそれほどないが、気持ち程度、cpの方が早そうな印象でした。

rsync 例

rsync -ruva -progress /Volumes/PICTURES\ 10/2020/. /Volumes/PICTURES\ 13/2020/ 

オプションの意味は「ターゲットファイルが新しければ上書きしないで、やってることを見せながら、ディレクトリー構成を維持して」コピーです。
※ ドライランしたい場合、 -n もつけてください。

出力例

building file list ... done
./
2020-02-02/KAS_5276.CR2
2020-02-02/KAS_5277.CR2
2020-02-02/KAS_5278.CR2
2020-02-02/KAS_5279.CR2

対象外(存在していて、コピーされない)ファイルは、そもそも出てきません。

cp 例

find /Volumes/PICTURES\ 10/2019/. -name "*.*" -print0 | xargs -0 -I {} cp -navR {} /Volumes/PICTURES\ 13/2019

オプションの意味は「ターゲットファイルが存在していたら上書きしないで、やってることを見せながら、ディレクトリー構成を維持して」コピーです。

出力例

PICTURES 10/2019/. -> PICTURES 13/2019/.
PICTURES 13/2019/./.DS_Store not overwritten
PICTURES 10/2019/./2019-06-14 -> PICTURES 13/2019/./2019-06-14
PICTURES 13/2019/./2019-06-14/KAS_0837.CR2 not overwritten
PICTURES 13/2019/./2019-06-14/KAS_0838.CR2 not overwritten
PICTURES 13/2019/./2019-06-14/KAS_0839.CR2 not overwritten
PICTURES 13/2019/./2019-06-14/KAS_0840.CR2 not overwritten
PICTURES 13/2019/./2019-06-14/KAS_0841.CR2 not overwritten
PICTURES 13/2019/./2019-06-14/KAS_0842.CR2 not overwritten
PICTURES 10/2019/./2019-06-14/TK2_5752.CR2 -> PICTURES 13/2019/./2019-06-14/TK2_5752.CR2
PICTURES 10/2019/./2019-06-14/TK2_5753.CR2 -> PICTURES 13/2019/./2019-06-14/TK2_5753.CR2
PICTURES 10/2019/./2019-06-14/TK2_5754.CR2 -> PICTURES 13/2019/./2019-06-14/TK2_5754.CR2

対象外のファイルも表示される。