チップス

linux バックアップスクリプト scp


バックアップをする時にリモート側のディレクトリを削除してからバックアップをするために expect を使用しました。

#!/bin/bash

cd /backup

HOST=192.168.0.X
USER=ユーザー名
PASS=パスワード
TARGET_FILE=/backupdyndns
SRC_FILE=backup.tar.bz2
MYSQL_FILE=/backupdyndns/mysql

expect -c "
set timeout  3
spawn ssh ${USER}@${HOST}
expect {
\"Enter passphrase for key '/root/.ssh/id_rsa':\" {
send \"\r\"
expect \"${USER}@${HOST}'s password:\"
send \"${PASS}\r\"
} \"${USER}@${HOST}'s password:\" {
send \"${PASS}\r\"
}
}
send \"\r\"
expect \"\[${USER}@srv ~\]$\"
send \"cd ${TARGET_FILE}\r\"
expect \"\[${USER}@srv ~\]$\"
send \"rm -rf ${MYSQL_FILE}\r\"
expect \"\[${USER}@srv ~\]$\"
send \"exit\r\"
interact
"
expect -c "
set timeout 3
spawn sudo scp -rp /backup/mysql ${USER}@${HOST}:${TARGET_FILE}
expect {
\"Enter passphrase for key '/root/.ssh/id_rsa':\" {
send \"\r\"
expect \"${USER}@${HOST}'s password:\"
send \"${PASS}\r\"
} \"${USER}@${HOST}'s password:\" {
send \"${PASS}\r\"
}
}
expect eof
"

   チップス