2013年9月15日日曜日

CentOS6で"cp/mv"の上書きはバックアップを作成し"rm"はゴミ箱に移動してゴミ箱の中身は"tmpwatch"で定期的に削除する

スズキです。

よくある話ですが。。。

まず、".bashrc"をきれいにしておきます。("-i"の"alias"とか削除します)
# cat /root/.bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
 . /etc/bashrc
fi

次に、全ユーザー共通になるように下記のように設定します。
# cat /etc/profile.d/suz-lab.sh
# suz-lab initialization script (sh)

export VERSION_CONTROL=numbered

alias rm='mv -b -t /var/tmp/trash'
alias cp='cp -b'
alias mv='mv -b'
  • "VERSION_CONTROL=numbered"は重複バックアップに番号を付けます。
  • "-b"はバックアップを作成するオプションです。
  • 削除時のゴミ箱は"/var/tmp/trash"です。("-t"で指定)

そして、確認の準備です。
# touch test
# mkdir tmp
# ls
test  tmp

"cp"で上書きするとバックアップが作成されることがわかります。
# cp test tmp/
# cp test tmp/
# ls tmp/
test  test.~1~

"mv"で上書きしてもバックアップが作成され重複すると連番が付くこともわかります。
# mv test tmp/
# ls tmp/
test  test.~1~  test.~2~

"rm"で削除するとゴミ箱(/var/tmp/trash/)に移動します。
# rm tmp/
# ls /var/tmp/trash/
tmp
# mkdir tmp
# rm tmp/
# ls /var/tmp/trash/
tmp  tmp.~1~

さらに"tmpwatch"でゴミ箱(/var/tmp/trash/)の中身を定期的に削除します。

インストールは"yum"で簡単にできます。
# yum -y install tmpwatch
...

インストール時に"/etc/cron.daily/tmpwatch"が作成されますが、
下記のように調整しました。(最後に"/var/tmp/trash/"の中身の削除の設定をしています)
# cat /etc/cron.daily/tmpwatch
#! /bin/sh

# default
/usr/sbin/tmpwatch -v -m -x /tmp/.ICE-unix 7d /tmp 2>&1 | logger -i -t tmpwatch
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d "$d" ]; then
 /usr/sbin/tmpwatch -v -m -f 7d "$d" 2>&1 | logger -i -t tmpwatch
    fi
done

# add by suz-lab
/usr/sbin/tmpwatch -v -m 7d /var/tmp/trash 2>&1 | logger -i -t tmpwatch
とりあえず、更新日付が7日前より古いものを削除するようにしています。

ゴミ箱(/var/tmp/trash)内のファイル/ディレクトリの日付をものにして、
上記のスクリプトを実行してみます。
# touch -d "2003/1/1 00:00:00" /var/tmp/trash/*
# touch -d "2003/1/1 00:00:00" /var/tmp/trash/*/*
# /etc/cron.daily/tmpwatch
# ls /var/tmp/trash/
#cat /var/log/messages
...
Sep 15 19:17:16 ip-10-128-12-176 tmpwatch[1720]: removing file /var/tmp/trash/tmp.~1~/test.~2~
Sep 15 19:17:16 ip-10-128-12-176 tmpwatch[1720]: removing file /var/tmp/trash/tmp.~1~/test
Sep 15 19:17:16 ip-10-128-12-176 tmpwatch[1720]: removing file /var/tmp/trash/tmp.~1~/test.~1~
Sep 15 19:17:16 ip-10-128-12-176 tmpwatch[1720]: removing directory /var/tmp/trash/tmp.~1~ if empty
Sep 15 19:17:16 ip-10-128-12-176 tmpwatch[1720]: removing directory /var/tmp/trash/tmp if empty
...
すると、ファイルとディレクトリが削除されていることがわかります。

ということで、AMIにも組み込みます。
--------
http://www.suz-lab.com

0 コメント: