ファイルを1日中連続して受信するリモートサーバーがあります。非常に多くのファイルが入ってくるので、リモートサーバーには、新しいファイルを(約15分ごとに)永続的な休憩場所に移動するcronジョブがあります。このため、新しいファイルを探すために私から頻繁にログインする必要があります。また、単にディレクトリをミラーリングすることはできません。私はrsyncを使うこともできません。次に、cron + bash + ncftpまたはlftpなどを使用して、その日のディレクトリを作成し、ログインし、ファイルを比較し、新しいファイルをダウンロードしてから接続を閉じ、リンスを繰り返すことです。新しいリモートファイルをダウンロードして新しいフォルダに保存するncftpのBashスクリプト
リモートシステムはWindowsを実行していますが、Macを使用しています。私はリモートサーバーを制御していない、私は単にファイルのディレクトリへのftpアクセスを持っています(そしてそれらの永久ストアもありません)。 SYSDATEをチェックして、現在のYYYY/MM/DDとのローカルフォルダが存在するかどうかを確認 -
1:
は私がしますcronジョブ(またはそれ以上)を設定しようとしています。そうでない場合は、作成されます2 - リモートサーバーにログインし、適切な日付のローカルフォルダにすべての新しいファイルをダウンロードします(これは、サーバーがデータを受信してから最後にI 「に!S」を
#!/bin/bash
PROGNAME=$(basename $0)
#Here are some local variables:
NEW='/localdir/newfiles'
OLD='/localdir/oldfiles'
LOCAL_DIR='/localdir'
# Here are the remote server variables
HOST='some.server'
USER='user'
PASSWD='passwd'
REMOTE_DIR='/remotedir'
#Let's check for new files:
ncftpls -1 HOST > NEW #this lists files and creates a record we can use to compare with
diff OLD > NEW
????
しかし、ncftpgetをテストするとき、私はプログラムは、私が選択することができ、その時点で重複ファイルを識別したときにプロンプトが表示されています:私は始まった
新しいファイル)をチェックすでにローカルに存在するすべてのファイルをスキップします。
ncftpget *.filetype
EDIT:だから私は、このようにNEWとOLDの必要性を排除し、のようなものを私のためにこれを簡素化し、私はすべての差分に対処する必要がないことを感知したり、両方のディレクトリの内容を一覧表示していますでディレクトリ内のファイルを取得するためには、-Rを使用する必要がありましたが、Windowsのボックスにリモート処理しているため、-Rは機能しません。このncftpは実行可能ではありませんか?それはlftpを必要としますか?
私は何とかSを使うことができる限り、これは私にとってはうまくいくはずですか!デフォルトでは?これは十分に堅牢であるか、ディレクトリコンテンツのリストを保持しているファイルを作成し、それらのファイルを比較することがより健全な実行になるでしょうか?私はリソース/帯域幅を使い切ることを心配していますが、いずれのファイルも見逃したくありません。最後の問題は、フォルダとロギングエラーを作成することで、ncftpと思われ、サブプログラムに標準ログとエラーログの両方がある場合は、実際にはファイルをフォルダに移動することについて心配する必要があります。当日の日付。
もっと論理的なワークフローは、毎日の終わりに別のcronジョブを実行して、その日にダウンロードしたファイルをその日の日付に一致するフォルダに移動することです。そのため、cronジョブでLOCAL_DIRをチェックし、各ファイルの日付を読み込み、存在しなければ適切なフォルダに移動するbashスクリプトを作成します。
事前の感謝とアドバイスありがとうございます。