share facebook facebook2 twitter menu hatena pocket slack

2013.09.17 TUE

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

鈴木 宏康

WRITTEN BY鈴木 宏康

スズキです。

表記の件、やってみました。

まず、”.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にも組み込んでみようと思います。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。