エロサイトの作り方

2013年11月から勉強しながらエロサイトを作っています。

画像のバックアップ用シェル

シェルの墓場シリーズ。

以前、クローラーをさくらVPSに置いていた頃のバックアップ用シェル。

あの頃はストレージがカツカツで、定期的にローカルに画像を落とさないとディスクがいっぱいになっていた。今はクローラーごとローカルに持ってきて3TBのHDDに入れている(ので使わなくなった)。

ちなみに、毎夜毎晩3-4GBクロールしても怒らないOCNはマジ神プロバイダだと思う。自宅クローラーをやるならOCNが便利。これ豆な。

1. 前日までに取得した画像を圧縮して退避

#!/bin/bash

yesterday=`date '+%Y-%m-%d' -d '1 days ago'`
workdir=/opt/crawler/images/
backupdir=~/backup/images
mkdir -p $backupdir

cd $workdir
mkdir -p $yesterday

find . -maxdepth 1 -type d -daystart -mtime 1 -exec mv {} $yesterday/ \;
if [ $? -ne 0 ]; then
  echo "error: find command"; exit;
fi

cd $yesterday
tar czf $backupdir/images_$yesterday.tgz . || exit 1;
if [ $? -ne 0 ]; then
  echo "error: tar command"; exit;
fi

cd ..
rm -rf $yesterday

思い出など

  • 元々はrsyncで同期していたが、ファイル数が多すぎて転送できなくなった
  • 書き込み途中のファイルを転送したくなかったので、前日分のバッチ処理にした
  • シェルは記述法が好きじゃないので今ならNode.jsで書く
  • 画像自体に圧縮かかっているからtarのzは要らんと思うが、これ癖だ

2. 自宅サーバーからダウンロードして展開

#!/bin/bash

mount | grep backup_hdd
if test $? -ne 0; then
  mount -t smbfs //GUEST:@nashdd/backup_hdd ~/backup_hdd
fi

cd ~/backup_hdd
rsync -auv --remove-source-files sakura:backup/images/ ./work/images/

for filepath in ./work/images/*.tgz
do
  echo tar xzf ${filepath}
  tar xzf ${filepath} -C ./images/
  rm ${filepath}
done

思い出など

  • NASがたまにunmountされるので再接続してから転送してる
  • tarでエラーが出ても圧縮ファイルを消すのでデータがロストする恐ろしい仕様だこれ