はじめに
ドットインストールのシェルスクリプト入門を見たので、せっかくだから勉強がてら何かを書こうと思い、Kobitoのデータをバックアップするシェルスクリプトを書きました。
環境
- MacOS X 10.10.4 Yosemite
- Kobito 2.3.2
前提
Kobitoのデータ
Kobitoのデータは、
~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito
にある
- Kobito.db
- Kobito.db-shm
- Kobito.db-wal
- Kobito.db.xxxxxxx.bak
の3つ(4つ)。
Kobitoのデータの保存は、
- Kobitoを終了する
- メニュー - アイテム - 保存 を選択する
の2つの時にされるっぽい。
スクリプト
コード
backup_kobito.sh
#!/bin/bash
# データをバックアップするディレクトリ
backup_dir_path=~/Dropbox/project/Kobito
# Kobitoの元データ保存されているディレクトリ
data_dir_path=~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito
# バックアップディレクトリの作成
if [ ! -e $backup_dir_path ]; then
mkdir -p $backup_dir_path
fi
# バックアップファイルネームの作成
date=`date +"%Y%m%d"`
db_filename=Kobito.db.$date.bak
db_shm_filename=Kobito.db-shm.$date.bak
db_wal_filename=Kobito.db-wal.$date.bak
# バックアップ処理
echo "バックアップディレクトリは $backup_dir_path です"
cp -p $data_dir_path/Kobito.db $backup_dir_path/$db_filename && echo "Kobito.db を $db_filename としてバックアップしました"
cp -p $data_dir_path/Kobito.db-shm $backup_dir_path/$db_shm_filename && echo "Kobito.db-shm を $db_shm_filename としてバックアップしました"
cp -p $data_dir_path/Kobito.db-wal $backup_dir_path/$db_wal_filename && echo "Kobito.db-wal を $db_wal_filename としてバックアップしました"
説明
4-7行目:ディレクトリの指定
backup_dir_pathにバックアップを作成するディレクトリを指定する。
上のコードは、"~/Dropbox/project/Kobito"ディレクトリを指定している。
9-12行目:バックアップディレクトリの作成
バックアップを作成するディレクトリが存在しなければ作る。
14-18行目:バックアップファイルネームの作成
バックアップファイルネームはそれぞれ、"(元のファイルネーム)YYYYMMDD.bak"。
例えば、Kobito.dbを2015年7月16日にバックアップすると、"Kobito.db.20150716.bak"という名前になる。
20-27行目:バックアップ処理
ファイルのバックアップに成功すると、バックアップした旨を表示する。
実行
$ chmod 744 backup_kobito.sh
$ ./backup_kobito.sh
Kobito.db を Kobito.db.20150716.bak としてバックアップしました
Kobito.db-shm を Kobito.db-shm.20150716.bak としてバックアップしました
Kobito.db-wal を Kobito.db-wal.20150716.bak としてバックアップしました
$ ls ~/Dropbox/project/Kobito Kobito.db-shm.20150716.bak
Kobito.db-wal.20150716.bak
Kobito.db.20150716.bak
以上
すでに同名バックアップファイルが存在した時の上書き処理があった方がいいんだろうけど、どういう処理がベストなのかよくわからない……