- ベストアンサー
FTPでファイルを毎日自動で取り出す方法
- FTPでファイルを毎日自動で取り出す方法について考えています。cronを使用して毎日実行させることができますが、正しいコマンドの打ち方に悩んでいます。
- 取り出すデータは毎日新しく作成され、ファイル名には日付が付けられます。違う日付のファイルが同じフォルダにあり、全部コピーするコマンドは使えません。
- FTPを自動化させるための良いコマンドはありませんか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
crontabの設定の所に1行でダラダラと長く書くと読み辛くなるのでシェルスクリプトを一つ作ってそれを crontab 設定で定期的に動かせばいいと思います。 ファイル名の日付に関しては date +%Y%m%d のようにして日付部分の文字列を作れます。ということでこんなシェルスクリプトはどうでしょう。 ------------------------------------------ #!/bin/sh d=`date +%Y%m%d` ftp -in <<EOL open 接続先ホスト名またはIPアドレス user ユーザ名 パスワード lcd ローカルのディレクトリ cd リモートのディレクトリ mget data[ABC]_${d}.tar.gz quit EOL ------------------------------------------ パスワードを埋め込むのでパーミッションは他の人が読めないように 700 にした方がいいです。 で、このスクリプトのフルパスが /home/hoge/bin/myftpget だとして、毎日午前1時に実行させるとすると crontab 設定はこんな感じです。 0 1 * * * /home/hoge/bin/myftpget p.s. ncftpget コマンドを使ったり wget コマンドを使う方法もありますが、全ての環境にインストールされているとは限りません。どちらかというと ftp コマンドを使った方がより多くの環境でそのまま動くと思います。 ちなみに wget を使って無理矢理1行で書くとこんな感じになります。 cd ローカルディレクトリ && wget 'ftp://ユーザ名:パスワード@ホスト名/リモートディレクトリ/data[ABC]_'`date +%Y%m%d`'.tar.gz' この場合のリモートディレクトリはリモートユーザのホームディレクトリからの相対ディレクトリです。
その他の回答 (2)
rsyncを使用するということも検討されてはいかがでしょうか?
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 んっと…簡単なPerlのスクリプトを組む、ではだめでしょうか? Net::FTP というcpanのモジュールを使うと比較的簡単に出来るかと思うのですが。