こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

cronでバックアップsh

現在、hetemlというレンタルサーバでバックアップ用のシェルをcron登録しているのですが、
権限エラーが出てしまいます。何の権限エラーなのか解らないのですが、
どなたかご存知ないでしょうか?

[エラーメッセージ]
/bin/sh: /home/sites/heteml/users/xxx/db_bakkup.sh: Permission denied

[シェル]
#!/bin/sh

# ---------- 設定 ----------
# バックアップ元のデータベース
db_host=xx
db_name=xx
db_user=xx
db_pass=xx

# バックアップ先のディレクトリ・ファイル
bk_file=/xx/bak.sql

# ---------- ファイル名を設定 ----------
# ファイル名を設定
file_temp=$bk_file.sql

# ---------- バックアップ処理 ----------
# バックアップ先のディレクトリに移動
cd $bk_dir
if [ $? != 0 ]; then
echo "Backup directory does not exist."
exit 1
fi


# データベースをダンプ
mysqldump -h$db_host $db_name -u$db_name -p$db_pass --opt > $bk_file
if [ $? != 0 -o ! -e $file_temp ]; then
echo "Cannot dump database."
exit 1
fi

exit 0
------------------------------------

有識者の方、ご教授お願い致します。

投稿日時 - 2011-09-26 18:21:47

QNo.7035949

すぐに回答ほしいです

質問者が選んだベストアンサー

だれが吐き出しているエラーであるか記載しなとだめですよね。

cronデーモンのログに出ているのか、OSのシステムログなのか?

ちなみにそれぞれ見ましたか?

それによって「権限が無い」の意味合いが違うと思います。

cronであれば、実行者権限の設定を変えること。

http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=Linux+cron+%E8%A8%AD%E5%AE%9A%E3%81%AE%E4%BB%95%E6%96%B9

で設定の仕方がでていますね。設定された実行ユーザーで行うので、その設定されているユーザーに実行権がないと、cronデーモンでは「権限が無い」とでると思われるが・・・・

db_bakkup.sh=[シェル]
の内容であれば、SHでこのシェルファイルの実行で「権限が無い」と言っている。つまり、No1さんが言うとおり

777
755
775

にすればいいことになる。いずにせよ、私ならまず設定をしっかり把握する事からお勧めする。それからでも遅くはないですよ。

投稿日時 - 2011-09-26 19:09:49

お礼

#1さん,#2さんレス有難うございます。

権限エラーに関してはshファイルのパーミッションを777に設定することで解決しました!
その後もハマリましたが、
・shファイルをFTPソフトで転送時にアスキーモードで転送する
・mysqldump構文の-pの後ろにスペースを入れない
(mysqldump -h $db_host $db_name -u $db_name -p$db_pass --opt > $bk_file
)

という対処を行ったところ、無事バックアップが取れるようになりました。

この度はどうも有り難うございました!

投稿日時 - 2011-09-28 10:46:59

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

/home/sites/heteml/users/xxx/db_bakkup.sh のパーミッションが不足している?
取りえず、全ての権限を与える「777」を与えてcronで実行したらどうなります?

>mysqldump -h$db_host $db_name -u$db_name -p$db_pass --opt > $bk_file
「mysqldump」のパスが指定されていないのも気になりますが、777でどうなるかです。

投稿日時 - 2011-09-26 18:49:58

あなたにオススメの質問