酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

録画サーバー構築④ ラズパイからNASへファイルを転送する

本記事は「2021年3月版録画サーバー構築シリーズ」の第4回目です。前の話は「録画サーバー構築③ Dockerを利用してMirakurunとEPGStationをインストールする」をご覧ください。


先日、Raspberry Pi 4 Model B 4GB(以下ラズパイと記す)を購入して、録画サーバーを構築した。

前回までの連載で、ラズパイで録画サーバーを構築する作業は終わったが細かな課題が残ったままになっている。

本記事では残る課題のうち「エンコードした動画をNASに転送したい」の問題に対応したい。

環境について

前提としてNASには「Synology DiskStation DS220j」を使っている。DS216jはほとんど活用できないままDS220jに移行したため、DS220jをもっと活用していきたいと考えている。

DS220jではSambaを使ってファイル共有をしている。NASへファイルを転送するためには以下の問題と向き合う必要がある。

  • ラズパイにNASのディスクをマウントする
  • ずっとマウントしているとNASのディスクを消耗してしまう
  • 転送済みのファイルは転送しない

これらの課題を解決する必要がある

cifs-utilsを使ってNASをマウントする

前述の通り、DS220jではsambaでファイル共有をしている。

Raspberry Pi 3 に NAS をマウントさせる - Qiita」と「Raspberry piにNASをマウントした時の覚書 - Qiita」を参考にラズパイでSambaで共有しているディレクトリをマウントさせる。

cifs-utilsのインストール

sudo apt install -y cifs-utils

Sambaにアクセスするための認証情報ファイルを作成する

vim ~/.smbcredentials

認証情報をファイルに書いておく。

username=ユーザーID
password=パスワード

認証情報を保存するのを忘れない。

chmod 600 ~/.smbcredentials

cifs-utilsを使ってディスクをマウントする

sudo mkdir /mnt/nas
sudo chmod 777 /mnt/nas
sudo vim /etc/fstab

NASに割り振られているIPアドレスは 192.168.68.126 とする。fstabに1行追加する。

//192.168.68.126/video /mnt/nas cifs vers=2.0,credentials=/home/pi/.smbcredentials,iocharset=utf8

/mnt/nasがマウントできるか確認する。

$sudo mount -a
$ ls /mnt/nas
20160702_074443000_iOS.MOV
20170101_123605000_iOS.mp4

実際にNASへファイルをコピーする

NASへファイルを転送するには普通にcpコマンドを叩けば良い。

cd /data/recorded/
sudo cp /data/recorded/'20210304_ほげほげほげ[解][字].mp4' /mnt/nas

アンマウント

ラズパイは24時間運用だが、NASをマウントしっぱなしにするっとNASに挿しているHDDを痛めてしまう。NASにアクセスしないときにはアンマウントしておきたい。

sudo umount /mnt/nas

autofsを使って一定期間アクセスがなければNASのディスクを自動でアンマウントする

NASのディスクをマウントするとHDDが回った状態になってしまいます。ディスクの稼働率を下げるために、アクセスしていなければアンマウントしたいです。かと言ってアクセスするたびにマウントさせるのもなかなか面倒くさいです。

ディスクへのアクセスが一定期間なければ自動でアンマウントして、ディスクへのアクセスがあれば自動でマウントしてくれる autofs を導入します。

NASをautofsでマウントする – NorthPage」と「ON THE HAND: Raspberry Pi の autofs で NAS のバックアップ」と「Ubuntu 18.04 にて autofs による CIFS (SMB) 自動マウントを設定する」を参考にしてautofsの導入を進めた。

autofsのインストール

sudo apt install -y autofs

autofsの設定

autofsの設定は以下にあります。

vi /etc/auto.master

ここでは特になにも追記する必要はありません。

$ sudo vim /etc/auto.master.d/direct.autofs

以下のように記述します。

/-  /etc/auto.direct

続いてNASの認証情報を入力します。

$ sudo vim /etc/auto.direct

以下のように記述します。

/mnt/nas -fstype=cifs,rw,vers=2.0,credentials=/home/pi/.smbcredentials,iocharset=utf8 ://192.168.68.126/video

あとはautofsを起動すれば設定は終わり。

$ sudo systemctl enable autofs
$ sudo systemctl start autofs

ラズパイからNASへファイルを転送する

NASへコピー(テスト)

sudo rsync -auzvn /data/docker-mirakurun-epgstation/recorded/encoded/ /mnt/nas 

NASへコピー

sudo rsync -auzv /data/docker-mirakurun-epgstation/recorded/encoded/ /mnt/nas 

関連記事