- ベストアンサー
cronで定期的にWGETしたい
今、cronで定期的に、圧縮したバックアップファイルをDLしたいと考えています。 ユーザーはルートで # crontab -e * 20 * * * wget http://URL/backup_dbserver.tar.gz のように書き、毎日20時にDLさせたいのですが、どうやらこれだけ動いていないようです。 何か書き方が間違っているのでしょうか?ご存知の方ご教授お願いします
- YUNTAKU
- お礼率40% (72/179)
- その他(OS)
- 回答数4
- ありがとう数3
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こちらで試してみたら、ちゃんと指定時刻にwgetがファイルをとってきてくれました。 root権限のcrontabに登録したので、/root配下にダウンロードされていました。 (確認1) クーロンのデーモンは動いてますか? (確認2) /var/log配下にcronのログファイルがあるはずなので、何かエラーメッセージが出てないか確認してみてください。
その他の回答 (3)
- xjd
- ベストアンサー率63% (1021/1612)
>URLのところは実際にはURLになっています じゃなくて..... wgetをディレクトリ名を含めフルパスで記述して下さい。 /usr/bin/wget という意味です。 wgetがどこにあるかは検索してください。
補足
あ 失礼しました。 # which wgetで /usr/bin/wget と出てきましたので、これで指定してみましたがやはりダメでした。
- xjd
- ベストアンサー率63% (1021/1612)
(追記) wgetはフルパスで記述して下さい。パスが通ってなくて、実行できてなかった可能性があります。
補足
URLのところは実際にはURLになっています
- xjd
- ベストアンサー率63% (1021/1612)
0 20 * * * wget http://URL/backup_dbserver.tar.gz ではだめですか? *(アスタリスク)はそのフィールドに設定可能なすべての値が記述された事になる。 です。
補足
試してみましたが、やはりダメでした。
関連するQ&A
- cronからtarで圧縮しようとすると、途中で終わってしまいます
サーバーはCentOS 5.3です。 以下はroot権限での話です。 コマンドラインで /bin/tar cvzf /home/myhome/backup/var_backup.tar.gz /var と打ち、実行すると正しく圧縮されたファイルが出来上がります。 解凍してみても問題ありません。 大きさは700MBくらいになります。 ところが同じコマンドをCronにセットして実行すると、ファイルはできるのですが 254K というとても小さなファイルが出来上がって終わってしまいます。 解凍してみるととても中途半端なところで圧縮が終わっているみたいです。 5 0 * * * /bin/tar cvzf /home/myhome/backup/var_backup.tar.gz /var のように書いています。 rootのcrontabなので権限の問題ということも無いと思うのですが。 別のディレクトリでも試してみたのですが同じ結果でした。 別のサーバーで同じくCentOS5.3を使っていて、同じことをやっているのですが そちらはうまく行っているのです。 どなたか解決策などご存知でしたら教えてください。 同じような質問が過去にもあったようなのですが、未解決で終わっていました。
- ベストアンサー
- その他(ITシステム運用・管理)
- ◆圧縮&伸張コマンド
いつもお世話になっています。 Linux初心者です。 Linuxコマンドでの圧縮系はtar + gzipが一般的なのでしょうか? (他に手軽&圧縮率が高いのがあればご教授下さい) 【実行したい事】 定期的に動いているcronがあります。wgetで取得したファイル群(フォルダ含め)を取得後に圧縮をかけたい。で、次回のwgetをかける前に今度はファイル群(フォルダ含め)を元に戻したい。 cron ⇒ 伸張&展開(ファイル群) ⇒ wget ⇒ 圧縮(ファイル群。元ファイル群は削除) ⇒ cron お手数ですが、解凍 & 圧縮のサンプルコマンドをご教授下さるとありがたいです。 ↓↓↓こんな感じで問題ないのでしょうか? 伸張&展開: tar xvzf ***.tar.gz 圧縮&アーカイブファイル:tar cvzf ***.tar.gz dir(各フォルダ&ファイル群) wgetで-nc(取得済みは取らない)を使用しているので、ちゃんと元に戻って欲しい(当たり前ですが。。。)のとファイル群の容量が大きいので手軽に圧縮させたい。
- ベストアンサー
- Linux系OS
- cronでwgetツールを自動化したい
大学でvine Linuxを利用しています。 5つのサイトのソースファイルを毎日自動収集するようなシェルスクリプトを組みたいと思っています。 (/home/name/bin/の下に日付のディレクトリを作成してその中に5つを保存します。) 本や色々なサイトを参考にして、 #!/bin/sh d=`date +%m%d` * 7 * * * wget -P /home/name/bin/${d}/ http://A * 7 * * * wget -P /home/name/bin/${d}/ http://B * 7 * * * wget -P /home/name/bin/${d}/ http://C * 7 * * * wget -P /home/name/bin/${d}/ http://D * 7 * * * wget -P /home/name/bin/${d}/ http://E これをファイル.shとして保存して、 crontab /home/name/bin/ファイル.sh でcronに読み込ませたらいけるかと思ったんですがダメでした。 (crontab -eだとvimエディタになる設定のようなのでファイルを作成してから登録したいです) 初めてのシェルスクリプトで色々試しても上手くいかなくて困っています。 どなたか御指導よろしくお願いします。
- ベストアンサー
- Linux系OS
- cronで複数実行される
いつもお世話になっています。 Solaris2.6ですが、cron実行でバックアップやらログローテートやら行っていたのですが、 先日、以下のことをやってしまい、二重実行されるようになってしまいました。 ・通常、rootでのcron実行 ・間違えて、一般ユーザのcronにrootとまったく同じものを書き込んでしまった。 ・一回検証で実行して気付き、一般ユーザのcronを削除(crontab -r)した。 これで、再度検証したときに問題なく動作していたようだったので(/var/cron/logを確認していないのがまずい・・・)、そのままにしておいたのですが、 その後、常にスクリプトが二回ずつ実行されるようになってしまいました。 何度もcrontabを確認し、しまいにはcronデーモンを再起動したのですが、今度は4つ同時に実行するようになってしまい、 さらに、cronデーモンを起動しなおしたら8つになってしまいました。 きちんと、killしているのですが、どうしてか分からず、どうしようもなくなっています。 再起動以外に何か解決方法はないでしょうか。 よろしくお願いいたします。
- 締切済み
- Solaris系OS
- ◆wgetをcronで動かす場合
いつもお世話になっています(何回目だろう。。。) wgetの挙動についてです。 オプションとしてhtmlファイルを全て取得しています。1件目は成功しますが、2件名以降はindex.htmlしか取得しません。 そこで、 export LANG=C export LC_ALL=C を追加することで、全件がオプション通りに取得できました。 --------------get_url.sh--------------ここから--------- #!/bin/bash export LANG=C export LC_ALL=C wget -nc -r -A html http://aaa.hoge.jp/ wget -nc -r -A html http://bbb.hoge.jp/ wget -nc -r -A html http://ccc.hoge.jp/ --------------get_url.sh--------------ここまで--------- しかし、これをcronで実行させた場合、再び2件目以降はinde.htmlだけしか取得しません。 どなたかお気づきの点があればご教授下さい。 ちなみに、crontag -eは以下です。 52 12 * * * /get_url.sh
- 締切済み
- Linux系OS
- cronの設定日時について
現在、サーバー(centos5.6)の定期バックアップの設定をしている最中なのですが、コマンドが設定した日時に起動せず困っております。 ”毎月第一日曜”の02:00にバックアップスクリプトを起動させたいのですが、”毎週日曜”の02:00にバックアップスクリプトが起動します。 cronの設定は以下のとおりです。 #crontab -e 00 02 1-7 * 0 /root/scripts/backup_sda3.sh #cat /root/scripts/backup_sda3.sh #!/bin/bash DATE=`/bin/date +%Y%m%d` BACKUPFILE=/mnt/disk/sda3_$DATE dd if=/dev/sda3 of=$BACKUPFILE #cat /var/log/cron Feb 26 02:00:01 dns crond[31858]: (root) CMD (/root/scripts/backup_sda3.sh) 何か、お知恵をください。
- ベストアンサー
- その他(ITシステム運用・管理)
- cron と FTPでバックアップ
Turbolinux8serverを使っています。 シェルを組んでFTPサーバーにファイルをバックアップさせています。シェル単体で動かすと問題なくファイルのバックアップできるのですが、cronスケジューラーで動かすとバックアップできません。 ちなみにバックアップさせるファイルは15Gと膨大で、小さいファイル(数kbite)だとシェル単体でもcronで起動させても問題なく動きます。 cronで起動するとFTPの転送ファイル容量の制限が掛かるのでしょうか? ちなみにシェルは set `date +%Y%m%d` echo $1 cd /home/httpd/ tar cvf /backup/$1.tgz Doc ftp -i -v -n 192.168.1.1 <<END user username password cd /backup/ lcd /backup/ put $1.tgz quit END 同様の症状等で解決策をご存知の方アドバイスお願いします。
- 締切済み
- Linux系OS
- PHPからcronを編集したい
ブラウザから時間を指定してリクエストを投げると下記PHPを実行するプログラムがあります。 shell_exec("echo {$pass} | sudo -S sh -c 'cat {$root_dir}/craw/crontab.txt > /var/spool/cron/crontabs/{$cron_user}'"); shell_exec("echo {$pass} | sudo -S chown {$cron_user}:crontab /var/spool/cron/crontabs/{$cron_user}"); shell_exec("echo {$pass} | sudo -S chmod 600 /var/spool/cron/crontabs/{$cron_user}"); 実行はちゃんと行われて、/var/spool/cron/crontabs/userの中身もちゃんと期待したとおりに変更されています。 しかし、いくら待っても登録したjobが実行されることはありません。(/var/log/syslogを見ても実行された形跡はありません) shell_exec("echo {$cron_pass} | sudo service cron restart"); を付け加えてみても結果は同じでした。 crontab -eで編集→保存とするとちゃんと反映されるようです。 どのようにすればPHPからcronを登録できるでしょうか。 よろしくお願い致します。
- ベストアンサー
- Linux系OS
- cron設定についてです。
こんばんは。開発初心者の者です。 今、データベースから引っ張って来たデータを csv作成するphpプログラムファイルを 1日1回cronなりで設定して 自動で動かしたいと思っています。 しかし、php本体を置いているサーバー(仮称:Aサーバー)と csvを作成するプログラムファイルを 置いているサーバー(仮称:Bサーバー)が違うため cron設定にかなり手こずっています。 http://のURL形式でcsvを作成するphpを実行できるので、 Cronがwgetを使いURL形式で読み込んで できそうだということがわかりました。 早速、色々調べて手始めにwgetをやってみたのですが、 ~DNSが…サービスが…不明です。(うろ覚えですが) のような記述が出てwgetすら実行できません。 BASIC認証などもあり、 元々の読み込みURLはhttps://になってます。 (csvを書き出すphpファイルの階層はhttp://になってます) BASIC認証対策用記述もして何度も試みてみましたが、 一向にできません。 開発をしている別環境ではphp本体、 csv作成をするphpファイルともに 同じサーバーに置いてあり、こちらは * * * * * /usr/local/bin/php /…/…/~.phpのような 通常のcron、 * * * * * wget --http-user=** --http-passwd=*** http://~ のようなwgetを使用したcron設定ともに 普通に自動実行ができますが…。 Aサーバー、Bサーバーともにpoderosaを使用して cron設定のコマンドを書いてますが、 何が悪いのかさっぱりわかりません。 php本体を置いてあるAサーバー側でcronの記述するのが たぶん正しいかと思うのですが、 どちらでcron設定するのが正しいのでしょうか? また、何故今wgetができないのかをお聞きしたいです。 サーバーは全く触っていないため仕組みはよくわからないです。 恐らくSSL形式になっていると思います。 何が原因と考えられるでしょうか? また、何かcronなどの他に、このcsv書き出しをするphpを 自動で動作させる方法などもないでしょうか? 知識不足、説明下手で申し訳ないですが、 どうしても解決したいので回答よろしくお願いします。
- ベストアンサー
- PHP
お礼
他の端末で試してみたところちゃんとできました。ありがとうございました。