CLIマジック:lftpで行う手軽なバックアップ

 どのようなLinuxディストリビューションであれ、そのリポジトリにはグラフィカル系のFTPクライアントがいくつか収録されているはずだが、高機能なコマンドライン系FTPツールを探しているなら lftp がお勧めである。そうした用途なら伝統的なftpコマンドを使えば事は足りそうなものだが、lftpを使用することにより、FTPプロトコルを用いたファイル/ディレクトリ管理がより高度なレベルで実行可能となるのだ。これが実際に何を意味するのかを確認するため本稿では、Webサイトに置かれたファイル群をローカルフォルダにバックアップコピーするスクリプトを、lftpを使って構築してみることにする。

 こうしたスクリプトを記述する場合、まずはlftpにおけるFTPサーバへの接続法およびリモートとローカルにあるディレクトリ間の同期法を知っておかなければならない。使用するFTPサーバが匿名での接続をサポートしている場合は、「lftp ftpsite 」という指定をすればいい。ユーザ名とパスワードの指定が必要なサーバの場合、通常は「lftp -u username,password ftpsite 」といった形式の構文でいいはずだ。

 lftpを使ったリモートサイトのディレクトリとローカルのハードディスクにあるフォルダとの同期については、そのためのmirrorというコマンドが用意されている。このコマンド実行時に何もスイッチを指定しなかった場合は、ローカルおよびリモートの双方におけるカレントディレクトリが操作対象となる。そうではなくソースおよびターゲットとするディレクトリを明示的に指定したければ、下記の構文を使用すればいい。

mirror path/to/source_directory path/to/target_directory

 このmirrorコマンドにはその他にも、同期プロセスを制御するための様々なスイッチが用意されている。例えばmirrorコマンドにおける--deleteスイッチは、リモートディレクトリ側に存在しないファイルはローカルフォルダでも削除させるオプション、--only-newerスイッチはlftpによるダウンロード対象を新規ファイルだけに制限させるオプションである。また--excludeスイッチを使用すると、同期時に特定のファイルやディレクトリをスキップさせることができる。その他、同期プロセスを逐一監視したければ--verboseスイッチを指定すればいい。