- 締切済み
ダウンロードするシェルスクリプトについて
LINUXサーバAとBの2つあります Linux-Aでは/aaa/bbbの中に(bak-A-20120218tar.bz)と(bak-B-20120218.gz)と毎日バックアップファイルを作成しています Linux-Aの容量が多くなっては困るのでLinux-Bのサーバから (1)毎日、定時にLinux-Aにアクセスし、 (2)Linux-Aの(bak-A-20120218tar.bz)と(bak-B-20120218.gz)をLinux-Bにダウンロードしたあと (3)Linux-Aの(bak-A-20120218tar.bz)と(bak-B-20120218.gz)を消去する このプロセスをシェルスクリプトに記載してCron登録したいと思っています そこでそのスクリプトを次のように考えました ************シェルスクリプト********************************* open xxx.yyy.ne.jp ・・・Linux-Aのサーバへ接続 user mmmmm nnnnnnn ・・・Linux-Aのサーバへ接続 cd /aaa/bbb/ ・・・Linux-Aの該当フォルダに切り替え binary mget bak-*.* ・・・bak以下のワイルドカードを利用して抽出(?) mdelete bak-*.* ・・・bak以下のワイルドカードを利用して削除(?) bye *************************************************************** 上記の5-6行目のように、ワイルドカードを指定して、ダウンロードとかファイル の消去をしようとしたのですがうまくいきません ワイルドカードを利用したのはbak-以下が毎日変わるのでそれを指定(プログラム)するのが難しかったのでこれを考えました まず、mgetとかmdeleteは利用できないのでしょうか このワイルドカードが利用できるダウンロードなり消去できるコマンド等あれば 教えていたただけないでしょうか または、別のいい方法があれば教えていただければ幸いです
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kmee
- ベストアンサー率55% (1857/3366)
> : unknown hostkura.ne.jp 「hostkura.ne.jp」がわからない、と言っているのですから、「失敗」以前の問題として「hostkura,ne.jp」が見つけられてません。 DNS の設定の問題とかで名前→IPアドレスに変換できないとか、そもそも「open xxx.yyy.ne.jp」のホストの指定が間違っているとか、いくつか原因が考えられます。 nslookupとかpingとかでネットワーク状態を調べる trans.shを実行するのでなく、全部手入力する とかで、原因がどこにあるか、一つ一つ潰していきましょう。 「自動実行」する前に、まず「手動実行」で問題が無いことを確認することです。
- kmee
- ベストアンサー率55% (1857/3366)
・そのまま実行したときには成功ていますか? まずは、それを確認してください。 ・openの後でuserとしていますが、ftpの動作はそれであってますか?openしたらすぐにuser/password聞いてくるようになってませんか? ・cronを使うときの注意点は「実行時には環境変数が最小限しか定義されていない」ということ。 PATHも未定義になっているので、ftp等のコマンドを探せません。 フルパスで指定するとか、(今回の場合なら)このスクリプトの中でPATHを設定するとかします。 ・メールは来てないですか?cron中の表示はメールとして届くはずです。 そうでない場合でも、リダイレクトするとかで実行の様子をファイルに残せばどこでどんなエラーになってるかわかるのでは?
お礼
早速返答をいただき本当にありがとうございます スクリプトを利用るのが初めてなので・・・ いろんなサイトをみながらやっているのですが・・・ さて、最初の質問ですが >そのまま実行したときには成功ていますか? >まずは、それを確認してください。 実行する方法としてSSHでBサーバに入り そこから #sh trans.shとしてみました ところが : unknown hostkura.ne.jp Not connected. として、接続できていないようになります つまり接続で失敗しているのかなぁ・・と思うのですが・・・ この件で何かお気づきの点があれば教えていただければ幸いです rootのメールについては見方が理解できていないので後でみてみます すみません
- kmee
- ベストアンサー率55% (1857/3366)
これシェルスクリプトじゃなくってftpのコマンドでしょ。 これをシェルスクリプトとして実行しようとしたんでは、動くわけないですよ。 このままやろうとすれば、ftpの入力にリダイレクトされるようにしないとです。 あと、B側からftpでmgetしてmdeleteするよりは、A側から送信→削除した方が制御が楽だと思います。 ファイル転送だけなら、rcp,scp,rsync,rdiff-backup等ftp以外の方法も使えますし。 ファイルの選択にファイル名展開やfind等のコマンドも使えますし。
お礼
早速回答いただきありがとうございました。 初心者ですみません。 上記の質問に記載したものをftp.txtとしてBサーバの/root配下に置き 同じ/rootにtrans.shとして、 下記のスクリプトをおいています ******trans.sh********* cd /rrr/sss/ ・・・・Aサーバのファイルの格納場所 ftp -n <ftp.txt ・・・・リダイレクト ************************ これがうまく働きません これでは無理でしょうか わかれば教えていただければ幸いです
お礼
kmee様 気にかけていただいていたようで申し訳ありません > : unknown hostkura.ne.jp これが出たということで(実は(sakura)サーバにアクセスさせようとしていたのですが・・・) これはDNSでないかと思いちょっとためらっていました Linux-Bは数年前に自分でたてたサーバです その時からこのサーバのDNSをうまく動作させられなかったので そのままになっていました Linux-Bから起動しているので確かに、そちらのDNSがきちんと働いていないと いけないですね・・・ 理解できました DNSをきちんと働くようにしていくか、Linux-Aから起動させるように するかどちらかにします ありがとうございました。 1週間程度、外にでるので即応できないのですが この質問サイトが閉じられてなければ結果が出たら報告 させていただきます 本当にありがとうございました。