- PR -

.recycle 以下のものをすべて削除(shellプログラム)

投稿者投稿内容
YN
常連さん
会議室デビュー日: 2005/08/25
投稿数: 27
投稿日時: 2005-08-25 15:53
こんにちは、初めて投稿させていただきます。

シェル(Vine Linux 3.1)プログラムで /home以下
すべて.recycleディレクトリーを探し出してその中の10日以上
使ってないファイル、ディレクトリーを削除することは
できますか?

尚、.recycleのディレクトリーを指定させれば
つぎのシェルプログラムでできることは確認
しています。

find /home/..../.recycle/* -atime +10 -exec rm -rf {} ¥;

YN
YN
常連さん
会議室デビュー日: 2005/08/25
投稿数: 27
投稿日時: 2005-08-25 16:08
質問内容の補足です。
.recycleのディレクトリー自信は消しません。

YN
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-08-25 16:35
こんにちは。
ディレクトリも削除対象にすると、色々マズイのではないでしょうか?
( サブディレクトリに変更があっても、変更の無い上位のディレクトリごと容赦なく消しますか?? )
例えば、ディレクトリ以外を削除した後で、空のディレクトリがあれば消す、というような動作であれば分かるのですが。

[ メッセージ編集済み 編集者: angel 編集日時 2005-08-25 17:00 ]
YN
常連さん
会議室デビュー日: 2005/08/25
投稿数: 27
投稿日時: 2005-08-25 17:10
こんにちはangelさん、
.recycleはsambaで使っているもので,
「ごみ箱」です。

各共有公開ホルダーから
Windowsクライアントから削除されたものが
この.recycleに入りますから、従って定期的に
中身は削除する必要があります。

YN
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-08-25 17:34
えーと、例をあげると次のような場合です。
引用:
タイムスタンプの差を作り出す例
[angel@IT .recycle]$ mkdir -p dir/subdir; touch dir/subdir/file
[angel@IT .recycle]$ date; ls dir; sleep 60; cat dir/subdir/file
2005年 8月 25日 木曜日 17:16:09 JST
subdir

[angel@IT .recycle]$ ls -l --time=atime dir/subdir/file
-rw-rw-r-- 1 angel angel 0 8月 25 17:17 dir/subdir/file
[angel@IT .recycle]$ ls -l --time=atime
合計 0
drwxrwxr-x 3 angel angel 80 8月 25 17:16 dir


と、いうように、配下のファイル・ディレクトリの atime が更新されても、その上位にあたるディレクトリは atime が更新されない場合があります。
ディレクトリを単純に atime で判断して削除対象にすると、こういった場合でも根こそぎ削除してしまうので、マズくは無いですか??
※それ以前に、find を行った瞬間の atime 更新がどう影響するかも分からないですね…
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-08-25 17:41
10日間(240時間)アクセスのないファイルを削除するようにした。

/usr/sbin/tmpwatch 240 /home/nori/.recycle

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/735recyclecron.html

samba の util に何かありませんか。

[ メッセージ編集済み 編集者: MMX 編集日時 2005-08-25 22:17 ]
YN
常連さん
会議室デビュー日: 2005/08/25
投稿数: 27
投稿日時: 2005-08-25 18:39
atimeは無視して下さい。

要するに知りたいことは、下記シェルプログラムにおいて
find /home/..../.recycle/* -exec rm -rf {} ¥;
"/.recycle/* "の部分を指定することなく
"..../.recycle/"下位のものをすべて削除する
が出来ないかということです。

samba共有ホルダーは結構変更があり、
そのたびにシェルプログラムを
訂正するのが面倒くさいのです。、

MMXさんが提示してもらった所でも
やはりディレクトリーの場所指定(./recycleの場所)
は必要と思いますが。

YN
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-08-25 22:20
こんばんは。
.recycle の位置が分からない/数が不定ってのが問題ですか。

MMXさんがご提示になった tmpwatch を使うなら、find で .recycle の位置を探して、それを while ループの中で tmpwatch 処理すれば良いと思います。

 find 〜 | while read DIR; do tmpwatch 240 "$DIR"; done

以上、ご参考まで。

[ メッセージ編集済み 編集者: angel 編集日時 2005-08-25 22:24 ]

スキルアップ/キャリアアップ(JOB@IT)