class Capistrano::Logger
alias previous_log_method log
def log(level, message, line_prefix=nil)
message = message.gsub(/(sshpass -p) (\S+)/, "\\1 ********")
previous_log_method level, message, line_prefix
end
end
set :password, proc { Capistrano::CLI.password_prompt('パスワード: ') }
run "sshpass -p '#{password}' rsync -a -e 'ssh' UserName@source_host:/source_path/ /destination_path/"
Loggerのところは、そのままだとパスワードが出力されてしまうのでsshpassに渡している-pの引数は********にして伏せて表示するための処理です
2013-03-26
capistranoでパスワード認証sshを使ったrsyncを利用する
deproy.rbにこんな感じの処理を追加してみた
2012-12-14
lsyncdでApacheログの同期で嵌まったお話
lsyncdとrsyncを用いての実現を試みたのですが
まずはインストール方法
yumで入ってくれるバージョンは古いので要注意
githubによると、inotifyModeのところに
(Lsyncd >= 2.0.5) Specifies on inotify systems what kind of changes to listen to. Can be "Modify", "CloseWrite" (default) or "CloseWrite or Modify".
と書かれている。
なので、こっちから2.0.7のrpmを入手
32bit版
http://www6.atomicorp.com/channels/atomic/centos/5/i386/RPMS/lsyncd-2.0.7-2.el5.art.i386.rpm
http://www6.atomicorp.com/channels/atomic/centos/6/i386/RPMS/lsyncd-2.0.7-2.el6.art.i686.rpm
64bit版
http://www6.atomicorp.com/channels/atomic/centos/5/x86_64/RPMS/lsyncd-2.0.7-2.el5.art.x86_64.rpm
http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/lsyncd-2.0.7-2.el6.art.x86_64.rpm
そして、サービス起動用のファイル/etc/init.d/lsyncdを作成してパーミッションを755に設定
rsyncOptsで--appendを指定することで、ログファイルのように追記更新型のファイル用に、同期先のファイルの置き換えではなく、追記で対応するように設定
--max-delete=-1を指定することで、同期元からファイルが削除されても同期先のファイルは消されないように設定 っという感じにしてみましたヾ(*・ω・)シ
あとは、サービスを起動するだけ
- 更新が検知されなず、同期されない
- 更新が検知されてもtail -fできない
まずはインストール方法
yumで入ってくれるバージョンは古いので要注意
lsyncd.x86_64 2.0.4-1.el5.1 epelだと、Apacheのログファイルのようにファイルをオープンしっぱなしのファイルについては更新を検知できないらしい。
githubによると、inotifyModeのところに
(Lsyncd >= 2.0.5) Specifies on inotify systems what kind of changes to listen to. Can be "Modify", "CloseWrite" (default) or "CloseWrite or Modify".
と書かれている。
なので、こっちから2.0.7のrpmを入手
32bit版
http://www6.atomicorp.com/channels/atomic/centos/5/i386/RPMS/lsyncd-2.0.7-2.el5.art.i386.rpm
http://www6.atomicorp.com/channels/atomic/centos/6/i386/RPMS/lsyncd-2.0.7-2.el6.art.i686.rpm
64bit版
http://www6.atomicorp.com/channels/atomic/centos/5/x86_64/RPMS/lsyncd-2.0.7-2.el5.art.x86_64.rpm
http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/lsyncd-2.0.7-2.el6.art.x86_64.rpm
そして、サービス起動用のファイル/etc/init.d/lsyncdを作成してパーミッションを755に設定
#!/bin/bash
# chkconfig: - 85 15
# description: lsyncd
RETVAL=0
prog="/usr/bin/lsyncd"
conf="/etc/lsyncd.conf"
pidfile="/var/run/lsyncd.pid"
. /etc/rc.d/init.d/functions
start() {
echo -n "Starting $prog:"
daemon $prog $conf
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch $pidfile
return $RETVAL
}
stop() {
echo -n "Stopping $prog:"
killproc $prog
RETVAL=$?
echo
rm -f $pidfile
return $RETVAL
}
case $1 in
start ) start ;;
stop ) stop ;;
restart) stop && start ;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
次に設定ファイルを作成
settings = {
logfile = "/var/log/lsyncd.log",
statusFile = "/var/log/lsyncd.stat",
statusInterval = 1,
inotifyMode = "CloseWrite or Modify",
}
sync{
default.rsync,
source = "/var/log/httpd/",
target = "/mnt/log/httpd/",
rsyncOpts = {"-rlptgoD","--append","--max-delete=-1"},
maxDelays = 1
}
sync{
default.rsync,
source = "/var/log/mail/",
target = "/mnt/log/mail/",
rsyncOpts = {"-rlptgoD","--append","--max-delete=-1"},
maxDelays = 1
}
ポイントとしては、inotifyModeに"CloseWrite or Modify"を指定することで、ファイルの更新かファイルハンドラがクローズされたかでイベントを検知するよう設定rsyncOptsで--appendを指定することで、ログファイルのように追記更新型のファイル用に、同期先のファイルの置き換えではなく、追記で対応するように設定
--max-delete=-1を指定することで、同期元からファイルが削除されても同期先のファイルは消されないように設定 っという感じにしてみましたヾ(*・ω・)シ
あとは、サービスを起動するだけ
service lsyncd start
登録:
投稿 (Atom)