Windows/Azure
外部の SFTP サイトとローカル ストレージ間の双方向同期を動的に実行するアプリケーション (またはその他のソリューション) を探しています。
具体的には、(サーバー指向で考えると)インポートフォルダとエクスポートフォルダがあります。
したがって、エクスポート フォルダー内のファイルにサーバー側で変更 (新規作成/削除を含む) があった場合、クライアント側でそれが反映されます (一定の間隔で)。
同様に、インポート フォルダー内のファイルにクライアント側で変更があった場合、サーバー側でそれが反映されます。
このアプリはクライアントとサーバーの両方に存在する必要があると思います。おそらく、これは特殊なタイプの SFTP サーバーです。
具体的な使用例は、毎日アーカイブされるタイムスタンプ名のファイル(タイムスタンプ名のアーカイブ サブフォルダーにコピーされ、その後プライマリ フォルダーから削除される)です。
Azure などのクラウド ソリューションに特に興味があります。
従来の DC SFTP サーバーがまだ多く存在し、プロバイダーがあまり柔軟性を提供していないことがわかりました (たとえば、特定の SFTP 製品を使用していて変更しないなど)。したがって、最も最適なのは、既存のレガシー SFTP サーバーと共存するアプリ/ソリューションです。
答え1
Ftp Voyager はこれを実行します。(Windows を想定していますが、おっしゃっていません) https://thwack.solarwinds.com/resources/b/geek-speak/posts/ftp-voyager-debuts-as-solarwinds-free-tool
これはサービスとしてインストールされ、サイトへの接続プロファイルを作成し、一定の時間/間隔でデータを取得するようにスケジュールするスケジューラを備えています。
FTP コマンドに精通していれば、SFTP ネイティブ クライアントや PSFTP (putty プロジェクトの一部) のスクリプトも、構文が非常に似ているため、難しくありません。https://www.puttygen.com/psftp
具体的には、スイッチ-Bを使用すると、基本的にターミナルで実行したのと同じようにコマンドのスクリプトを処理し、それをタスクスケジューラのタスクにすることができます。
-B – It specifies a file with batch commands. The ‘-b’ command helps user automate tasks by allowing them to set commands in advance.
どちらの場合でも、このように SFTP を同期すると、サーバー側で自動化していることを意識する必要はなく、何かをインストールする必要もありません。ユーザーがコードを介して行うのと同じことを実行するだけです。 https://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter6.html
psftp を使用した例: dlall.txt という名前の単純なテキスト ファイルを作成する
iQ という名前のキュー フォルダーがあり、反対側に out という名前のディレクトリがあると仮定すると、次のスクリプトは...
lcd - ローカルディレクトリを iQ に変更する
cd out - リモート側のoutディレクトリに変更します
mget * - 複数のファイルを取得し、そこにあるものをダウンロードします。
終了 - 終了する
lcd .\iQ
cd out
mget *
quit
そしてそれをPSFTPに渡します。
psftp user@host -P [port number] -b dlall.txt
ここで、認証方法を知っていることを前提としています。どちらもコマンド ラインで資格情報を受け入れるか、公開鍵認証を設定できます。自動化するにはパスワードをプレーン テキストでどこかに保存する必要があるため、パスワードはお勧めしません。FtpVoyager はパスワードを保存しますが、少なくとも暗号化します。ただし、どちらも公開鍵を使用するとより安全に動作します。
また、両側が実際に等しいことを確認したい場合は、「同期」という言葉を使用していることに注意してください。これはより困難であり、おそらくFTPVoyagerに戻ることになります。
または、サーバーがサポートしている場合は、ssh 経由の rsync を検討してください。