dotcloudからファイルをバックアップするシェルスクリプト

  • dotcloudにアップしたデータをバックアップする。
    • 最初の数行、NAME_SPACE,DEPLOYMENT,SSH_PORT ぐらい変更すれば動作するはず。
    • 別にcode/以下はバックアップ取れてるよって場合はデータ置き場を指定すればdotcloud上のデータのバックアップとして使える。
    • SSH_PORTは dotcloud info ymko.node で表示されるポートのこと
#!/bin/sh
# exit script when command failed
set -e

NAME_SPACE=node
DEPLOYMENT=ymko
SSH_PORT=xxxx                 # dotcloud info DEPLOYMENT.NAME_SPACE
REMOTEHOST_TARGET_DIR=code/
LOCALHOST_BACKUP_DIR=/tmp
IDENTITY_FILE=$HOME/.dotcloud/dotcloud.key

BACKUP_NAME=${NAME_SPACE}.${DEPLOYMENT}.$(date +%Y-%m-%d_%H%M%S).tar.gz

#=======================================================
# tar archive
#=======================================================
ssh dotcloud@${NAME_SPACE}.${DEPLOYMENT}.dotcloud.com \
    -p ${SSH_PORT} \
    -i ${IDENTITY_FILE} \
    tar cfzh /tmp/${BACKUP_NAME} ${REMOTEHOST_TARGET_DIR}

#=======================================================
# get archive from remote host
#=======================================================
scp -P ${SSH_PORT} \
    -i ${IDENTITY_FILE} \
    -q \
    dotcloud@${NAME_SPACE}.${DEPLOYMENT}.dotcloud.com:/tmp/${BACKUP_NAME} \
    ${LOCALHOST_BACKUP_DIR}

echo "Backup Success!! ${LOCALHOST_BACKUP_DIR}/${BACKUP_NAME}"
# Backup Success!! /tmp/node.ymko.2011-07-28_061338.tar.gz
    • 雑多なメモ
// sshのポート番号を調べる
$ dotcloud info ymko.node
build_revision: rsync-1307827898.94
cluster: wolverine
config: {}
created_at: xxxxxxxxxxxxxxxxxxxx
namespace: ymko
ports:
-   name: ssh
    url: ssh://dotcloud@node.ymko.dotcloud.com:xxxx <- ここ
-   name: http
    url: http://node.ymko.dotcloud.com/
state: running
type: nodejs

// ssh ログインできる(=dotcloud ssh ua.ymko のコマンドと同じ)
$ ssh dotcloud@node.ymko.dotcloud.com -p xxxx -i ~/.dotcloud/dotcloud.key

// コマンドも実行できる
$ ssh dotcloud@node.ymko.dotcloud.com -p xxxx -i ~/.dotcloud/dotcloud.key \
  tar zcfh backup.tar.gz code/

// これを応用してscpを使う
$ scp -P xxxx -i ~/.dotcloud/dotcloud.key \
  dotcloud@node.ymko.dotcloud.com:/home/dotcloud/backup.tar.gz .