lftpを使用して自動同期する

FTPサイトでlftpコマンドでファイル・ディレクトリを同期する

lftpはFTPサイトでファイルやディレクトリをダウンロードできたりアップロードできたりするコマンドです。通常のFTPクライアントではrsyncのように特定のディレクトリを同期(ミラーリング)する不向きですが、「lftp」を利用すると同期(ミラーリング)ができます、rsyncのように同期をしたいがSSH接続できない場合に役に立ちます

「lftp」には、下記のコマンドでFTPサイトに接続できます。もちろんユーザ名・パスワード認証にも対応しています。ログイン後は対話式でコマンドを入力してファイルのアップロードやダウンロードができます

ftpコマンドののオプションや対話式のコマンドは、日経 xTECHの記事で紹介されている、【lftp】FTPサーバに接続してファイルを転送する で紹介されているのでそちらでご確認下さい

 

FTPでrysncのように同期する方法

「lftp」のオプションでは、「mirror」、「only-newer」、「delete」というオプションを使用するとrysncのようにミラーリングできます。

  • 「mirror」は、指定したディレクトリとローカルディレクトリを同期します
  • 「only-newer」は、新しいファイルのみダウンロードします
  • 「delete」は、リモート先に存在しないファイルは削除します

上記のオプションを使用すると、rysncのようにミラーリングできますし、「-X」のオプションを利用すれば、対象ファイル,対象ファイル除外指定ができます

シェルスクリプトで下記のような、ディレクトリを同期するスクリプトをサンプルとして作成しました。

【仕様など】

  • public_html/test/upload は除外ディレクトリとしてダウンロードしない
  • rsyncのようにミラーリングする。ダウンロード先に無いファイルは削除
  • 「-v」は、ログは詳細に表示する
  • 「parallel」で、4並列でダウンロードする