コンピューターからリモートサーバーにファイルをリアルタイムで同期するということは、ファイルが作成、更新、または削除されるたびに、即座にリモートサーバーにアップロードされるか、リモートサーバーから削除されるということです。これは、写真やビデオをリモート間でコピーの保存、継続的な統合やデプロイのプロセスの一環としてのアプリケーション変更のデプロイ、サードパーティーとのファイルの自動共有など、多くの面でメリットがあることが証明されています。
このようなプロセスをエンドツーエンドで処理する多くの製品のほんの一例として、Dropbox、Box、Egnyte が挙げられます。これらはファイルシステムの変更を追跡するクライアント、必要なリモートストレージ、リモートストレージ上のファイルにアクセスし共有するための手段を提供します。
SFTPサーバーへのファイルの同期は、汎用的で自動化しやすく、シンプルなGUI (グラフィカル・ユーザ・インターフェース)やコマンドラインクライアントでもファイルに簡単かつ安全にアクセスできるため、多くの企業にとって好ましいソリューションとなる傾向があります。そこで本記事では、Windowsやサーバー上のファイルを、リモート環境にあるSFTPサーバーと同期させる方法をご紹介します。
Syncplify.me AFT!
筆者たちが Syncplify.me AFT!に出会ったのは、共通の顧客がサーバー上のファイルをSFTP To Goに同期した際に問題が発生したときでした。Syncplifyの問題解決へのアプローチに感心し、私たちも試してみることにしました。
AFT(Automated File Transfer:自動ファイル転送)は、ファイル転送を自動化することを目的とし、JavaScriptの拡張版であるaftJS言語を用いて、ファイルシステムの変更監視、リモートサーバーへの接続、ファイルのアップロード、ダウンロード、削除を行う簡単なスクリプトを書くことができます。あらかじめパッケージ化されたスクリプトが装備されているので、すぐに使い始めることができ、スクリプト言語は、プロセスを完全にコントロールするのにとても強力です。例えば、ファイルを変更するたびにリモートサーバーに新しいファイルを作成したり、ローカルで削除されたファイルをリモートサーバーに移動したりしたい場合も以前のバージョンに上書きするのではなく、これら全てが可能です。
また、WindowsとLinuxの両方で使えるクロスプラットフォームであることも魅力の一つです。
削除されたファイルをリモートサーバーにそのまま残す同期スクリプトの例は、次のようになります:
オリジナルのスクリプトは こちら
Syncplify.me AFTの料金プラン詳細は、 こちらからダウンロードしてご確認いただけます。
WinSCP
WinSCPは、 Windows用の無料SFTPクライアントとしてよく知られています。また、多くのCLI(コマンドラインインターフェース)オプションや、PowerShell や他の様々な .NET 言語で使用できる .Net のアセンブリのライブラリにより、プロセスの自動化にも利用できます。
Syncplify.me AFTとは反対に、WinSCPはWindows上でのみ動作します。これはおそらく、元々が Linuxのセキュアコピーコマンドである「scp」のポートであるためです。また、同期処理を完全にコントロールすることはできませんが、コマンドライン引数の keepuptodate
は、その様々なオプションにより、ほとんどのケースをカバーすることができるでしょう。
SFTPセッションを開き、ディレクトリを同期させるためのコマンドラインの例は次のようになります:
WinSCP のダウンロードはこちら。また、keepuptodateオプションについてはこちらをご覧ください。
写真提供: Vincent Branciforti - Unsplashより