最近、xserver をオンラインストレージとして使うようになり、NAS との間で複雑にデータの同期などを行なうようになったのでかなり混乱してきました。
一度整理する必要があると思います。
現在、私のコンピュータネットワークは以下のようになっています。
端末のコンピュータはすべて dell 製で自宅・別宅・勤務先に設置してあり、全てに linux mint cinnamon 22.2 がインストールしてあります。
これらの 3 台は synolody drive で NAS 720 をハブとしてホームディレクトリが双方向同期されています。
このホームディレクトリはドキュメントなどが中心で、アルバムなどのデータは入っていません。
NAS は synology 製で、すべて 3 TB の容量があります。
NAS 720 は、主に家族のアルバムやその他のさまざまな個人的なドキュメントのバックアップ、youtube でダウンロードした動画・映画などが中心で 900 GB 程度です。
NAS 718 は、iptv で録画したものが保存されており現在のところ 800 GB 程度使用されています。
今のところ十分に余裕はありますが、最近では 10 GB/週とかなりのスピードで増加しているので、そのうち容量が足りなくなるかもしれません。
NAS 117 は NAS 720 のバックアップ用で rsync によってリアルタイムで同期されています。
これで、何があってもアルバムなどの大切なデータはなくならないと勝手に思い込んでいましたが、よく考えてみると大災害で家が消失したらすべてのデータが消えることになってしまうことに気づきました。
そこで xserver をオンラインストレージとして使おうと考えるようになりました。
私は xserver のスタンダードプランで契約しているので容量は 500 GB あります。
xserver 上では、この astro ブログを始め他に 3 つほどのプログラムが動いていますが、すべてを合計しても 40 GB 程度です。つまり、400 GB 以上の余裕があります。
コンピュータと NAS にはさまざまなデータが保存されていますが、どうしても保存したいものは、
などいろいろありますが、なかでも家族のアルバムが消失するとかなり落ち込むと思います。
上にリストアップしたものはすべて xserver にディレクトリを作って、そこへ向けて 1 日 1 回 rsync することにしました。
xserver に ssh でログインして直下に Storage フォルダを作成します。
そこに向けて rsync します。
ここでは、アルバムの他に 3 台のコンピュータ間で同期している /home/moheno とさまざまな内容のバックアップである backup フォルダも rsync しています。
#!/bin/sh
logdir="/volume1/backup/NAStoXserver_rsync/logs"
rsync -avzu \ -e 'ssh -p 10022 -i ~/.ssh/moheno.key' \ --delete \ --checksum \ --chmod=Du=rwx,go=,Fu=rw,go= \ /volume1/web/ourAlbum \ moheno@sv12345.xserver.jp:~/Storage \ >> "$logdir/album_rsync_$(date +%Y%m%d%H%M%S).log" 2>&1
rsync -avzu \ -e 'ssh -p 10022 -i ~/.ssh/moheno.key' \ --delete \ --checksum \ --chmod=Du=rwx,go=,Fu=rw,go= \ --exclude='@eaDir' \ /volume1/moheno \ moheno@sv12345.xserver.jp:~/Storage \ >> "$logdir/moheno_rsync_$(date +%Y%m%d%H%M%S).log" 2>&1
rsync -avzu \ -e 'ssh -p 10022 -i ~/.ssh/moheno.key' \ --delete \ --checksum \ --chmod=Du=rwx,go=,Fu=rw,go= \ /volume1/backup \ moheno@sv12345.xserver.jp:~/Storage/NAS720_backup \ >> "$logdir/NAS720_backup_rsync_$(date +%Y%m%d%H%M%S).log" 2>&1
# ==========================# 古いログを削除(30日より前のもの)# ==========================find "$logdir" -type f -name "*_rsync_*.log" -mtime +30 -exec rm -f {} \;このシェルスクリプトを cron で 1 日 1 回実行します。
タイムスケジューラでもいいのですが、私は iptv 録画のために cron をいろいろいじるので cron に直接書き込んだ方が確実です。
30 12 * * * user /volume1/backup/NAStoXserver_rsync/NAStoXserver_rsync.shただし、これが動くためには NAS と xserver 間でキーを作成して ssh で接続するための設定が必要です。
rsync は基本的に一方向であり双方向にはできません。しかし、synology drive というアプリを使えば NAS とローカルマシーンを双方向・一方向どちらでも設定できます。
現在、ホームディレクトリは /home/moheno で、その中にはいろいろなコンテンツが入っています。
これまでは、この中のドキュメントだけを同期していましたが、今後は原則的にすべてを同期したいと考えています。
そうすれば、どこにいても全く同じ環境で作業することができます。
ただし、別宅ではテザリング環境なので同期をカスタマイズする必要があります。
現在、iptv の ts ファイルを NAS にダウンロードして、その ts ファイルをローカルマシンにダウンロードしてシェルスクリプトで処理して mp4 に merge して、 NAS 718 のアーカイブに保存しています。
自宅では、自宅内の LAN 環境なのでほぼ 100 MB/sec でダウンロードされるのですが、自宅以外ではその 100 分の 1 になってしまうことがあります。
しかし、先日気づいたのですが synology drive を使うと 10 MB/sec くらいでは同期できるようです。
まずは、NAS 720 の ts ファイルをローカルのフォルダに同期・コピーします。
NAS 上で ts ファイルを保存するフォルダをチームフォルダにして、ローカルに /home/bak を作成します。
sudo mkdir /home/baksudo chown moheno:moheno /home/bakchmod 700 /home/bakこの 2 つの間で synology drive を設定すると、NAS に ts ファイルが保存されたとほぼ同時にローカルマシンにも同じファイルが保存されます。
これを ffmpeg で merge して、今度は NAS 718 の tempMP4 というチームフォルダと同期します。
編集作成した mp4 を NAS 718 へと同期します。
ローカルマシンに以下のようなフォルダを作成して、
sudo mkdir /home/tempMP4sudo chown moheno:moheno /home/tempMP4chmod 700 /home/tempMP4このフォルダと NAS の /volume1/tempMP4 とを同期させ、編集された mp4 を /home/tempMP4 の中に入れれば勝手に NAS 718 へ同期してくれます。
後で NAS にログインして適切な場所に移動するのは簡単です。
これまでは、自宅以外では 1 GB 以上もある ts ファイルをすべてローカルにダウンロードして処理し、これまた巨大なファイルを NAS へとアップロードしていました。
こんなことは絶対ないと思いますが、xserver が何らかの原因でダウンするととても困ります。
そこで、いくつかのデータを xserver から NAS へコピーします。
現在、xserver 上には 10 個以上のデータベースが設定してありますが、重要なものだけを毎日ダンプファイル作成しています。
#!/bin/sh
dirpath='/home/moheno/DBbak/vocabula'
# 今日のバックアップファイル名filename=vocabula_$(date +%y%m%d)
# バックアップ作成mysqldump -uuser -ppass moheno_vocabula > "$dirpath/$filename.sql"chmod 700 "$dirpath/$filename.sql"
# 最新の7つ以外を削除ls -1t "$dirpath"/vocabula_*.sql | tail -n +8 | xargs -r rm -fshellこのシェルスクリプトを xserver 上の cron で 1 日 1 回実行します。
ファイル数が 7 個を超えると古いものは削除されます。
この xserver 上のファイルをディレクトリごと NAS へと rsync します。
以下のようなシェルスクリプトを NAS 上に作成します。
#!/bin/sh
logdir="/volume1/backup/laravel_bak/logs"
# vocabularsync -avzu \ -e 'ssh -p 10022 -i ~/.ssh/moheno.key' \ --delete \ --checksum \ moheno@sv12345.xserver.jp:~/DBbak/vocabula \ /volume1/backup/laravel_bak \ >> "$logdir/rsync_vocabula_$(date +%Y%m%d%H%M%S).log" 2>&1
# ==========================# 古いログを削除(30日より前のもの)# ==========================find "$logdir" -type f -name "rsync_*.log" -mtime +30 -exec rm -f {} \;このシェルスクリプトを cron で 1 日 1 回実行します。
そうすると NAS のあるフォルダに以下のようにダンプファイルがコピーされます。
astro を軽くするために、重い動画ファイルは astro ブログ内で更新されない場所に置いておく必要があります。
そのファイルのバックアップは xserver 上にある限りは心配ないと思いますが、念の為に NAS に rsync します。
以下のようなシェルスクリプトを作成します。
#!/bin/sh
logdir="/volume1/moheno_jstree/logs"
rsync -avzu \ -e 'ssh -p 10022 -i ~/.ssh/moheno.key' \ --delete \ --checksum \ moheno@sv12345.xserver.jp:~/moheno.xsrv.jp/public_html/jstree \ /volume1/moheno_jstree \ >> "$logdir/rsync_moheno_jstree_$(date +%Y%m%d%H%M%S).log" 2>&1
# ==========================# 古いログを削除(30日より前のもの)# ==========================find "$logdir" -type f -name "rsync_*.log" -mtime +30 -exec rm -f {} \;これも cron で 1 日 1 回実行すると、NAS 上に xserver に保存した動画が rsync されます。
rsync なので scp と違って差分だけを変更するため爆速で実行されます。
現在 xserver の容量は以下のようになっています。
あと 150 GB くらいは使えるようです。
アルバムで高解像度の動画をどんどん撮ると以外に早く一杯になるかもしれませんが、動画は ffmpeg である程度圧縮したりできるのでなんとかなるのではないかと思います。
また、backup も万が一消失してもそれほど困らないものもあるので仕分けするようにしたいt思います。
ちょっと関係ない話ですが、私は 10 年ほど前に linux を導入したことがきっかけで windows がとても嫌いになりました。
windows と microsoft のせいでかなりの時間を浪費してきた感じがしています。
私のコンピュータには dual boot できるものが 2 台あり、linux mint とは別に windows 10 が入っています。
windows 10 がいつの間にか 11 に勝手にアップデートされ、ドキュメントが one drive というものに勝手に同期されるようになりました。
one drive を強制的に削除するとローカルのファイルも消えるようですが、これはひどい話です。microsoft がチンピラみたいな仕事してます。
edge だって全然使いたくないのにアンインストールできません。すべての設定はユーザーの意思に任せるべきだと思うのですが、microsoft はそう考えていないようです。
linux ではそういうことは全くありません。自分の好きなようにカスタマイズができますし、それは当然のことだと思います。
最近では特殊な場合を除いてほとんど windows には触りません。年賀状は windows で筆まめで書いていますし、Davinci Resolve や読んでココも windows でしか動かないのでその時に使うだけです。
そんな windows であれば、何らかのファイルを作成したらすぐに NAS へアップロードし、ドキュメントなどには絶対に置かないようにしています。 私の中では windows はその程度の存在です。