sambaのごみ箱フォルダの中のファイルを定期的に削除する。

サラリーマン山田さんというかたらしい。
※写真と本文は関係ありません。


スクリプト書いた。

『/home/samba/*/.trach』以下のファイルで360時間(15日間)更新のないものを削除する。
ログを取る。
念のためtestオプションを付けてます。


# cat /root/scripts/trach_tmpwatch.sh
#!/bin/sh

TMPWATCH'/usr/sbin/tmpwatch'
LOG='/var/log/tmpwach_samba.log'

echo '-------------8<----------------' >> $LOG
echo `LANG=C date` >> $LOG
$TMPWATCH --test --verbose 360 /home/samba/*/.trach >> $LOG 2>&1  # うまく動いたら『--test』を取る。


上記スクリプトだけだと空のフォルダが残るので、こんなスクリプトも追加。


# cat /root/scripts/del_empty_dir.sh
#!/bin/sh

FIND='/usr/bin/find'
LOG='/var/log/empty_dir.log'
DATE='LANG=C /bin/date'

echo '-------8<---------' >> $LOG
eval $DATE >> $LOG
$FIND /home/samba/*/.trach/* -type d -empty -delete -print >> $LOG 2>&1


このスクリプトを、『/etc/cron.daily/tmpwatch』に追記。


sambaのごみ箱設定はこんな感じ。


# cat /etc/samba/smb.conf
…
vfs object = recycle
recycle:repository = .trach/%u  # ユーザ毎に分ける。
recycle:keeptree = yes  # ツリー構造を保持。
recycle:versions = yes  # 同じファイル名のものをリネームする。
recycle:touch = yes  # ファイルアクセス日時を変更する。
recycle:exclude = *.tmp *.temp ~$* *.~?? *.ldb  # ごみ箱へ移動しないファイル名のパターン。
…