« AS-202TEをADM3にアップデートしてEntware-ngを使ってみる | トップページ | AS-202TEにmod_wsgiをインストールする »

2017.09.16

Time Machineの保存先をAS-202TEにしたときの保存領域を制限する方法

Macのバックアップ機能であるTime Machineですが、バックアップ先をNASにしておくと、Macにディスクを直付しなくても自動的かつ定期的に差分バックアップをとれますので、とても便利です。
Asustor製NASである、AS-202TEも、他の多くのNASと同様にTime Machineによるバックアップをサポートしていますのでこの機能を利用しています。

ただ、一つ問題がありまして、この機能はnetatalkで実現されているのですが、Time Machine保存領域の制限をする機能を有効化する術が標準では利用可能でありません。このままではバックアップ領域が肥大化してしまいます。せっかく、netatalkにはTime Machine保存先の容量制限機能があるのですから、この機能を有効化する方法がないか試してみました。

この記事は、ADM 3.0.0.R8N2で検証したものです。

sshを使ってAS-202TEにログインします。


# afpd -v
afpd 3.0.5 - Apple Filing Protocol (AFP) daemon of Netatalk

と表示されますので、netatalk 3.0.5がインストールされていることが分かります。

/usr/builtin/etc/netatalk/afpshare.confを参照すると、以下の記述が見られます(NASのTime Machine機能を有効にしてTMbackupドライブを保存先に設定した場合)。


[TMbackup]
path = /volume1/TMbackup
asacl = no
recycle bin = yes
time machine = yes

となっているところの直下に、

vol size limit = 256000

を加えてあげれば、容量制限機能を有効化できるはずです。なお、256000は、MB単位なので、256GBに容量制限するための数値になります。この数値は環境に合わせて適宜設定して下さい。

そこで、afpshare.confにvol size limitを設定する行を追加し、netatalkをリスタートします。


# /usr/builtin/etc/init.d/S52netatalk restart

2017091101

容量表示が256GBから少々ずれていますが、容量制限できています(本来は700GB程度の空きがある状態)。

問題は、NASを再起動すると、afpshare.confが元のファイルに上書かれてしまうこと。起動時に設定を有効できるようにしないと、起動のために設定ファイルを書き換えなければならなくなります。

AS-202TEをADM3にアップデートしてEntware-ngを使ってみるでは、Entware-ngをインストールしたわけですが、サポートサイト( Entware-ng/Entware-ng:github)にあるとおり、ブート後に/opt/etc/init.d/rc.unslung start を、シャットダウン前に/opt/etc/init.d/rc.unslung stopを実行します。rc.unslungを参照すると、同ディレクトリにスクリプトを配置すると、当該スクリプトを実行することが分かります。そこで、NAS起動後にafpshare.confを書き換えてnetatalkをリスタートするスクリプトを実行すれば良いと考えました。

Asustor NASでVNCサーバーを本体起動時に自動起動するようにする:あくまで暫定措置としてのブログを参考に、スクリプトを作成しました。

/root/script/apache2に以下のスクリプトS99netatalkを作成します。このスクリプトに実行属性を付加することを忘れずに。


#!/bin/sh
#
SOURCE_DIR=/usr/builtin/etc/netatalk
TARGET_DIR=/usr/builtin/etc/netatalk
SCRIPT_DIR=/usr/builtin/etc/init.d
TMP_DIR=/root/tmp
SIZE=256000
#
do_start() {
$SCRIPT_DIR/S52netatalk stop
#
awk -v SIZE=$SIZE '/^time machine = yes/ {print $0; getline tmp; \
if (tmp ~ /^vol size limit/) print tmp ; \
else {print "vol size limit = " SIZE ; print tmp}} \
$0 !~ /^time machine = yes/ {print $0}' \
$SOURCE_DIR/afpshare.conf > $TMP_DIR/afpshare_tmp.conf
#
cp -f $TMP_DIR/afpshare_tmp.conf $TARGET_DIR/afpshare.conf
$SCRIPT_DIR/S52netatalk start
return 0
}
#
case "$1" in
start)
do_start
;;
stop)
;;
restart)
do_start
;;
*)
echo "usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0

さらに、/root/tmpを一時ファイル置き場として作成します。
そして、/opt/etc/init.d/に上のスクリプトへのシンボリックリンクを作成し、NASを再起動します。

こうして、再起動後にafpshare.confを見ると、time machine = yesの行の直下にvol size limitの行が挿入されており、実際にTime Machineを動かすと、容量制限できていることが確認できました。

|

« AS-202TEをADM3にアップデートしてEntware-ngを使ってみる | トップページ | AS-202TEにmod_wsgiをインストールする »

NAS」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1024423/71683215

この記事へのトラックバック一覧です: Time Machineの保存先をAS-202TEにしたときの保存領域を制限する方法:

« AS-202TEをADM3にアップデートしてEntware-ngを使ってみる | トップページ | AS-202TEにmod_wsgiをインストールする »