【Windows / lftp】レンタルサーバー・データのバックアップを自動化する

1 はじめに

本記事は、Windowsにおいて、
レンタルサーバーなどリモートサーバーのデータ・バックアップを定期自動的に行う方法を
示すものです。

レンタルサーバーなどリモートサーバーのデータを取得するのによく使われるのが、
昔ながらのftpです。
FileZillaFFFTPといった 通常のftpクライアントでは、
ディレクトリ構造を保ったままの一発取得ができません。
これらのftpクライアントでは、バッチコマンドを組み立てることがかなり難しいものとなります。

一方、UNIX/Linux系のOSには、
ディレクトリ構造を保ったままダウンロードやアップロードができるlftpというコマンドがあります。

もし、このlftpがWindowsでも使えれば、
UNIX/Linux系のOS同様にバッチコマンドを簡単に作成することができるようになります。
これにより、タスクスケジューラーに登録、定期的なバックアップの自動化が難しくなくなります。

本記事では、Windows版lftpの入手とセッティング、
およびリモートサーバー・データ・バックアップのバッチファイルの作成について示します。
タスクスクジューラーへのバッチコマンドの登録については、割愛します。

Windows版lftpは、いくつかのサイトから入手できますが、
Cygwinのものが最も安定しているように思います。

ですので、本記事ではCygwinlftpで記事を進めていきます。

なお、余談となりますが、WordPress記事のバックアップは、
各種データの整合性が取れるWordPressのバックアップ・プラグインを使う方が良いかと
思います。

2 Cygwin版 lftpの入手とセッティング

まずCygwinのインストーラについて。

Cygwinのインストーラは、下に示すサイトから入手できます。

https://www.cygwin.com/

2.1 lftpのインストール

Cygwinをセットアップするに際して、”lftp”はデフォルトではインスールされません。
図2.1-1図2.1-2に示すように
Networkカテゴリの中から”lftp”をインストールするよう選択しなければなりません。

全てのカテゴリのパッケージを全てインストールするのは、利口な方法だとは思えません。
ダウンロード時間も掛かり、ディスクスペースを大量に消費するので、
良いこととは思えません。

2.2 環境変数”Path”へCygwinの実行パスを追加

セットアップ後、コマンドラインから使い易いように、
図2.2-1に示すように ”c:¥cygwin64¥bin”パスを環境変数”Path”に追加します。

2.3 lftpだけを使う場合

Cygwinの他のコマンドを全く使わず”lftp”だけを使う場合は、
Cygwinのフォルダから”lftp.exe”と”cyg*.dll”だけを残しておくだけでも、
lftp”は動作可能です。

3 定期的バックアップのためのバッチファイル

本章では、リモートサーバー・データ・バックアップのバッチコマンド例を示します。

3.1 Cygwinツールでのファイルパス

まず、本節では、Cygwin版lftpをWindowsで利用する際の固有の問題を挙げておきます。

・ファイルパスのドライブレター
・マルチバイト文字を含んだファイル名やディレクトリ名
UNCパス

3.1.1 ファイルパスのドライブレター

DOSやWindowsではドライブを示すC:D:、…のようなドライブレターがありますが、
UNIX系OSのパスにはドライブレターがありません。

そのため、Cygwinではドライブを以下のような表記で表現します。

3.1.2 マルチバイト文字のファイル名やディレクトリ名

Cygwinlftpでは、
日本語を含んだファイル名やディレクトリ名は扱えないと思った方が良いでしょう。

他のCygwinツールでどうなっているのかわかりませんが、最新のlftp(4.9.1-1)でも、
日本語ファイル名やディレクトリ名はURLエンコード(URL encoding,percent encoding)された
シングルバイト文字列で扱われています。

多くのレンタルサーバーのOSでは、
UTF-8といったコードでエンコードされたマルチバイト文字を含んだファイル名が使えています。

ですから、
下に示す例のようにファイル名の不一致が生じ、lftpからはアクセスできないことがあります。

サーバーのファイル名やディレクトリ名には、日本語を使用しないのが賢明です。

3.1.3 UNCパス

lftpに、ネットワーク上のリソースを特定するUNCパスを適用することは可能です。

つまり、バッチコマンドを実行するPCではなく、
別PCにバックアップすることも可能ということです。

3.2 バックアップのためのlftpコマンド・スクリプト

lftpをバッチモードで起動させるためのコマンド形式は、次のようになります。

lftp -f <scriptfile>

下に、例えばサーバー<targetdir>配下を、ディレクトリ構造ごと
ローカルの<d:¥backup>にダウンロードする場合のスクリプトの例を下に示します。

各コマンドの機能や書式等については、本記事では省きますので、
下に示すページをご参照ください。

https://lftp.yar.ru/lftp-man.html

ディレクトリ構造を保つにはmirrorコマンドを使います。
mirrorコマンドについては、次のページに日本語訳があります。

lftpコマンド:mirror部分のマニュアル(日本語訳)  

3.3 Windowsのバッチファイル

下にWindowsバッチファイルの例を示します。

この例では、
lftpログファイルを、年月日を割りつけた名前にリネームする処理も付け加えています。

以上

HTMLだと、
思うように編集することは難しく、やろうすればとっても時間が掛かります。
ですので、本記事の元となっているWordで作成したPDFを
ページ最後に貼り付けました。

役に立てていただければ、うれしく思います。

このPDFファイルは、自由に配布されてもかまいません。
ただし、再配布の際には、
入手元著者名は明らかにしてください

なお、上のPDFファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。

お問い合わせ