2016年を振り返る
- 2016 12/31
ひさしぶりに PostgreSQL を使おうと思い psql コマンドを実行したら Library not loaded: libreadline エラーが出たので brew upgrade postgresql して解決したというお話です。
$ psql dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib Referenced from: /usr/local/bin/psql Reason: image not found [1] 61053 trace trap psql |
brew update brew upgrade postgresql launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist mv /usr/local/var/postgres /usr/local/var/postgres9.3.1 initdb /usr/local/var/postgres pg_upgrade \ -b /usr/local/Cellar/postgresql/9.3.1/bin \ -B /usr/local/Cellar/postgresql/9.6.1/bin \ -d /usr/local/var/postgres9.3.1 \ -D /usr/local/var/postgres cp /usr/local/Cellar/postgresql/9.6.1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist |
たまに PostgreSQL を使うぞってときに version アップデートからハマりたくはないですよね。
やっと当ブログの WordPress のファイルとデータベースをバックアップして Google ドライブにアップロードするまでの処理を自動化しました。
扱っている技術的なものは以下のとおりです。
ひとまず、書いたシェルスクリプトを書き残しておきます。
# backup_db.sh DB_NAME=mydbname DB_USER=mydbuser DB_PASSWORD=mydbpassword DB_HOST=localhost DATE_STR=$(date +\%Y\%m\%d-\%H\%M\%S) BACKUP_PATH=/tmp BACKUP_FILE=$DB_NAME-$DATE_STR.sql GDRIVE_DIR_ID=0B840dMOrdKT5am9aRDlNUUFic0k KEEP_DAYS=3 ## backup DB cd $BACKUP_PATH mysqldump $DB_NAME --default-character-set=binary \ -h $DB_HOST -u $DB_USER -p$DB_PASSWORD > $BACKUP_FILE tar zcvf $BACKUP_FILE.tar.gz $BACKUP_FILE gdrive upload --parent $GDRIVE_DIR_ID $BACKUP_FILE.tar.gz rm -f $BACKUP_FILE.tar.gz $BACKUP_FILE ## Housekeeping LIMIT_TIMESTAMP=$(date -d "$KEEP_DAYS days ago" +%s) gdrive list --no-header --max 1000 --query "'$GDRIVE_DIR_ID' in parents" | while read ln do ITR_ID=$(echo $ln | awk '{print $1}') ITR_DATE=$(echo $ln | awk '{print $(NF-1),$NF}') if [ $(date -d "$ITR_DATE" +%s) -lt $LIMIT_TIMESTAMP ] then gdrive delete $ITR_ID fi done |
# backup_file.sh DATE_STR=$(date +\%Y\%m\%d-\%H\%M\%S) TARGET_PATH=/var/www/vhosts/ TARGET_FILE=codenote.net BACKUP_FILE=$TARGET_FILE-$DATE_STR.tar.gz GDRIVE_DIR_ID=0B840dMOrdKT5SFg5UkZ2c05aWkU KEEP_DAYS=7 ## backup files cd $TARGET_PATH tar cfz $BACKUP_FILE $TARGET_FILE/ gdrive upload --parent $GDRIVE_DIR_ID $BACKUP_FILE rm -f $BACKUP_FILE ## Housekeeping LIMIT_TIMESTAMP=$(date -d "$KEEP_DAYS days ago" +%s) gdrive list --no-header --max 1000 --query "'$GDRIVE_DIR_ID' in parents" | while read ln do ITR_ID=$(echo $ln | awk '{print $1}') ITR_DATE=$(echo $ln | awk '{print $(NF-1),$NF}') if [ $(date -d "$ITR_DATE" +%s) -lt $LIMIT_TIMESTAMP ] then gdrive delete $ITR_ID fi done |
gdrive list でディレクトリの一覧を表示する。
$ gdrive list --query "mimeType='application/vnd.google-apps.folder'" Id Name Type Size Created 0B840dMOrdKT5am9aRDlNUUFic0k db dir 2016-12-13 00:17:46 |
随時、内容をアップデートしていきます。
Node.js + Mongoose な構成のウェブサービスのテストコードで timekeeper という時間操作モジュールを利用していて FakeDate でハマったことをご紹介します。