1

ssh を使用してアクセスできるリモート ファイル システムがあります。

する必要がある:

  1. このファイル システムをスキャンして、特定の日時よりも新しいすべてのファイルを見つけます。
  2. それらのファイルの名前、サイズ、および modified_time_stamp のリストを取得します

いくつかの制限:

  1. このリモート サーバーにスクリプトをアップロードできません。ssh経由でしかコマンドを実行できません
  2. リモート サーバーには 10 万をはるかに超えるファイルが存在する可能性があり、このプロセスは少なくとも 1 分間に 1 回発生する必要があるため、ssh 呼び出しの数は最小限に、できれば 1 に等しくする必要があります。

私はすでにこれを使用して(1)を取得できました:

`touch -am -t {timestamp} /tmp/some_filename; find {path} -newer /tmp/some_filename; rm /tmp/some_filename')`

結果を「xargs ls -l」にパイプし、結果を解析してそこからサイズとタイムスタンプを抽出する方向に進むことができると思いましたが、この記事を見つけました...

また、私はpythonを使用してコマンドを実行しています(つまり、単なるコマンドラインではありません)ので、sshコマンドからの結果に対して後処理を行っても問題ありません

4

1 に答える 1

1

次のように、サーバー側で Python スクリプトを作成または変更することをお勧めします。

  1. しばらくデータが取得されていない場合は、提供された touch/find スクリプトを使用して初期データを取得し、見つかったファイルを呼び出して必要なプロパティを取得します
  2. 次に、サーバー上の python スクリプトで、inotify() データにサブスクライブして更新を取得します。
  3. リモートが接続し、このすべてのデータが必要な場合は、1 + 2 を組み合わせて最新の更新を提供します

inotify は、Linux でサポートされているシステム コールで、ディレクトリのファイル システム イベントをリアルタイムで監視できます。

見る:

https://serverfault.com/questions/30292/automatic-notification-of-new-or-changed-files-in-a-folder-or-share

http://linux.die.net/man/7/inotify

https://github.com/seb-m/pyinotify

于 2013-07-07T08:41:58.820 に答える