バックアップを考える(2)
2015/04/19
rsyncとは
  • 前回は robocopy コマンドによるバックアップを紹介しましたが、今回は rsync を紹介します。rsync はローカル/リモートの両方においてファイル及びディレクトリの同期を取るGNUのツールです。よってDebianやUbuntu等のPC系UNIXマシンがあれば、rsyncをセットアップすることは容易です。比較的スペックの低いPCでも動作するので、UNIX系PC1台を余り及び安いパーツで組めば、共通のバックアップマシンとして使用することができます。

  • rsyncはパッケージマネージャでインストールすることができます。今回はssh経由でデータ転送を行うため
      rsync
      ssh
    のパッケージ二つをインストールします

  • 次にWindows用のrsync及びsshのインストールです。[www.itefix.no/i2/content/cwrsync-free-edition]のページ下部からcwRsync_5.4.1_x86_Free.zipファイルを入手します。入手後はWindows用ツールとして通常の手順でインストールして下さい。cwRsyncの中にはsshも含まれており、Cygwinのサブセットとして単独で動作可能になっています。

  • 次にインストールしたcwRsyncの中のコマンド、「rsync」と「ssh」をコマンドプロンプトから使えるようにするため、コマンドの置かれているパスをPATH環境変数に登録します。Windows7ならコントロールパネル→システム→システムの詳細設定(左側メニュー)等から「システムのプロパティ」画面を開きます。それから下図のように環境変数ボタンを押し→Pathを選んで→編集ボタンを押し→「cwRsyncをインストールしたPath\bin」を追加登録します。

rsyncを使ってみる
  • それでは実際にrsyncを使ってみましょう。バッチファイルとして作ると、下記の様な記述になります。ちなみに「←」以降は説明のために書いている記述で、実際にバッチファイルに書かれているわけではありません
    @echo off
    
    set HOME=%HOMEDRIVE%%HOMEPATH%                          ←(1).ssh/の置き場所
    
    echo #=============================================
    echo # [Enter]を押すとバックアップを開始します。
    echo # 中止する場合は[Ctrl]+[C]を押してください。
    echo #=============================================
    pause
    @echo on
    rsync ^
      /cygdrive/c/Users/hoge/Documents ^                    ←(2)バックアップ対象
      /cygdrive/c/Users/hoge/Pictures ^                     ←〃
      /cygdrive/c/Users/hoge/Music ^                        ←〃
      /cygdrive/c/Users/hoge/Downloads ^                    ←〃
      ^
      -auvz --delete --stats --rsh=ssh ^                    ←(3)オプション
      ^
      backup_acc@192.168.11.100:/home/backup_acc/Backup_dir ←(4)バックアップ先指定
    @echo off
    echo #=============================================
    echo # バックアップが終了しました
    echo # [Enter]を押してください。
    echo #=============================================
    pause

  • (1)では環境変数HOMEを設定しています。これはsshの実行に必要なもので、HOMEが指定する場所に.sshディレクトリが作成され、そこにsshの設定ファイルや鍵データ等が置かれます。HOMEDRIVE と HOMEPATH はWindowsで最初から定義されている環境変数です。それぞれホームディレクトリのあるドライブ、ホームディレクトリのパスを表しています。%で囲んでいるのは環境変数名であることを意味しています

  • (2)はバックアップ対象ディレクトリの指定です。必要なだけ複数指定できます。しかし変な表記ですね。これはWindows内のディレクトリがCygwin表記されていることによります。変換の規則は下記2点です。そして重要な注意点があります。
    [1]ドライブ名 : ドライブ文字: → /cygdrive/ドライブ文字
      (例)C: → /cygdrive/c
    [2]区切りの\(バックスラッシュ)を/(スラッシュ)に変換
      (例)C:\Users\hoge\Documents → /cygdrive/c/Users/hoge/Documents
    
    [注意点]ディレクトリ名の最後に「/」をつけてはいけません!!
      OK : /cygdrive/c/Users/hoge/Documents
      NG : /cygdrive/c/Users/hoge/Documents/
    間違えると指定ディレクトリ以下の中身だけがコピーされます。複数Dir指定のときは混ざってしまいます。
    コピー元指定時にのみ効いてきます。

  • (3)はrsyncの動作指定オプションです。
    -auvz
      a : アーカイブモード。属性保持。
      u : 既存ファイル処理。更新時のみコピーする。
      v : 処理経過を表示する。
      z : データを圧縮する。
    
    --delete  : コピー元に無いファイルはコピー先でも削除
    --stats   : 転送効率の表示
    --rsh=ssh : リモートシェルの指定。sshがお勧めです。

  • (4)はコピー先の指定です。IPアドレスやコピー先ディレクトリの情報を記述しています。
    backup_acc@192.168.11.100:/home/backup_acc/Backup_dir
    |          |              |
    |          |              +->バックアップ先ディレクトリ名
    |          +->バックアップ先マシンのIPアドレス
    +->バックアップ先マシンのログインアカウント名
Copyright(C) 2015 Altmo
本HPについて