Node.js 用のモジュールを探しています。できれば、FTP サーバーとファイルを同期できる npm から入手できます。ftp モジュールにはすべての基本機能がありますが、その上に本格的な同期システムを作成するのは大変な作業のように思えます。
3 に答える
私はjsftpの作者です。アップロードするディレクトリをたどるだけで、簡単に同期できるはずです。Jsftp は並列のパッシブ リクエストを処理できます (内部的にはまだシーケンシャルですが、心配する必要はありません)。そのため、シーケンシャルftp.put
コールを使用するだけで、スクリプトを作成しなくても動作するはずです。
node では、まだ文書化されていないftp.getPutSocket
方法を使用する方が、より適切で慣用的です。これにより、生のPASV
ソケットを取得して、それにプッシュするだけです (たとえば、ストリームを使用)。このケースの特定の例については、vfs-ftpがどのようにそれを行うかを見ることができます。
同期の実装についてさらにサポートが必要な場合は、お気軽にお問い合わせください。
npm、github、および Web を検索していくつかの調査を行いましたが、同期するための見栄えの良いソリューションを見つけることができませんでした。
いくつかの優れた ftp ライブラリを使用して、独自の (単純な) 同期ライブラリを作成することから始めます。個人的には、jsftp が最も魅力的だと思います ( http://sergi.github.com/jsftp/ )。jsftp をいくつかのファイルシステム ウォーキングと組み合わせるだけです。特に、単純な一方向同期に問題がない場合は、これを実行することは不可能ではありません。
実装のアイデア (ローカルファイルシステムから ftp への一方向同期):
- ftp サーバーへの接続を開く
- ローカルファイルシステムをウォークスルーする
fs.readdir
- 対応する ftp ファイルから統計を取得し、ローカル バージョンの方が新しい場合 (
Ftp.ls
およびFtp.put
使用している場合jsftp
)にアップロードします。
または、node.js との同期を本当に実行する必要があるか自問してください。たとえば、システムで Python スクリプトを実行できる場合はftpsync2d
、ftp をサポートする双方向同期ツール ( http://code.google.com/p/ftpsync2d/ ) を簡単に使用できます。