目次
きっかけ
めんどくさい理由を箇条書きにする。
- 基本PCDJ、ソフトはrekordboxとTraktor
- Traktorはほぼ使っていない
- と言うかTraktorの設定データはiCloud Driveで同期しちゃえばいいんじゃね?
- 楽曲ライブラリはiTunes(現:Musicアプリ)で全て管理されている
- rekordboxは内蔵ストレージ管理
- 外部だと取り回しがめんどくさ過ぎる
- ふとした時に外れたりしたら死ぬ、いや死にかけた
- そんな事もあり内蔵ストレージに全面移管した
- rekordboxのUSBメモリエクスポートは「現場緊急対応用」として準備したい
- でも曲数が多すぎてCDJ-350で読み込まないことがしばしば。
やりたいことは別マシンとのライブラリ同期、メインマシンを持ち出してDJするのも良いのだけれども、たまにDJとVJどっちもやると言う事もあるので予備マシンがあった方が良い。
条件としては以下の通り
- 外部ストレージを使わない
- 音楽だけしか同期させないので内部ストレージでも管理可能(250GB以上必須)
- メインマシン側とサブマシン側でrekordboxデータベースの相互運用
- メイン側で作ってサブ側に反映
- サブ側を持ち出して使用楽曲情報の同期
- 最悪ライブラリからUSBエクスポートで対応
- ライブラリ情報の更新は出来ないがrekordbox上でデータを使うことは出来る
と言うことで、rsyncを使ったrekordboxのデータ同期を行う事にした。
同期をする前の準備と確認
一応、フルデータ転送になるので、同期前の確認と準備をする。やらかすと全て使えなくなるか、もしくは歯欠けな感じで使い勝手が悪くなってしまうので。
今回使ったマシン達
- サブマシン: MacBook Air(’11,mid2012)
- 今回の為にSSDを換装、128GB→500GBにした
- 2012年のマシンだがいまだ現役、Ivy-Bridgeは伊達じゃない
- Catalina対応機種なので最新状態にアップデート済
- でもBig Surには非対応、限界も近い
Catalinaはクソ
- メインマシン: MacBook Pro(‘13,2018)
- メインなので全部のデータが入ってる、整理したい
- Catalinaのまま運用中、Big Surはこの当時入れてない
Catalinaはクソ
- rekordbox 5.8.5.1 and 6.4.2
- これを検証している間に6が出てた
- 6もライブラリの場所が同じなのでそのまま通用する
接続環境はWi-Fiでも良いけれどもかなり時間が掛かるので、安定してかつ高速に終わらせたいなら有線LAN一択。
データの内容と保存場所
今回のケースに置いて必要なデータの場所を調査。
rekordbox データベース | ~/Library/Pioneer/rekordbox |
rekordbox djなどのアプリケーション設定 | ~/Library/Application Support/Pioneer/rekordbox |
rekordboxデータベースのPathの確認は ファイル > 環境設定 > インポートされているライブラリ
に書かれている場所になる。もっと言うと、その配下になる。
rekordbox データベースの内容
ディレクトリの画像よりコマンドで見た方が早い。
~ % ls -al ~/Library/Pioneer/rekordbox total 222200 drwxr-xr-x 23 user staff 736 3 23 03:21 . drwxr-xr-x 4 user staff 128 3 18 08:23 .. -rw-r--r-- 1 user staff 140 11 12 20:27 DEVSETTING.DAT -rwxrwxrwx 1 user staff 141252 3 21 05:12 ExtData.backup.edb -rwxrwxrwx 1 user staff 141252 3 21 05:12 ExtData.backup2.edb -rwxrwxrwx 1 user staff 141252 3 21 05:12 ExtData.backup3.edb -rwxrwxrwx 1 user staff 141252 3 21 05:12 ExtData.edb drwxr-xr-x 4 user staff 128 3 18 05:29 ExtDriveBackup -rw-r--r-- 1 user staff 148 3 22 02:26 MYSETTING.DAT -rw-r--r-- 1 user staff 148 3 22 02:26 MYSETTING2.DAT drwxr-xr-x 4 user staff 128 3 18 06:21 PIONEER -rw-r--r-- 1 user staff 232 12 26 2018 RBFLTR.DAT -rw-r--r-- 1 user staff 82 3 23 02:04 automixPlaylist.xml -rwxrwxrwx 1 user staff 26237452 3 22 23:55 datafile.backup.edb -rwxrwxrwx 1 user staff 26237452 3 22 06:41 datafile.backup2.edb -rwxrwxrwx 1 user staff 26237452 3 22 03:17 datafile.backup3.edb -rwxrwxrwx 1 user staff 26237452 3 22 23:55 datafile.edb -rw-r--r-- 1 user staff 160 10 27 2018 djprofile.nxs -rw-r--r-- 1 user staff 45604 3 23 03:21 masterPlaylists3.xml -rw-r--r-- 1 user staff 4177920 3 22 23:48 networkAnalyze.db -rw-r--r-- 1 user staff 39188 3 23 03:19 playlists3.sync -rw-r--r-- 1 user staff 99 3 23 00:18 rekordbox_lyric.log -rw-r--r-- 1 user staff 4310 3 21 22:29 smartlist.xml ~ % ls -al ~/Library/Pioneer/rekordbox/PIONEER total 0 drwxr-xr-x 4 user staff 128 3 18 06:21 . drwxr-xr-x 23 user staff 736 3 23 03:21 .. drwxr-xr-x 59 user staff 1888 3 18 06:44 Artwork drwxr-xr-x 130 user staff 4160 3 18 05:56 USBAN
rekordbox アプリケーション設定
アプリケーション設定では使ったMIDIコントローラや連携しているアプリケーションの設定値が保存されている。この同期は常時必要ないと思うし、マッピングデータならCSVエクスポートができるので同期させなくても良い。
Music.app(旧iTunes)のライブラリデータ
CatalinaではiTunesのライブラリ情報を旧データとして扱って読み取って再構築される。なので更新されるのは新しく作成されるMusic Library.musiclibrary内でDB管理される。どうしてそうしちゃったのかね。
自分の場合 ~/Music/iTunes
とミュージックディレクトリの直下にiTunesディレクトリを置いているので、~/Music/Music/
となるのが気持ち悪いと思い、全てiTunes配下に保存するよう初期設定している。よって、同期させるのは ~/Music/iTunes
だけとなる。
これAppleさんマジでやらかし仕様だと思うんだけど。
~ % ls -al ~/Music/iTunes drwxr-xr-x 10 user staff 320 3 17 19:27 . drwxrwxr-x+ 19 user staff 608 3 23 02:06 .. -rw-r--r--@ 1 user staff 10244 3 22 09:11 .DS_Store drwxr-xr-x 3 user staff 96 3 17 18:09 Album Artwork drwxr-xr-x@ 4 user staff 128 3 17 19:30 Music -rwxrwxrwx@ 1 user staff 98304 3 17 17:52 iTunes Library Extras.itdb -rwxrwxrwx@ 1 user staff 684032 8 13 2019 iTunes Library Genius.itdb -rwxrwxrwx@ 1 user staff 12791718 3 17 17:52 iTunes Library.itl -rw-r--r--@ 1 user staff 44555337 3 17 17:52 iTunes Library.xml drwxrwxrwx 14 user staff 448 3 21 05:25 iTunes Media ~ % ~ % ls -al ~/Music/iTunes/Music/Music\ Library.musiclibrary total 108568 drwxr-xr-x@ 9 user staff 288 3 23 00:18 . drwxr-xr-x@ 4 user staff 128 3 17 19:30 .. -rw-r--r--@ 1 user staff 4050 3 23 00:18 Application.musicdb -rwxrwxrwx@ 1 user staff 970752 3 22 23:32 Extras.itdb -rwxrwxrwx@ 1 user staff 39264256 3 22 05:43 Genius.itdb -rw-r--r-- 1 user staff 1363 3 22 23:53 Library Preferences.musicdb -rw-r--r-- 1 user staff 15321221 3 22 23:53 Library.musicdb -rw-r--r--@ 1 user staff 124 3 22 04:40 Preferences.plist -rw-r--r--@ 1 user staff 8 3 23 00:18 sentinel ~ %
同期の準備
今回の同期では自動化を目的としていないので、rsyncの公開鍵認証などは割愛する。機会があったらするけれど、常に画面を見ながらやるので設定する必要がない。あと自動化でやらかした時が怖いからしない。
接続先のサブマシンへSSH接続できるようにする
> システム環境設定 > 共有
を開く- チェック項目として存在する
リモートログイン
にチェックを入れる。 - アクセス許可を[次のユーザーのみ]で Administrators になっている事を確認
前提条件としては、サブマシンとメインマシンとで同じユーザー名かつ同じパスワードであること。理由としては、パーミッションやらなんやらで同じじゃないと変更が面倒臭いから。なお、SSH設定後のログインはホスト名では通らないので、表示されたIP直打ちになる。
ここまでで確認と準備は整ったので同期転送を行うことにする。
今回はrsyncを使ってメインマシン→サブマシンへのrekordboxデータ、及びiTunesのデータコピーを行う。
その際に使ったコマンドとそのオプションが以下の通り。
rsync -rlptDuv --log-file=~/`date +%Y%m%d-%H%M`.log --progress --checksum --partial --delete [メインマシンの転送したいディレクトリ] [サブマシンIP]:[サブマシンの転送先となるディレクトリ]
使ったオプションについての詳細。
オプション名 | 内容 |
---|---|
-av | アーカイブモード(「-rlptgoD -no-H -no-A -no-X」相当) 各オプションをまとめて行うショートカットオプション 何も考えず完全ミラーリングをするならこれだけで良い |
-rlptDuvn | -r 指定ディレクトリ配下を全て対象とする -l シンボリックリンクをそのままシンボリックリンクとしてコピー -p パーミッションをそのままコピー -t タイムスタンプをそのままコピー -D –devices –specialsと同じ –devicesでブロックデバイスをコピー –specialsで名前付きパイプやFIFOなどの特殊ファイルをコピー -u 転送先に既にファイルが存在し、転送先の方が新しかったら転送しない -v コピーファイルの転送情報をターミナル出力 -n コマンドは実行するが反映はしないテスト実行用(やる時になったら外す) |
--log-file | ログファイルの出力先を指定、今回はユーザーディレクトリに直接出力 出力時にdateコマンドで当日の日付時間を生成してる |
--progress | 転送の進行情報を詳細に出力 |
--checksum | タイムスタンプが同じでもファイル内容に変更があった場合は更新対象 |
--partial | 転送中にフリーズなど止まってしまった場合に再開可能にする |
--delete | 転送元に合わせて転送先のファイルを整理する(更新される) |
※オプションの -n は必ず設定しておき、実際に同期を行う際に外す。以下の実行結果は全て -n を外した状態で実施していることを前置きとする。
メインマシン→サブマシンへの同期
ルールとしては
- 操作は全てメインマシン側で行う
- 操作をする前にTimeMachineや直接バックアップなどを行っておく(マジで大事)
- サブマシンのデータは変更があった場合のみ転送する
この3つのルールを基軸として以下の操作を行う。
Music.appのデータを全て同期
まずは根幹となる音楽データ(ライブラリとデータ)をコピーする。rekordboxのライブラリが失敗したとしても、元データがあればどうとでも出来る。同期転送にはおおよそ5時間程度を見込む。全ライブラリデータを送り込むのでそれだけ掛かる。
有線LANなら2〜3時間程度だと思われる。環境によりけり。
初回転送なら丸ごと送り込むので、オプションは -av
となる
~ % rsync -av --log-file=~/iTunes-`date +%Y%m%d-%H%M`.log --progress --checksum --partial --delete /Users/user/Music/iTunes/ [サブマシンIP]:/Users/user/Music/iTunes/
2回目以降は以下のコマンドで通る、ほぼ同じだけど。
~ % rsync -rlptDuv --log-file=~/iTunes-`date +%Y%m%d-%H%M`.log --progress --checksum --partial --delete /Users/user/Music/iTunes/ [サブマシンIP]:/Users/user/Music/iTunes/
重要: 転送完了後のライブラリ再読み込み
転送完了後、サブマシン側でmusicアプリを開いてもライブラリは反映されない。
なので、Optionキーを押しながらmusicアプリを起動してライブラリ選択画面を出す。そこで転送したMusic Library.musiclibrary
を指定してライブラリを強制的に再読み込みする事によって反映される。
また、ライブラリに楽曲は反映されてもアルバムアートは反映されない事象が発生すると思う(自分の環境では発生している)。この状態でもrekordbox側ではちゃんとアルバムアートは表示されるので問題ないとする。
とは言え、マジで、なんなの、この仕様。
rekordboxのDBデータを全て同期
Music.appと同じ様にrekordboxのライブラリデータも同期させる。コマンドは同じだがパスが異なるので要注意。こっちは小分けされたファイル数が多いので、1時間程度を見込む。
~ % rsync -av --log-file=~/rekordbox-`date +%Y%m%d-%H%M`.log --progress --checksum --partial --delete /Users/user/Library/Pioneer/ [サブマシンIP]:/Users/user/Library/Pioneer/
こちらも2回目以降は以下のコマンドで通る。
~ % rsync -rlptDuv --log-file=~/rekordbox-`date +%Y%m%d-%H%M`.log --progress --checksum --partial --delete /Users/user/Library/Pioneer/ [サブマシンIP]:/Users/user/Library/Pioneer/
サブマシン→メインマシンへの同期
あくまでサブマシンはプレイ用であり、音源の追加・削除はしない運用。なので、使った楽曲とかの使用履歴とかを反映できればそれで良い。転送は逆方向にすれば良い。
Music.appのデータを全て同期
ライブラリのデータを上書きすることになるので、ここは非推奨。
rekordbox側で音源ファイルのID3タグを更新する設定をしているのであれば、まず最初にMusic.appのライブラリから反映させる。特にしていないのであればここの手順は省く。
~ % rsync -rlptDuv --log-file=~/iTunes-`date +%Y%m%d-%H%M`.log --progress --checksum [サブマシンIP]:/Users/user/Music/iTunes/ /Users/user/Music/iTunes/
rekordboxのDBデータを全て同期
楽曲使用履歴を反映させるために同期させる。メインマシン上のデータベースを上書きするので、事前にCUE設定やプレイリストを作成している場合は消えてしまうことをに注意。
~ % rsync -rlptDuv --log-file=~/rekordbox-`date +%Y%m%d-%H%M`.log --progress --checksum [サブマシンIP]:/Users/user/Library/Pioneer/ /Users/user/Library/Pioneer/
とりあえずこれで相互運用は可能となった。どっちも時間が掛かるのでDJをしない空き時間とかにのんびりやると良いと思う。
終わりに
誰も求めちゃいないだろうrsyncでのマシン間同期の記事を書いたけれども、macOSよりWindowsの方を求めてる人が多いだろうなぁと思った。Windowsの場合は robocopy
コマンドがあるのでそっちを使えば同じことが出来る。コマンドの詳細はGoogleさんに聞いて欲しい。
にしても、Catalina以降から音楽の管理が本当に面倒臭くなった。とりあえずAppleさんは楽曲一覧表示にした時にジャケットを表示する機能を戻して下さい。かなりアレ重宝してたので。