Avatar billede videodyr Nybegynder
29. juni 2001 - 13:00 Der er 8 kommentarer og
1 løsning

Slet filer!

Hejsa igen!
Dette er nok et dem spørgsmål for jer der ude.
Jeg ville gerne har at min Linux server sletter txt-filer når de er over en uge gammel i mappen \"/home/lk/test/\"...
Jeg har høret at det kan den godt gør, men jeg ved ikke hvordan man for den til at gøre sådan noget?
Avatar billede erikjacobsen Ekspert
29. juni 2001 - 13:02 #1
Har du cron kørende ? Så kan du sætte den til en gang i døgnet, f.eks., at slette
gamle filer med find kommandoen
Avatar billede videodyr Nybegynder
29. juni 2001 - 13:09 #2
Nej.. Jeg har ikke cron kørende...
Kan man ikke bare lave et eller andet script der køre af sig selv?
Avatar billede erikjacobsen Ekspert
29. juni 2001 - 13:11 #3
Et script kan ikke \"køre af sig selv\" :) Det er det cron vil gøre for dig. Du kan
sætte scriptet i gang hver gang du lokker ind, eller ser en bestemt side, eller....
men noget skal sætte det igang.
Avatar billede agermose Nybegynder
29. juni 2001 - 13:11 #4
hvis du ikke finder en løsning med find - den har jeg personligt lidt problemer med, så jeg ville da gerne se en, så er her en der bruger perl. Den regner ikke skide godt, men det var heller ikke et krav i min løsning. Du skal sikker bruge noget der regner helt præcist, og måske noget andet. Så kan du jo overveje at ændre nedenstående.

Ellers gem det i en fil, myfile.pl,  og chmod a+x myfile.pl

#!/usr/local/bin/perl -w

# CREATED 2/5/2001, Jan Agermose
#
# USE: sletter alle kataloger under $DBBACKUPDIR der er ældre end $MAXDAYS
#      1) regnes meget primitivt, som moddato minus nu, find selv problemer
#        bør i hvert fald ikke være over 60 dage!!!

$MAXDAYS = 14;
$DBBACKUPDIR = \"/db/backup/\";

opendir(DIR, $DBBACKUPDIR) || die \"unable to open backupdir\";
@dots = grep { ! /^\\.+$/ && -d \"$DBBACKUPDIR$_\" } readdir(DIR);
closedir DIR;

foreach my $filename (@dots) {
    ($mtime) = (stat(\"$DBBACKUPDIR$filename\"))[9];
    print \"$DBBACKUPDIR$filename, last modified on: \".gmtime($mtime).\"\\n\";
    $time = time - $mtime;
    ($day, $mon) = (gmtime($time))[3..4];
    if (($day + $mon*30) > $MAXDAYS) {
        print \"Deleting\\n\";
        `rm -rf $DBBACKUPDIR$filename`;
    }
}
Avatar billede erikjacobsen Ekspert
29. juni 2001 - 13:11 #5
...LOGGER ind...
Avatar billede seider Nybegynder
29. juni 2001 - 13:13 #6
du skriver et script der så skal tilføjes som en demon, det der med demon må du lige læse om, men det er et eller andet med cronolog demon eller sådan noget, scriptet er simpelt, du tjeker bare for dato på file i dit dcript mod den aktuele dato, og sletter så hvis den er ældre end en uge.

kan sikkert finde det på www.sslug.dk eller på www.linux.dk
Avatar billede videodyr Nybegynder
29. juni 2001 - 13:13 #7
okay... Så synes jeg at vi skal lave script først. Så kan jeg nemlig bare selv sætte det i gang. For det ved jeg godt hvordan bare gør.
Men jeg skal lige har noget hjælp til at lave script.
Avatar billede peter_m Nybegynder
29. juni 2001 - 13:20 #8
køre kommando i linux.

find /home/ik/test -mtime+7 -name \"*.txt\" -print0 | xargs --null --no-run-if-empty rm -f

Hvis du skriver \"info find\" og vælge common task og cleaning så finder du standarden for oprydning.

denne smider du i en fil og tilføjer den til din cron.

der skal ikke mere til.
Avatar billede erikjacobsen Ekspert
29. juni 2001 - 13:23 #9
eller blot
  find /home/ik/test -mtime +7 -name \"*.txt\" -exec rm -f {};
(utestet)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester