人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

centosでcronによるバックアップを試みている者です。
先にこのような内容で質問しております。
http://q.hatena.ne.jp/1344989103
ベストアンサーの方に書いていただいたスクリプトでテストをしたのですが、
以下のエラーが返されてしまいます。
/bin/sh: /home/news1/backup.sh: Permission denied

cronはroot権限で「crontab-e」から「56 * * * * /home/news1/backup.sh」のように作成してテストした結果です。
解決方法が分かる方教えて下さい。


●質問者: news1
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● gizmo5
●300ポイント ベストアンサー

/home/news1/backup.sh には、実行権限つけてますか?

chmod +x /home/news1/backup.sh

とするか、crontab の方を、

56 * * * * /bin/sh /home/news1/backup.sh

としてみてください。


news1さんのコメント
次のログが出ました。 /home/news1/backup.sh: line 5: : command not found cp: cannot stat `/var/www/html/aaa/bbb\r/data': No such file or directory cp: cannot stat `/var/www/html/aaa/bbb\r/file': No such file or directory /home/news1/backup.sh: line 8: /var/www/html/bk /webdb.backup : No such file or directory tar: .\r: Cannot stat: No such file or directory tar (child): /var/www/html/sendbk\r/20120822bk.tar.gz: Cannot open: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now また/var/www/html/にはbk??というディレクトリが作成されております。 cd bk??をかけると ]# ot@www14192ue bkと表示されます。

news1さんのコメント
上記にある 56 * * * * /bin/sh /home/news1/backup.sh と変更を掛けた結果です

gizmo5さんのコメント
スクリプト backup.sh の改行コードがおかしくなってると思います。 centos 上で、vi を使って backup.sh を開いて、内容を確認してみてください。

news1さんのコメント
あとpostgresのバックアップについて、ディレクトリの順路を詳細に標記しました

news1さんのコメント
backup.shの改行コードですが、確認したのですが特に不明な点はありませんでした。 以下転載します。 #!/bin/sh TEMP_DIR=/var/www/html/bk DEST_DIR=/var/www/html/sendbk CYBOZU_DIR=/var/www/html/aaa/bbb mkdir $TEMP_DIR cp -fr $CYBOZU_DIR/data $CYBOZU_DIR/file $TEMP_DIR su - postgres -c "/usr/local/pgsql/bin/pg_dump -b -Fc -U postgres webdb" > $TEMP_DIR/webdb.backup cd $TEMP_DIR tar czf $DEST_DIR/`date +%Y%m%d`bk.tar.gz .←この半角空けドットは問題ないですよね? rm -fr $TEMP_DIR 変更点1 crontabでの変更(56 * * * * /bin/sh /home/news1/backup.sh)をやめて chmod +x /home/news1/backup.shの命令を掛けました。 変更点2 postgresのバックアップについて、ディレクトリの順路を詳細に標記しました そうすると次とおりエラー内容が変わりました。 /bin/sh: /home/news1/backup.sh: /bin/sh^M: bad interpreter: No such file or directory 現状はこのとおりです。

gizmo5さんのコメント
>> tar czf $DEST_DIR/`date +%Y%m%d`bk.tar.gz .←この半角空けドットは問題ないですよね? << tar の行の最後のピリオドは、意識して書いてます。 >> /bin/sh: /home/news1/backup.sh: /bin/sh^M: bad interpreter: No such file or directory 現状はこのとおりです。 << backup.sh の一行目の末尾に、余計な ^M が入ってるので、「そんなファイルはない」と怒られているようです。 エラーメッセージを見る限りでは、行の末尾がおかしくなってるように見えるのですが…

news1さんのコメント
エディタに貼り付け直して、再度cronで実行を掛けたところ、以下のエラーが出ました /home/news1/backup.sh: line 4: : command not found cp: cannot stat `/var/www/html/aaa/bbb\r/data': No such file or directory cp: cannot stat `/var/www/html/aaa/bbb\r/file': No such file or directory tar: .\r: Cannot stattar (child): : No such file or directory /var/www/html/sendbk\r/20120822bk.tar.gz: Cannot open: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now /home/news1/backup.sh: line 11: : command not found

gizmo5さんのコメント
さくらVPSでは、ftp の設定はしてありますか? 手元のPCで作成したスクリプトを、ftp でアスキーモードで送信するとどうなるでしょう?

news1さんのコメント
ftp設定はしておりません。時間がある時に挑戦してみようと思います。

gizmo5さんのコメント
さくらVPSにつなぐときに、何を使ってますか? TERA TERM ですか?

news1さんのコメント
そうですteratermです

gizmo5さんのコメント
メニューの「設定」→「端末」のダイアログで、 「改行コード」を、受信、送信の両方を「CR」にして、 エディタ(vi?)に、スクリプトのコードを貼り付けてみてください。 もしかしたら、「CR+LF」になっているのではないか、と想像します。

news1さんのコメント
確認してみましたが、改行コードは両方CRでした

news1さんのコメント
ログは次のように変化しています /bin/sh: /home/news1/backup.sh: Permission denied

news1さんのコメント
上記のエラーログは、backup.shを作り直したためのものでした。 chmod +x /home/news1/backup.sh を実行して再度crontabから実行を掛けてみました。 そうすると見事圧縮バックアップは成功していました。 本当にありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ