2009/10/17
ec2-bundle-volのexclude
EBSでマウントしているディレクトリを除外してAMIをbundleしたかったので、自作のバッチスクリプトにその処理を追加しているところ。
内部でrsyncを使っているようなので、ec2-bundle-volの-eオプションにもワイルドカードというかglobパターンが渡せるのかと思いきや、ec2-bundle-volの内部で"*"が展開されてしまってどうにもうまくいかない。
やりたかったことは、"/mnt/point1/...."の/mnt/point1はディレクトリとして残しつつ、point1/の中身は含まないというexcludeオプションの実現。
ec2-bundle-volに渡したexclude指定が適切にrsyncに渡っているなら、-e '/mnt/point/*'のような感じで行くはずなのだけれど。
そこでどうしようもなくかっこ悪く、ec2-bundle-volを呼ぶバッチスクリプト側で、"*"を展開して渡してやる羽目に。
さらに、ec2-bundle-volは複数個の"-e"オプションを受け付けないことが判明。。。これはひどい。
内部でrsyncを使っているようなので、ec2-bundle-volの-eオプションにもワイルドカードというかglobパターンが渡せるのかと思いきや、ec2-bundle-volの内部で"*"が展開されてしまってどうにもうまくいかない。
やりたかったことは、"/mnt/point1/...."の/mnt/point1はディレクトリとして残しつつ、point1/の中身は含まないというexcludeオプションの実現。
ec2-bundle-volに渡したexclude指定が適切にrsyncに渡っているなら、-e '/mnt/point/*'のような感じで行くはずなのだけれど。
そこでどうしようもなくかっこ悪く、ec2-bundle-volを呼ぶバッチスクリプト側で、"*"を展開して渡してやる羽目に。
"-e '#{Dir.glob('/mnt/point1/*').join(',')}'"
さらに、ec2-bundle-volは複数個の"-e"オプションを受け付けないことが判明。。。これはひどい。