データバックアップとしてお手軽に実行できる便利なLinuxコマンド「rsync」。
今回Jenkinsジョブのシェル実行でrsyncを実行し
スケジュールバックアップできる仕組みを作りました。
以下のサーバ構成です。
・Jenkinsサーバ:
今回Jenkinsジョブのシェル実行でrsyncを実行し
スケジュールバックアップできる仕組みを作りました。
以下のサーバ構成です。
・Jenkinsサーバ:
サーバJ
・転送元:
サーバA
・転送先(バックアップ先):
サーバB
※Jenkinsジョブの実行ノード
1.事前準備
[Jenkinsの管理]-[ノードの管理]からサーバBを追加し
バックアップジョブの実行ノードに設定します。
サーバBにバックアップ先ディレクトリを作成しておきます。
今回は以下としました。
バックアップジョブの実行ノードに設定します。
サーバBにバックアップ先ディレクトリを作成しておきます。
今回は以下としました。
/home/bkdir
また、サーバAで共有フォルダをマウントしておきます。
/mnt/sharedir
2.Jenkinsジョブの作成
Jenkinsジョブでシェルの実行を選択し
以下のシェルスクリプトを記載します。
以下のシェルスクリプトを記載します。
export backup_src_dir=/mnt/sharedir/
export backup_dst_dir=/home/bkdir
ls -la ${backup_src_dir}
ls -la ${backup_dst_dir}
whoami
rsync -auvz –delete ${backup_src_dir} ${backup_dst_dir}
転送元ディレクトリ指定時に最後の”/”を付けるのと付けないのとで
以下のように挙動が変わりますので注意が必要です。
・”/”を付ける(/mnt/sharedir/) ⇒ ”sharedir”の中身がコピーされる。(/home/bkdir/**.*)
・”/”を付けない(/mnt/sharedir) ⇒ ”sharedir”を含めてコピーされる。(/home/bkdir/sharedir/**.*)
また、Jenkinsジョブのスクリプト内でwhoamiコマンドを叩くよう記述すると実行ユーザが出力されます。
Jenkinsでジョブ実行する際にどのユーザで実行されているか確認するのに便利です。
whoamiコマンドを仕込んで確認すると
Jenkinsジョブの実行ノード追加時に指定した認証情報のユーザで
Jenkinsジョブが実行されていることが確認できます。
3.エラー時の対処
さて上記諸々を設定してジョブ実行すると
以下のエラーが表示され Finished: FAILURE となってしまいました。
以下のエラーが表示され Finished: FAILURE となってしまいました。
rsync: failed to set times on “/home/bkdir/.”: Operation not permitted (1)
rsyncオプション -a で実行するとタイムスタンプを維持してコピーしようとするのですが、
/home/bkdirディレクトリの所有者とrsync実行ユーザ(Jenkinsジョブ実行ユーザ)が異なるため権限不足でエラーとなるようです。
対応としては
①./home/bkdirディレクトリの所有者をrsync実行ユーザ(Jenkinsジョブ実行ユーザ)に変更する
②.rsync実行ユーザ(Jenkinsジョブ実行ユーザ)を/home/bkdirディレクトリの所有者に変更する
のいずれかとなります。
ここでwhoamiの結果が生きてきますね。
なお、タイムスタンプ等を含めた完全コピーの必要が無ければ -a オプションを -rlOtcv 等に変更することでもエラーは解消されます。
※以下サイトを参考にさせて頂きました。
rsync | Professional Programmer
/home/bkdirディレクトリの所有者とrsync実行ユーザ(Jenkinsジョブ実行ユーザ)が異なるため権限不足でエラーとなるようです。
対応としては
①./home/bkdirディレクトリの所有者をrsync実行ユーザ(Jenkinsジョブ実行ユーザ)に変更する
②.rsync実行ユーザ(Jenkinsジョブ実行ユーザ)を/home/bkdirディレクトリの所有者に変更する
のいずれかとなります。
ここでwhoamiの結果が生きてきますね。
なお、タイムスタンプ等を含めた完全コピーの必要が無ければ -a オプションを -rlOtcv 等に変更することでもエラーは解消されます。
※以下サイトを参考にさせて頂きました。
rsync | Professional Programmer
コメント