svn addがめんどくさいので

subversionを使っているときに、たくさんのファイルをまとめて追加したときや削除したときに、何回もsvn add …とかsvn delするのがめんどくさい。

そこで、「.bash_profile」に以下のような記述を入れた。

alias svndel="svn st | grep '^!' | sed -e 's/\![ ]*/svn del /g' | sh"
alias svnadd="svn st | grep '^?' | sed -e 's/\?[ ]*/svn add /g' | sh"

以上で、svnaddとかsvndelとコマンドを入力するだけで、まとめてファイルの追加や削除が出来る。

めっちゃ便利っす。

linuxコマンドで添付ファイル付きメール送信 その2

以前の記事で、Linuxコマンドをuuencode+mailコマンドで送信する方法を紹介しましたが、その方法では、Gmailでデコード出来ないことを発見しました。

Gmailでもデコードできる添付ファイル付きメールを送信するには、muttコマンドを使用します。

mutt -a files.tar.gz -s "Attach file ..." foo@example.com

muttがインストールされていない場合は、CentOSならyumでインストールできます。

yum install mutt

この方法なら添付ファイルだけでなく、メールの本文も入力できるので、こちらの方が便利かもしれませんね。

Linux,PHPなどを利用したシステム開発はシータネットワークス

デフォルトのパーミッション

Linuxには、umaskという密かに便利なコマンドがあって、これを使用するとデフォルトのパーミッションを確認したり、設定することが可能です。

同じグループのユーザー全員に書き込み権限を与えたいときなどは、いちいち「chmod g+w ./foo.txt」なんてことをするよりも、デフォルトのパーミッションを変更したほうが効率的です。

umask 0002

作業開始時に、以上のコマンドを入力すると、そのあと新規作成されるディレクトリやファイルは、グループ全員に対する書き込み権限が設定されます。

以下の例では、foo.txtを作成した際のパーミッションが664になっていることをご確認できるかと思います。

[miya@marlin test]$ umask 0002
[miya@marlin test]$ touch foo.txt
[miya@marlin test]$ ls -al
合計 12
drwxrwxr-x   2 miya group 4096 11月 30 02:56 .
drwxrwxr-x  10 miya group 4096 11月 30 02:56 ..
-rw-rw-r--   1 miya group    0 11月 30 02:56 foo.txt

umaskで指定する数値の意味は、0777(ファイルは0666)からいくつ引き算するかと言うことなのですが、「0022」(これがデフォルトです)か「0002」以外を使うシチュエーションは少ないので、あえて深くは説明しません。

グループに書き込み権限を与えたいときは、「0002」。
デフォルトに戻すときは、「0022」と覚えておきましょう。

ちなみに、umaskコマンドで指定しただけでは、次回ログイン時にはumask設定値が元に戻ってしまいます。
.bashrcなどに記述しておくと次回ログイン以降も自動的に有効になりますが、これは上司の了解を得た方がよいかも。(笑)

ホームページ制作・システム開発のシータネットワークス

rsyncは正しく使いましょう

某超大手のお客様のサーバーがつぶれたので、コールドスタンバイのマシンにrsyncで保存してあったデータを、さらに別のマシンに移動することになった。

リカバリーするのにブッツケ本番ではダメでしょうとうことで、うちのサーバーを使って念のためテストすることに。。。

まずは、rsyncを使ったバックアップからと思って以下のコマンドを実行。

rsync -avz --delete / root@10.0.0.6:/

安易でした。
本当に後悔。

しばらく順調だったのですが、/sysまで進んだところでエラーを出力。
あれ?と思ってlsコマンドを打ったら、「command not found」。

むむ?と思ってもう一度打ってみても「command not found」

というわけでコピー元、コピー先ともにお亡くなりになりました。

安易と言えばそうなんですけどね。
確かにコピー先は多少トラブルがあることを想定してたんですけど、コピー元もお亡くなりになるとは想像しないですよ。しかもバックアップ用のコマンドで。。。

よかったテストして。。。(泣)

結局、本番では/home、/var、/usr、/lib、/etcのみを対象にしてrsyncを実行したら平和に終わりましたが、これは正しかったんだろうか?
(あれから1週間たちましたが各デーモンは問題なく動いています。)

そもそも、この現象は何で?
後学のために心当たりのある方はコメント下さい。

というわけで、我が身を犠牲にしてでもテストをする弊社では、Linux関連のお仕事をお待ちしています。

linuxコマンドで添付ファイル付きメール送信

データセンターなんかで作業をしていると、ログなどを持ち帰って解析したいことがある。

mail -s "logs" foo@example.com < /var/log/httpd/error_log

などのようなコマンドを実行すれば、単純なテキストファイルなら送信可能だが、圧縮データなどのバイナリを添付ファイルとして送信したいことがある。

そのような場合は、以下のようなコマンドを実行する。

uuencode path2file filename | mail -s "attach file" foo@example।com

uuencodeコマンドが無い場合は、redhat系なら以下のコマンドを実行してインストールする。

yum install sharutils

ひとつひとつのコマンドだけ見ると存在価値が分からないけど、パイプでつなげるとなるほどと思う今日この頃。

ちなみにLinuxサーバー構築承ります。