shell: Datei löschen, wenn Zugriff erfolgte

Bash, Shell, PHP, Python, Perl, CGI
daniel_p
Posts: 34
Joined: 2003-11-15 16:24

shell: Datei löschen, wenn Zugriff erfolgte

Post by daniel_p » 2005-02-19 17:57

Hi Forum,

ich habe hier ein kleines "Denkansatz-Problem". Folgendes: Ich habe ein Verzeichnis in dem eine Software eine Datei anlegt. Sobald jemand die Datei via TFTP ausliest soll genau diese Datei gelöscht werden. Nach und nach liegen jetzt einige Dateien in dem Verzeichnis - einige "unberührt" ander wurden eben gelesen/accessed. Genau diese will ich nun löschen...

Mein bisheriger theoretischer Ansatz war nun die "ctime" und "atime" der Dateien zu vergleichen und sobald atime!=ctime bei einer Datei soll diese gelöscht werden. Dazu fehlt momentan noch eine Umsetzung - habe mit find hantiert und es nicht hinbekommen.

Alternativ irgendwie so etwas mit temporären Dateien und vielleicht diff:

Code: Select all

ll --time=ctime --time-style=full-iso
insgesamt 32
drwxr-xr-x  2 root root 368 2005-02-19 17:24:08.236037064 +0100 .
drwxr-xr-x  4 root root 448 2005-02-08 16:27:36.000000000 +0100 ..
-rw-r--r--  1 root root 132 2005-02-08 15:24:19.000000000 +0100 DATEI

ll --time=atime --time-style=full-iso
insgesamt 32
drwxr-xr-x  2 root root 368 2005-02-19 17:53:20.004685149 +0100 .
drwxr-xr-x  4 root root 448 2005-02-19 17:41:06.822763202 +0100 ..
-rw-r--r--  1 root root 132 2005-02-19 15:51:41.869919100 +0100 DATEI
und dann irgendwie mit diff? Ich bin ratlos...

Kann man überhaupt irgendwie einfach feststellen, ob eine Datei gelesen wurde (atime?).

Vielen Dank für alles!
daniel[/code]

t0x1c
Posts: 127
Joined: 2003-10-09 19:59
Location: Nähe Kiel

Re: shell: Datei löschen, wenn Zugriff erfolgte

Post by t0x1c » 2005-02-19 18:35

evtl. regelmässig die ftp-logs durchschauen lassen, ob die entsprechende Datei runtergeladen wurde, wenn ja -> Datei löschen..

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: shell: Datei löschen, wenn Zugriff erfolgte

Post by alexander newald » 2005-02-19 19:59

Dies findet die Dateien:

Das Verzeichnis als Argument

Code: Select all

#!/usr/bin/perl



foreach my $file (local_filelist($ARGV[0])) {
        if ( (stat("$ARGV[0]/$file"))[9] != (stat("$ARGV[0]/$file"))[8] ) {
                print "$ARGV[0]/$filen";
                }
        }


sub local_filelist {
        my $curdir = $_[0];
        my @dirs = ();
        opendir(TMPDIRLIST,"$curdir");
        while (defined($_=readdir(TMPDIRLIST))) {
                if ((!-d "$curdir/$_") and ($_ ne ".") and ($_ ne "..")) {
                        push(@files,$_);
                        }
                }
        return @files;
        }

daniel_p
Posts: 34
Joined: 2003-11-15 16:24

Re: shell: Datei löschen, wenn Zugriff erfolgte

Post by daniel_p » 2005-02-19 21:45

Tausend Dank! Genau DAS habe ich gesucht........

Habs jetzt so eingebaut:

Code: Select all

rm `./deinskript.pl dir`
Daniel