チップス

except コマンドを使って、複数のファイルをリモートのコンピュータにコピーする


#!/bin/bash

PATH=/usr/local/sbin:/usr/bin:/bin

DATADIR=/backup
cd ${DATADIR}

HOST=192.168.0.XXX
USER=XXXXX
PASS=XXXXX
TARGET_DIR=/mnt/backupdir/

# コピー先の古いファイルを削除
expect -c "
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_DIR}\r\"
expect \"\[${USER}@srv ~\]$\"
send \"rm -f ${TARGET_DIR}/${SRC_FILE}*.tar.bz2\r\"
expect \"\[${USER}@srv ~\]$\"
send \"exit\r\"
interact
"

# ファイルをリモートのディレクトリにコピーする
for f in `find ${DATADIR} -name "backup*.tar.bz2" -type f -print`
do
expect -c "
set timeout -1
spawn scp $f ${USER}@${HOST}:${TARGET_DIR}
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
"
done

   チップス