WindowsのBATファイルを実行することで、Linux上のファイルをバックアップできるツールの紹介です。
スケジュール登録することで、バックアップを自動化することも可能です。
普段から大切なファイルをバックアップして、意図せずファイルを更新/消失するリスクに備えましょう。
当ツールの利用には、無料で使えるファイル転送ソフト「WinSCP」のインストールが必要です。
セットアップはすぐにできますので、お気軽にお試しください。

ツールの特徴
セットアップが簡単
当ツールは、4ステップでセットアップできます。
- WinSCPをインストール
- ツールをダウンロード&解凍
- Linuxにツールをアップロード。
- Windows上のファイルに、サーバの接続情報、バックアップ対象を設定。
これだけです。
お手軽バックアップ
バッチファイルを実行するだけで、バックアップ完了。
バックアップが完了すると、実行した日付のフォルダが作成されます。
このフォルダ内には、バックアップ対象のディレクトリごとに、下記が格納されます。
- tar+gzip形式の圧縮ファイル
- バックアップファイルのリスト(lsの結果)
バックアップの自動化も可能
Windows標準コマンドを使用して、バックアップの自動化が可能。
資産の変更を把握できる
バックアップする際に、対象ディレクトリ配下のlsリストが取得されます。
WinMerge等の比較ツールで前回のリストと比較することで、
ファイルの増減、更新有無、サイズ変更、権限変更が把握できます。
WinSCPインストール
すでにWinSCPがインストールされている場合は、ここを読み飛ばして下さい。
WinSCPをダウンロード
WinSCPプロジェクトのページにアクセスして、最新の「~Setup.exe」をダウンロードして下さい。
インストール
ダウンロードしたexeファイルを実行します。
インストールモードの選択画面が表示されます。
ここでは、「現在のユーザー用にインストール」をクリックします。

使用許諾の同意画面が表示されます。
内容を確認して「許諾」ボタンを押します。

セットアップ形式の選択画面が表示されます。
[標準的なインストール(推奨)]を選択して、「次へ」ボタンを押します。

画面形式の選択画面が表示されます。
ここでは、一般的な[コマンダー]を選択して、「次へ」ボタンを押します。
(後からでも設定画面で変更できます)

インストール準備完了画面が表示されます。
「インストール」ボタンを押します。

しばらく待つと、セットアップが終わります。
「完了」ボタンを押して、画面を終了します。

ツールをセットアップ
ダウンロード
こちらからツールの圧縮ファイルをダウンロードします。
このツールは自由にご利用いただけます。
圧縮ファイルを解凍
ダウンロードしたファイルを右クリックして、[すべて展開]をクリックします。

「展開」ボタンをクリックします。

解凍されたフォルダは、必要に応じて、任意の場所にフォルダごと移動してください。
ここでは、C:\work 配下に ebackupフォルダを移動して進めます。

Linuxへファイルを配置
WinSCPを起動します。

ホスト名(または IPアドレス)、ユーザ名、パスワードを入力して、ログインボタンを押します。

「はい」を押して、をホストを信頼します。

画面の左側にWindowsのファイル、右側にLinuxのファイルが表示されたら接続OK。

ツール(ebackupフォルダ)を、サーバへアップロードします。
右のリスト(Linux側)で、ツールを配置する任意のディレクトリへ移動。
左のリスト(Windows側)で、ツールを格納したフォルダへ移動。

「ebackup」フォルダを選択して、「アップロード」ボタンをクリック。
バイナリ転送になっていることを確認して、OKボタンを押します。
(バイナリ転送になっていない場合は、転送設定ボタンを押して、転送モード[バイナリ]を選択してください)

以上で、ツールをLinuxへ配置できました。
右上の「×」ボタンを押して、WinSCPを閉じてください。
バックアップ情報設定
ebackupフォルダ内にある bkup.bat を、テキストエディタで開きます。
(誤って実行しないよう注意ください)

下表の項目の値を設定してください。
複数のディレクトリをバックアップする場合は、⑥~⑧を繰り返し記述します。
No. | 項目 | 設定値 |
① | host | LinuxサーバのIPアドレスまたはホスト名 |
② | user | Linuxサーバのユーザ |
③ | pswrd | Linuxサーバのパスワード |
④ | tool_dir | アップロード先のebackupディレクトリのパス |
⑤ | scp_pgm | WinSCPインストールディレクトリ。(通常は変更不要) WinSCPのインストール先を変更してインストールた場合に設定必要。 |
⑥ | file_base | 任意のバックアップ名。バックアップファイルの名前になる |
⑦ | trgt_dir | バックアップするLinuxのディレクトリ(フルパス) |
⑧ | – | 変更不可 |

編集できたら保存して、テキストエディタを閉じてください。
実行方法
先ほど編集した bkup.bat ファイルをダブルクリックします。

少し待つと、当日日付のフォルダが作成されますので、そのフォルダに移動します。

2つのファイルが存在していれば、バックアップ成功です。
作成されるもの

バックアップファイル
バックアップファイルは圧縮されています(tar+gzip形式)。
tar形式、gzip形式に対応した解凍ソフトで解凍して、ファイルが取得できているか確認ください。
PONSEは今回、CubeICEで解凍しました。迷わず使えるので、初心者にオススメです。
バックアップリストファイル(ls結果)
バックアップしたディレクトリ配下のlsの結果です。
前回のls結果と比較することで、バックアップディレクトリ配下の資産の変更を確認できます。
ファイルの比較には、WinMerge等のファイル比較ソフトをご利用ください。

バックアップの自動化
毎回バッチファイルを実行するのが手間でしたら、バックアップを自動化しましょう。
Windowsがロック状態(ロック画面)でも、バックアップできます。
スケジュール登録
Windows標準のスケジュール機能を利用して、バックアップを定期的に自動実行できます。
毎朝6:00にバックアップする場合の例は、次の通りです。
(DOSプロンプトに、1行で入力してください)
schtasks /create /sc DAILY /tn ebackup /tr C:\work\ebackup\bkup.bat /mo 1 /st 06:00
指定している値の詳細は、こちらのMicrosoftのページを参照ください。
スケジュール解除
登録したスケジュールを解除して自動実行を止めるには、次のコマンドを実行します。
(DOSプロンプトに、1行で入力してください)
schtasks /delete /tn ebackup
指定している値の詳細は、こちらのMicrosoftのページを参照ください。
ソースファイル
以下にソースコードを掲載します。
ダウンロードできない環境などで、ご使用ください。

bkup.bat【Windows】
set cur_dir=%~dp0
set ymd=%date:/=%
set host=xxx.xxx.xxx.xxx
set user=test
set pswrd=test
set tool_dir=/home/test/ebackup
set scp_pgm=%LOCALAPPDATA%\Programs\WinSCP\WinSCP.exe
cd /d %cur_dir%
md %ymd%
cd %ymd%
set file_base=dir1
set trgt_dir=/home/test/dir1
"%scp_pgm%" /script=%cur_dir%bkup.txt
cd ..
exit 0
bkup.txt【Windows】
option batch on
option transfer binary
open %user%:%pswrd%@%host%
cd "%tool_dir%"
call bash ./bkup.sh %file_base% %trgt_dir%
get -delete -preservetime "*_ls.txt"
get -delete -preservetime "*.gz"
clsoe
exit
bkup.sh【Linux】※改行コードは、LFで保存してください。
#!/bin/bash
CMD=`basename $0`
TZ="Asia/Tokyo"
ymd=`date +%Y%m%d`
file_base=$1
trgt_dir=$2
date
echo "--- ls start [${file_base}] ---"
ls -lR ${trgt_dir} > ${file_base}_${ymd}_ls.txt
echo "--- archive start [${file_base}] ---"
tar zcvf ${file_base}_${ymd}.tar.gz -C ${trgt_dir} .
echo "--- end ---"
exit 0
コメント