春からずっと引きこもり(3)
2020/06/14
ネットでやるようになったもの
  • 本題へ入る前に、今回もコロナ禍とライフスタイルについて軽くお話を。今まで「通勤帰りに寄って」何かしていたことが影響を受けたなと感じています。私の場合大きいのはCDレンタル図書購入でしょう。

  • ストリーミング全盛時に「何でCDレンタル?」と思われるでしょうが、私の場合はCDをリッピングしてflacにするからですね。flacのダウンロード販売は高い(*1)ので、数年前のCDが中心ならレンタルが圧倒的に安いのです。以前から「レンタル屋で探すのが結構面倒くさい」と思いつつあったのですが、オンラインレンタルにしてから検索するだけなので楽になりました。もう戻れない気がします。

  • 図書購入については「買って読もう」と思う本のハードルが上がりました。以前は長過ぎる通勤時間のお供に新書系を衝動的にタイトル買いしていましたが、「無駄遣いだったな...」と後悔することが多かった(*2)のです。考え直すべき習慣だと思ってはいましたが、今回の騒ぎで引きこもり生活になってしまい、図らずも本の衝動買い習慣は無くなりました

File Server はゆるく使う
  • では本題に、前回からの続きです。ラズパイで作ったFile Serverですが、その運用はゆるめにしています。Sambaが動いているということは、Windows PC上の各種アプリケーションから、\\ホスト名\フォルダ名 でデータが見えるわけですが、直接見せずに一度ローカルディスクへダウンロードさせ、アプリケーションはローカルディスクを参照しています。

    Figure 1 : File Server 上データの参照

  • ちなみにDACに接続しているラズパイはNetwork Music Playerとして使っているので、これは直接File Serverのデータを参照させています。

  • 家族用PCにFile Serverを直接参照させなかった理由は2つあります。
    • 理由の1つ目は、ライブラリデータの保護です。家族用PCはまさに家族全員が触るためトラブルの起きる確率が高くなります。分離されていれば問題はローカルデータに限定されるので、File Serverのデータと同期すれば復帰も簡単です。
    • 理由の2つ目は、ネットワークトラブルの影響を小さくするためです。File Server自身またはLAN経路に問題が出ても、家族用PCでは機能上の影響が出ません。ライブラリがアップデートされないだけになります。

robocopyでファイル同期
  • Windows PCとFile Server間のファイル同期にはrobocopyコマンドを使っています。robocopyコマンドの解説は他サイトを参照頂くとして、ここではWindows PCとSamba File Server間でrobocopyを使用する場合の注意点を説明します。

  • Sambaを使うことで、異なるOS間でもFile共有可能になっていますが、やはりOSによってファイルに与えられる属性が微妙に違います。また、またタイムスタンプの精度も異なっています。

  • 属性については我々の関知しないOS側管理用のデータで、タイムスタンプも秒未満の精度が違うだけです。相手が機械なだけに「こまけぇこたぁいいんだよ!!」と言っても「細かい事が大切です」と返されるので、オプション指定を追加することになります。

  • そのオプションは /COPY:DT, /DCOPY:D, /FFT です。下記にバッチファイルの記述例を示します。robocopyにオプションを与えている青字部に注目下さい。
  • @echo off
    title SyncupMusicDbNas.bat
    
    rem # source -> destination base folder -------------------------------------------#
        set PathSrc=F:\MusicDb                 <-- コピー元のベースディレクトリ
        set PathDes=\\pifs\share_data\MusicDb  <-- コピー先のベースディレクトリ
    rem # log folder ------------------------------------------------------------------#
        set LogDir=%PathSrc%\syncup
    
    rem # syncup folders --------------------------------------------------------------#
        call :RoboCopyMusic mp3_from_flac   <-+-- コピー対象のサブディクトリ指定
        call :RoboCopyMusic lossless        <-+
        call :RoboCopyMusic lossy           <-+
      
    rem # end of batch ----------------------------------------------------------------#
        echo =============================================================================
        echo [End Syncup Music Data with %PathDes%]
        echo [Please Hit Any Key]
        pause > nul
    
    exit /b
    
    
    rem # sub RoboCopyMusic -----------------------------------------------------------#
    :RoboCopyMusic
        echo =============================================================================
        echo [Start ROBOCOPY - %1]
        echo   From : %PathSrc%\%1 
        echo   To   : %PathDes%\%1
        echo -----------------------------------------------------------------------------
        robocopy ^
            %PathSrc%\%1 ^  <-- コピー元ディレクトリ
            %PathDes%\%1 ^  <-- コピー先ディレクトリ
            /COPY:DT ^      <--+-- A(Attribute)を外し、D(データ内容)とT(Time)だけコピー
            /DCOPY:D ^      <--+   A(Attribute),T(Time)を外し、D(Dir情報)だけコピー
            /FFT ^          <--+   2秒以内の誤差は「無し」と見なす
            /MIR ^
            /R:0 /W:0 /XO ^
            /LOG:%LogDir%\syncup_%1.log /NP
        echo.
        echo [End   ROBOCOPY - %1]
        echo.
        
        rem # Exit code of robocopy for 0 to 7 means success ----------------------------#
        if %ERRORLEVEL% GTR 7 (
            echo =============================================================================
            echo [ERROR %ERRORLEVEL% : Please check %LogDir%\syncup_%1.log to find issues]
            echo [Please Hit Any Key to exit]
            pause > nul
        )
    
    exit /b %ERRORLEVEL%

ファイル同期をタスクスケジューラで自動実行
  • ファイル同期を実行するバッチファイルは作れたので、あとはどのタイミングで実行するかですが、これはタスクスケジューラにバッチファイルを登録しDailyなりWeeklyなり好きな頻度で実行すれば良いです。

  • タスクスケジューラにバッチファイルを登録する方法については「ここ」が参考になります。

iTunes以外はこれでOK
  • iTunes以外の音楽再生ソフトは、ライブラリデータが更新されれば、その登録内容を自動更新するので、ライブラリ内のファイル更新を自動化した現環境での運用は全く問題ありません。しかしiTunesだけはフォルダのデータ更新に対して反応してくれません...。

  • これについては、良い方法が思いついておりません。現状では iTunes CleanList を使っていますが、すでにリリース元が存在しないツールなのでちょっと怪しくなっています。...このままでも良いかな。iTunes CleanListがNGのときは登録消してからやり直しでいいやもう。

  • 尚Family PC側でCDリッピングが行われた場合ですが、iTunes側のリッピング設定をアップルロスレス(alac)にしてあります。データはFile Serverにアップロードされ、ある程度更新ファイルが積まれたら定期的にflac/mp3へ変換するという方法で、ライブラリメンテに組み込んでいます。

  • 最後iTunes関係が締まりませんが、Musicライブラリ構築とメンテンナンスについてのレポートでした。
Notes
  • ストリーミングのハイレゾ化実現は今年〜来年ぐらい。普及は...月額次第か...。
  • お酒に関する本だけが残ってます(笑)。技術系/文学系等じっくり選ぶものはもともとオンライン購入でした。
Copyright(C) 2020 Altmo
本HPについて