アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

シェルスクリプトを使い、サーバAからサーバBへファイルを定期的にコピーしようと、以下のシェルスクリプトを作りました。

test.sh
=================
#!bin/sh

HOST1=hostB.com (さくらVPSサーバ)
USER1=hugahuga
PASS1=hogehoge
TARGET_DIR1=/home/user/data/  #サーバB(転送先)のディレクトリ
BACKUP_DIR1=/home/user/data_new/*  #サーバA(転送元)のディレクトリ

expect -c "
set timeout 30
spawn scp ${BACKUP_DIR1} ${USER1}@${HOST1}:${TARGET_DIR1}
expect {
\" Are you sure you want to continue connecting (yes/no)? \" {
send \"yes\r\"
expect \"password:\"
send \"${PASS1}\r\"
} \"password:\" {
send \"${PASS1}\r\"
}
}
interact
"
=================
sh test.sh
すると、以下のようなエラーが出ます。。

/home/user/data_new/*: No such file or directory

そのまんまだとは思うのですが、ファイルもディレクトリもありますし、上記スクリプトのSCPコマンド部分をコピペして、シェル上で実行すると普通にうまくいきます。

サーバAもBもUbuntu12.04です。

一体何が原因なのでしょうか・・

A 回答 (2件)

>/home/user/data_new/*: No such file or directory



エラーメッセージの通り、*というディレクトリが無いのでしょう。

>上記スクリプトのSCPコマンド部分をコピペして、シェル上で実行すると普通にうまくいきます。

シェルが*を展開しているから……でしょう。

BACKUP_DIR1=`ls /home/user/data_new/*`
としてみたらどうでしょうか?
# ` は日本語キーボードの設定ならShift+@なのでご注意を。
# Shift+7の方の記号ではありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
私の環境では上手くいきませんでした。。

お礼日時:2012/12/24 01:06

rsyncなどで処理した方がよいのでは?

    • good
    • 0
この回答へのお礼

ありがとうございます。rsyncでやることにしました。

お礼日時:2012/12/24 01:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!