完全屬於我自己的Blog,運行在我的路由器H218N上.記錄著我想記錄的文字.

分类 念叨 下的文章

09月 10

自動備份transmission的resume文件的Shell腳本

自從在這個路由上架設了這個Blog,就不得不考慮穩定性的問題了。如果木有神馬意外的話,穩定性還是可以的。

但是,就在昨天,一個失誤,把路由器的電源短路了,然後掛在路由下的transmission,幾個大種子的resume都損壞了,混PT嘛,小水管就是為了多掛幾個種,多混點積分而已。

幾個10+G的,1個100+G的要重新Hash,用電腦Hash都費時了,更不說用只有500Mhz,木有磁盤控制器的路由器了,為此,看了下transmission的文檔,寫了這個腳本。

resume文件損壞了,只要用備份文件還原上去就不用重新校驗了,因為是已經下載好的種子,所以一般沒有問題,磁盤損壞除外。

#!/bin/sh
BAKDIR=/mmc/; #备份文件存放路径
RESUMEDIR=/mmc/root/transmission/resume; #resume文件所在路径
time=3; #停顿时间,如果备份失败,可以尝试加大停顿时间
resume=resume; #备份文件名,不包含扩展名.
#COMMAND="transmission-remote 127.0.0.1:9091 --auth=transmission登录用户:登录密码"
COMMAND="transmission-remote 127.0.0.1:9091";

$COMMAND -t $TR_TORRENT_ID  -S > /dev/null;
sleep $time;
if [ ! -e $BAKDIR/$resume.tar.bz2 ] && [ -e $BAKDIR/AddByResumeBaker ] ; then
	mv -f $BAKDIR/AddByResumeBaker $BAKDIR/AddByResumeBaker.old;
fi
if [ -e $BAKDIR/$resume ] ; then
	mv -f $BAKDIR/$resume $BAKDIR/$resume.old;
fi

if [ ! -e $BAKDIR/AddByResumeBaker ] ; then
	if [ -e $BAKDIR/$resume.tar.bz2 ] ; then
		mv -f $BAKDIR/$resume.tar.bz2 $BAKDIR/$resume.tar.bz2.old
	fi
	cd $RESUMEDIR ;
	tar -rf $BAKDIR/$resume ./;
	touch $BAKDIR/AddByResumeBaker;
elif [ -e $BAKDIR/$resume.tar.bz2 ] && [ -e $BAKDIR/AddByResumeBaker ] ; then
	RESUMEFILE=$TR_TORRENT_NAME.`echo $TR_TORRENT_HASH|cut -c1-16`.resume;
	cd $BAKDIR;
	tar -jxf $BAKDIR/$resume.tar.bz2;
	cd $RESUMEDIR ;
	tar -rf $BAKDIR/$resume ./$RESUMEFILE;
fi

cd $BAKDIR;
tar -jcf $BAKDIR/$resume.tar.bz2 ./$resume;
$COMMAND -t $TR_TORRENT_ID  -s > /dev/null;
rm -f $BAKDIR/$resume;
exit 0;

注意一下的是第6,7行,如果你的登錄transmission需要用戶名和密碼的話,勞煩這裡也要加上去。如果和我一樣,可以匿名登錄的話,就不用改了。

使用舉例:

將上述腳本保存為resumebaker.sh後,(如果用複製粘貼的,注意將換行符改成Unix的,可以用Notepad++)。

mv resumebaker.sh /opt/bin/
chmod +x  /opt/bin/resumebaker.sh

然後在transmission的配置文件settings.json中找到這兩行,(如果你的配置文件沒有這兩行,可能要升級transmission了)

    "script-torrent-done-enabled": true, 
    "script-torrent-done-filename": "/opt/bin/resumebaker.sh", 

true代表啟用 下載完成後執行腳本的功能,/opt/bin/resumebaker.sh代表每當一個種子下載完成後執行的腳本,也就是這個自動備份腳本。放到什麼路徑就填什麼路徑。

腳本會自動檢測是否存在備份文件,如果不存在備份文件,會備份所有resume文件,如果已經存在,則會將新下載完那個種子的resume文件增加到備份文件中。

 

Update:

部分嵌入式系統如Tomato,tar可能不完整,不支持 -r 參數,需要安裝完整版的tar。

Optware 上執行

ipkg install tar

Entware 上執行

opkg install tar

然後在腳本中的tar加上絕對路徑,如:

/opt/bin/tar
08月 29

經過3日奮鬥,路由上的Blog基本上搞掂了!!

雖然唔係好鍾意寫文字,但係都係整翻個Blog嚟玩下啦~

重點系個Blog系自己搭嘅運行在我的HG320上(內存升級為128M的,掛著一個1T硬盤,兼職下載機,哈哈。)

本來想自己編譯lighttpd同PHP的,但係搞咗N耐,程序搜索依賴庫的默認搞唔掂,貌似系交叉編譯工具同uClib問題。

雖然系數位天堂問人之後,知道打patch之後可以搞掂,但係對住toolchain都想嘔了。。。

咁啱有見到新版“Optware”->Entware,軟件都幾新,唔使自己編譯就梗系偷懶啦~

不過冇自己想用嘅Yaf,唯有自己編譯咯,幸好PHP擴展依賴關係易搞啫~

配置本站果時,搞個“新回复郵件通知”果時,迫於無奈又編譯咗Xdebug,嘗試咗第一次遠程調試

最後發現問題竟然系因為路由器loopback失效。。。

怒了,直接把原來讀取變量果行屏蔽掉,補上$host=127.0.0.1; 反正又唔會轉移去其他地方了,寫死又如何~

本Blog運行在路由器上(又重複了-_-||)基於Linux+Lighttpd+PHP5.4.5+Sqlite3,使用Typecho+N多插件(插件各種Mod)。

後台截圖

阅读全文 >>

12月 14

好吧,暫時在這裡安家吧.

一直以來都想自己寫一個blog程序,但係一直都有各種破事或者各種誘惑. 最近心情好,玩玩SAE,就暫時用哩個WP啦~