rsyncを使ってサーバのデータをバックアップ

サーバ環境

CentOSならrsyncは、標準でインストールされています。
rsync / ssh がインストールされていないようであれば、インストールしてください。

$ yum install rsync
$ yum install openssh-clients

rsync のインストールディレクトリの確認は、

$ which rsync
/usr/bin/rsync

 

sshでサーバに接続した後、下記コマンドを実行するとファイル同期します。

rsync -auz --delete -e "ssh -i key.pem -p 10022" user_name@255.255.255.255:/var/www/html/ /home/backup/www/ > /home/backup/log/rsync 2>&1

公開キーでの接続だったり、ポート番号を変更している場合に指定します。
ssh -i 鍵ファイル -p 接続ポート番号

接続とディレクトリの指定をします。
アカウント名@コピー元のサーバホスト:コピー元のパス コピー先のパス > ログファイル

オプション値については、下記サイトを参照。
http://www.infoscience.co.jp/technical/rsync/rsync.html#option

-v, --verbose               転送情報を詳しく表示
-q, --quiet                 転送情報を表示しない
-c, --checksum              常にチェックサムを行う
-a, --archive               アーカイブモード(-rlptgoD オプションと同義)
-r, --recursive             ディレクトリで再帰的に実行する
-R, --relative              相対パス名を使う
-b, --backup                バックアップを作成する (デフォルトで ~ が付く)
    --suffix=SUFFIX         バックアップのサフィックスを変更
-u, --update                アップデートのみ許可 (上書き禁止)
-l, --links                 ソフトリンクを維持する
-L, --copy-links            ファイルのようにソフトリンクを扱う
    --copy-unsafe-links     送信側ツリー外のリンクをコピー
    --safe-links            受信側ツリー外のリンクを無視
-H, --hard-links            ハードリンクを維持する
-p, --perms                 パーミッションを維持する
-o, --owner                 オーナーを維持する (root のみ)
-g, --group                 グループを維持する
-D, --devices               デバイスを維持する (root のみ)
-t, --times                 タイムスタンプを維持する
-S, --sparse                密度の低いファイルを効率的に扱う
-n, --dry-run               実行時の動作だけを表示
-W, --whole-file            rsync アルゴリズムを使わない
-x, --one-file-system       再帰的に実行された時にファイルシステムの境界を横断しない
-B, --block-size=SIZE       rsync アルゴリズムのチェックサムブロックサイズの制御(default 700)
-e, --rsh=COMMAND           rsh の代替を指定
    --rsync-path=PATH       リモートのマシーンで rsync のコピーへのパスを指定
-C, --cvs-exclude           システム間で転送したくない広範囲のファイルを除外(CVSの方法と同じ)
    --delete                送信側にないファイルを削除
    --delete-excluded       受信側にある exclud ファイルも削除
    --partial               転送途中のファイルを保存します
    --force                 ディレクトリが空でなくても削除
    --numeric-ids           ユーザとグループの id 番号を転送して、転送後にマッピング
    --timeout=TIME          IO タイムアウトを設定(秒)
-I, --ignore-times          タイムスタンプとファイルサイズのチェックをしない
    --size-only             タイムスタンプのチェックをしないで、ファイルサイズのチェックだけをする
-T  --temp-dir=DIR          tmp ファイルのディレクトリを指定
    --compare-dest=DIR      受信側のファイルと比較するための追加ディレクトリ
-z, --compress              受信ファイルを圧縮compress file data
    --exclude=PATTERN       パターン一致するファイルを除外
    --exclude-from=FILE     ファイルに記述されたパターンと一致するファイルを除外
    --include=PATTERN       パターン一致するファイルを除外しない
    --include-from=FILE     ファイルに記述されたパターンと一致するファイルを除外しない
    --version               rsync のバージョンを表示する
    --daemon                rsync をデーモンとして走らせる
    --config=FILE           別の rsyncd.conf ファイルを指定
    --port=PORT             別の rsync ポート番号を指定
    --stats                 rsync アルゴリズムの転送効率を表示
    --progress              転送中の情報を表示
    --log-format=FORMAT     ログフォーマットを指定
    --password-file=FILE    ファイルからパスワードを得る
-h, --help                  このヘルプを表示する

コマンドをcronに設定しておけば、定期的に同期されるようになります。

$ crontab -e
0 */1 * * * rsync -auz --delete -e "ssh -i key.pem -p 10022" user@255.255.255.255:/var/www/html/ /home/backup/www/ > /home/backup/log/rsync 2>&1

※1時間毎に同期

コメント

スポンサーリンク
タイトルとURLをコピーしました