Re: FTP (Re: w32tex)

名前: kuroky
日時: 2009-08-08 21:32:54
IPアドレス: 219.117.161.*

>>53493 以下のようなシェルスクリプトを cron.daily に登録すると,日ごとにディレクトリ を掘ってファイルを格納してくれると思いますが,いかがでしょうか. どなたかご提供いただける方がいれば,ご参考にどうぞ. (テストは不足しています.まずければコメントいただけると幸いです.) 毎月一日のものはオリジナルとの過不足なく作成してずっと残し, それ以外の日は多少オリジナルよりもファイル数が多くても,サーバアクセス負荷を 軽減できるように,という意図を持って作ってみました. (ファイル数が多くなるのは,オリジナルにおいて,バージョン番号が変わるなど ファイル名が改訂されたり,ファイルが削除されたりしたときです; ローカルではファイルコピーが発生するので,処理にはそれなりに時間がかかります.) ---- #!/bin/sh BKADDRESS=http://w32tex.org/ BKDIRPREFIX=/var/www/w32tex/ BKPREFIX=$BKDIRPREFIX/w32tex- BKDAY=`date +%d` BKMONTH=`date +%m` BKYEAR=`date +%Y` BKDIR=$BKPREFIX$BKYEAR$BKMONTH$BKDAY BKTODAY="$BKPREFIX"today BKYESTERDAY="$BKPREFIX"yesterday if [ $BKDAY -eq 1 ]; then BKDIR="$BKDIR"LTS; rm -rf $BKTODAY # Once a month, clear the $BKTODAY dir not to enlarge too much. fi # download mkdir -p -m 700 $BKTODAY wget -P $BKTODAY -q -m -np -nH $BKADDRESS # today/yesterday -(hard link)-> the day mkdir -p -m700 $BKDIR for f in `find $BKTODAY`; do ff=`echo $f | sed -e "s|$BKTODAY||g"`; if [ -z $ff ]; then continue; elif [ -d $f ]; then mkdir -p $BKDIR/$ff; elif [ ! -f $BKYESTERDAY ] || [ $BKTODAY/$ff -nt $BKYESTERDAY/$ff ]; then ln $BKTODAY/$ff $BKDIR/$ff; else ln $BKYESTERDAY/$ff $BKDIR/$ff; fi; done chmod 755 $BKDIR # the day -(hard link)-> yesterday (to given fixed name) rm $BKYESTERDAY -rf mkdir -p -m 700 $BKYESTERDAY for f in `find $BKDIR`; do ff=`echo $f | sed -e "s|$BKDIR||g"`; if [ -z $ff ]; then continue; elif [ -d $f ]; then mkdir -p $BKYESTERDAY/$ff; else ln $BKDIR/$ff $BKYESTERDAY/$ff; fi; done # delete the directory of the last month except `Long Term Support'. if [ $BKDAY -eq 1 ]; then if [ $BKMONTH -eq 1 ]; then RMMONTH=$BKDIRPREFIX/`expr $BKYEAR - 1`12 else RMMONTH=$BKDIRPREFIX/$BKYEAR`expr $BKMONTH - 1` fi rm -rf "$RMMONTH"??; fi # clear today directory, then yesterday -(copy)-> today rm $BKTODAY -rf mkdir -p -m 700 $BKTODAY for f in `find $BKYESTERDAY`; do ff=`echo $f | sed -e "s|$BKYESTERDAY||g"`; if [ -z $ff ]; then continue; elif [ -d $f ]; then mkdir -p $BKTODAY/$ff; else cp -p $BKYESTERDAY/$ff $BKTODAY/$ff; fi; done

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)