Pocket

UNIXには、rsyncという便利な同期コマンドがある。

簡単に言うと差分バックアップコマンドなんだけれども、このrsyncには現時点において標準のログ取得機能って存在していない。

ということで、個人的に使用しているrsyncでのバックアップファイルをリスト化するシェルスクリプトは以下。

Sponsored Links

■rsync_backup.sh

#!/bin/sh
#自動バックアップコマンド

#実行時間を取得
time1=`date +'%Y%m%d_%H:%M:%S'`
time2=`date +'%Y%m%d'`

#ログ保有期間(日)を記載する
log_t="30"

#ログ保存先
log_dir="/var/log/"

#ログファイル
logname=`basename $0`
logfile="${log_dir}${time2}_`basename $0 .sh`.log"

#過去のログを削除する
find ${log_dir} -name *`basename $0 .sh`.log -mtime ${log_t} | xargs rm -rfv

#同期元データ
#同期元のフォルダを指定する。
#なお、同期元フォルダがローカルフォルダではない場合は以下のように記述する。
#ユーザ名@サーバ(ホスト名orIPアドレス):フォルダ
rsource = /home/abc

#同期先データ
#同期先のフォルダを指定する。
#なお、同期先フォルダがローカルフォルダではない場合は以下のように記述する。
#ユーザ名@サーバ(ホスト名orIPアドレス):フォルダ
rsynch = aaa@aaaserver:/home/abc

#以下、適当にバックアップ先へrsyncを実行
    touch ${logfile}
    rsync -vv -a --delete ${rsource} ${rsynch} | grep -v " is uptodate"$  >> ${logfile}

とまあ、こんな適当な感じ。一応解説だけ。

まず、rsyncのオプションで「-vv」と記述している。これは、同期の詳細情報を取得するためのもので、「-v」から「-vvv」までを指定出来る。ただし、ここではvを3つ指定すると問題があるため2つとしている。理由は後述。

次に、grepで「-v」コマンドを指定し、「 is uptodate」を行末に含まないものを抽出し、ログファイルに出力させている。
これは、rsyncで同期先にあるファイルは、すでに同期済として上記単語を行末に追加してくるから。で、rsyncのオプションで「-vvv」を指定すると、それ以外の行で非同期ファイルに関する情報を記述してくるので、こんな単純なスクリプトでは対処できないから採用していない。

以上。個人的に使用している差分バックアップ用のスクリプトでした。

2015/06/09 追記

rsyncには、「–logfile」というオプションがあることを知った。

rsync -avR バックアップ元ディレクトリ バックアップ先ディレクトリ --log-file=出力するログ・ファイル
[root@test-centos7 ~]# rsync -avR root@192.168.0.226:'`find /etc -name "*.conf"`' /work2 --log-file=/home/rsync.log

root@192.168.0.226's password:
receiving incremental file list
created directory /work2
etc/
etc/aaa.conf
etc/asound.conf
~ 省略 ~
etc/yum/protected.d/
etc/yum/protected.d/systemd.conf

sent 2663 bytes  received 254714 bytes  73536.29 bytes/sec
total size is 244120  speedup is 0.95
[root@test-centos7 ~]# 
[root@test-centos7 ~]# cat /home/rsync.log
2015/06/09 06:19:54 [12220] receiving file list
2015/06/09 06:19:54 [12220] created directory /work2
2015/06/09 06:19:54 [12222] cd+++++++++ etc/
2015/06/09 06:19:54 [12222] >f+++++++++ etc/aaa.conf
2015/06/09 06:19:54 [12222] >f+++++++++ etc/asound.conf
~ 省略 ~
2015/06/09 06:19:54 [12222] cd+++++++++ etc/yum/protected.d/
2015/06/09 06:19:54 [12222] >f+++++++++ etc/yum/protected.d/systemd.conf
2015/06/09 06:19:54 [12222] sent 2663 bytes  received 254714 bytes  73536.29 bytes/sec
2015/06/09 06:19:54 [12222] total size is 244120  speedup is 0.95
[root@test-centos7 ~]#

多分、こっちの方がログとして利用するなら良いと思う。

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: rsyncによって同期したファイルをログ化 | 俺的備忘録 〜なんかいろいろ〜 | ログ情報広場.com

Leave a Comment

メールアドレスが公開されることはありません。