イタリアで地デジ視聴


さて、色々と忙しかった夏を過ぎてやっと少しは家の事に手をつける余裕が出てきました。

旧ブログでお伝えした通り、日本にある実家に録画サーバーを構築するのは、
一応・・完成の域に達した。と言っても良いかと思います。

が・・イタリアでの視聴環境は?というと、未だにWindows XPからFFFTPでダウンロード、
→Buffalo Media Server 2 + LinkTheater LT-H91LANで、生TSを見る・・

全部、手動。。。
という・・ペンギン小僧にあるまじき状況でありました。

そこで・・


夏に帰国した時、近所のHARD OFFでEPSONのNP-11というNet-top PCを買ってきました。

こんな奴ね。

なんと言っても、小さく軽く・・Atomで省電力・・そして・・
\16,000という価格が、σ( ̄∇ ̄;)の心を鷲掴みにした訳です。
だって・・この価格でこのスペックだったら、(玄箱とか)下手なNASを買うより
ずっとお得。
アーキテクチャの違いなんかでつまづく事もないしね・・・( ̄o ̄;)ボソッ
という訳で、
生TS視聴用全自動DLNAサーバーの構築計画のスタートです。

1)まぁ・・何はともあれDebianのインストール。

これは、何のことも無く・・いつもの手順でDebian Squeezeが簡単に入っちゃいました。

2)環境の整備

今後は日本とのFTPやりとりのメイン機になる訳ですから・・
日本のNTPを指定して、タイムゾーンJSTにしてOK。

あとは、普通に録画サーバーと同様にLAMP環境を構築して完了。

3)ffmpeg, vlc, mediatombのインストール。

それぞれ、依存関係が微妙ですが・・
さすがSqueezeのaptitudeは優れもの・・提案された解決策にすべてYで答えてOK.

Vlcのインストールは、etc/apt/sources.list に、以下の2行を追加して・・

deb http://download.videolan.org/pub/videolan/debian sid main
deb-src http://download.videolan.org/pub/videolan/debian sid main

# apt-get update
# apt-get install vlc libdvdcss2

で、全然・・問題なし。

mediatombも、

# aptitude install mediatomb

で入ります。

                                • -

さて・・Mediatombの設定は置いておいて・・次なる計画は

FTPでのミラーリング

一般的なミラーリングではrsyncを使う事が多いですが・・
イタリアと日本・・となると回線の信頼性は・・

DUCATIMotoGPよりも低い。
ので、lftpを使ってシェルスクリプトを書くことにします。

まぁ・・/usr/sbinあたりに適当に、rokuga_mirror.shとかの名前をつけて、
実行権限を与えておきます。

# chmod 755 rokuga_mirror.sh

●--以下、書いた奴--●


#!/bin/bash

name='anonymous'
paswd='ないしょ@ないしょ'
local_dir='/'
remote_dir='/mnt/usb_disk/new/'
server_url='192.168.XX.XX'
log_file='/var/log/rokuga.log'

lftp << EOF

# リトライ回数の指定。 長々リトライされないように5回まで
set net:max-retries 5

# Cronの設定の方が良いかもね・・
# 毎日、12時間おきに起動するように・・
# crontab -e
# 00 0-23/12 * * * /usr/sbin/rokuga_mirror.sh &
# こんな感じ?(バックグラウンドで実行ね)
# 9/15日 追記: Cronで設定した方が良いみたい・・


#
#指定したサーバへの接続を要求する
#

open -u ${name},${paswd} ${server_url}

#
# ミラーリング (オプションは下記参照)
# 新しいファイルのみダウンロード。
#

mirror -n -vvv --log=${log_file} ${local_dir} ${remote_dir}

# 
# ファイルのパーミッションに留意した方が・・美しいので・・
# ダウンロードが終わったらローカルでコマンドを実行
#

!chmod 666 ${remote_dir}*.ts

close
quit
EOF

●--以上、コピペで使ってもいいよん。--●

ちょっと解説:

意外と間違えやすいのが、RemoteとLocalの関係。
ダウンロードする側がRemoteで、
サーバー側がLocalですが・・
コマンド解説などでは、逆になっている事も多いので注意。

ログを残すオプションは、

  • vvv --log=${log_file}

として、「すべての実行したコマンドを指定したログ・ファイルに書き込む。」とします。
ここでも注意が必要なのは、

    • script=${log_file}

とすると、ファイルに書き込むだけで実際にはダウンロードしなくなっちゃいます。

ダウンロードが終わったら、ファイルに書き込み権限を与える設定。

!chmod 666 ${remote_dir}*.ts

この先頭部分の!は、「ローカルでのシェル・コマンド実行」を意味しますが、
この場合のローカルとは、ダウンロード側という意味。
(!)なしで、chmodとやると・・サーバー側のIDを書き換えようとして、

おいおい!お前は何様じゃ!
と怒られるので注意。


lftpは、mirror関係のオプションが充実している事と、
set net:max-retries X と、不意な回線切断などの場合の自動再試行、
そして、atコマンドを内蔵できるところなど、
多機能かつシンプルなFTPクライアントとしてお勧めです。

ただ・・日本語のドキュメントが少ないので、
Mirrorのオプションについて、ちょこっと解説・・

# mirror [オプション] [コピー元 [コピー先]]
#
# ミラーリングは、コピー先ディレクトリとコピー元ディレクトリを指定します。
# コピー先ディレクトリがスラッシュで終わる場合、ソース・ベース名はコピー先ディレクトリ名に追加されます。
# コピー元やコピー先は、ディレクトリを指しているURLも使う事ができます。
#
# -c, --continue 可能であればジョブを継続、
# -e, --delete リモートに存在しないファイルは削除
# --delete-first 新しいファイルの送信開始前に古いファイルを削除
# -s, --allow-suid リモートの設定状況に従って、suid/sgid ビットをセットする。
# --allow-chown オーナーとグループをファイルにセットする
# --ignore-time ダウンロードするべきかの決定で、タイムスタンプを無視する。
# --ignore-size ダウンロードするべきかの決定で、ファイルサイズを無視する。
# --only-missing 見つからないファイル(missing files)のみをダウンロードする
# -n, --only-newer 新しいファイルのみダウンロード (-c との併用は不可)
# -r, --no-recursion サブディレクトリは無視する
# -p, --no-perms     ファイルのパーミッションを設定しない
# --no-umask     ファイルにumaskを適用しない。
# -R, --reverse     リバース・ミラー (ミラーリング・アップロード= put files)
# -L, --dereference シンボリック・リンクをファイルとしてダウンロード
# -N, --newer-than=SPEC 設定した時間より新しいファイルのみダウンロード
# -P, --parallel[=N] N=で設定したファイル数を平行してダウンロード
# --use-pget[-n=N] pgetを使用して各個のファイルを個別に転送
# -i RX, --include RX     同期時に特定のファイルやディレクトリを含ませる。
# -x RX, --exclude RX 同期時に特定のファイルやディレクトリをスキップさせる。
# -I GP, --include-glob GP 同期時に特定のファイルやディレクトリ(パターン)を含ませる。(ワイルドカードの使用)
# -X GP, --exclude-glob GP 同期時に特定のファイルやディレクトリ(パターン)をスキップさせる。(ワイルドカードの使用)
# -v, --verbose[=level] 同期プロセスを逐一監視、
#      オプションは -vvv (または –verbose=3)のように指定して
#      ログの饒舌度合いを調整できる。0-3までの範囲で指定できて、0 は何もログを出さない。
# --log=FILE      ファイル名を指定してログの書き出し(実行しながらの書き出し)
# --script=FILE       ファイル名を指定してログの書き出し(但し、実行はしない。)
# --just-print, --dry-run 標準出力へログを出力する --script=- とした場合と同様
# --use-cache キャッシュされたディレクトリのリストを使用。(???)
# --Remove-source-files 転送後にリモートのファイルを削除 (使用は注意!)
# -a    ファイルの属性をそのままにダウンロード: --allow-chown --allow-suid --no-umask(と同様)
#

・・今日は、ここまで・・・ε=( ̄。 ̄;)フゥ