画像のバックアップ用シェル
シェルの墓場シリーズ。
以前、クローラーをさくら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でエラーが出ても圧縮ファイルを消すのでデータがロストする恐ろしい仕様だこれ