lftpで行う手軽なバックアップCommand Technica

バックアップの手法は数多く存在するが、lftpを使用すれば、FTPプロトコルを用いた高度なファイル/ディレクトリ管理が可能となる。プロフェッショナルレベルでのFTP操作を行いたい方へlftpの基本を解説する。

» 2008年04月25日 00時34分 公開
[Dmitri-Popov,Open Tech Press]
SourceForge.JP Magazine

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

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

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

mirror コピー元 コピー先


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

 ディレクトリ間の同期をするごとに、これらのスイッチ指定をいちいち入力するのは結構な手間である。幸いなことにlftpでは、-eスイッチで複数のコマンドを一括して実行できる。後記のような構文で記述すると、lftpは接続を維持したまま指定されたコマンド群を逐次実行する。

lftp -u ユーザー名,パスワード -e "mirror --delete --only-newer --verbose コピー元 コピー先" FTPサイト名


 このコマンド指定では、まずに指定された認証情報を基にしてFTPサーバへの接続が行われた後、引用符で囲まれた部分のコマンド(複数指定可)が順次lftpにより実行される。こうしたコマンド群の複合指定はテキストファイルに記述したものを読み込ませる形でも実行でき、その際には-fスイッチで当該ファイルを指定すればいい。

lftp -f /home/user/ftpscript.txt


 lftpはそのほかの便利な使い方もできるようになっている。その1つがatスイッチで、これを使用すると特定時刻にバックアップを実施させることが可能で、例えば後記のサンプルは深夜0時に実行させるという指定となる。

lftp at 00:00 -u ユーザー名,パスワード -e "mirror --delete --only-newer --verbose コピー元 コピー先" FTPサイト名 &


 この末尾にあるアンド記号はコマンドをバックグラウンドで実行させるための指定で、こうしておくとターミナルウインドウを開いたままにしなくても済むようになる。

 以上は、リモートのFTPサーバに置かれたファイルやディレクトリのバックアップ作成法である。こうしたバックアップをいくら行っても必要時における復元法も知っておかないと無用の長物と化すだけだが、lftpにおけるその操作法は至って簡単で、具体的には先のmirrorコマンドに--reverseスイッチを追加すればいい。

lftp -u ユーザー名,パスワード -e "mirror --reverse --delete --only-newer --verbose コピー元 コピー先" FTPサイト名


 その名称から推測できるように、このスイッチはソースおよびターゲットの指定ディレクトリを逆転させて処理を行わせるための指定で、この場合の実質的な作業は、lftpによってローカルのディレクトリにあるファイル群をリモートのFTPサーバにアップロードさせているだけである。

 以上で本稿の解説は終了である。lftpにはそのほかの有用なオプションも装備されているが、詳しくはmanページを参照して頂きたい。これらをうまく使いこなせればプロフェッショナルレベルでのFTP操作ができるようになるだろう。

Dmitri Popovは、フリーランスのライターとして、ロシア、イギリス、米国、ドイツ、デンマークのコンピュータ雑誌に寄稿している。


Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ