dmv php bestanden en mappen ouder dan x verwijderen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roy Sielikaus

Roy Sielikaus

12/08/2010 14:40:19
Quote Anchor link
Heren, en Dames uiteraard.

Als volledig newbie ben ik uiteindelijk hier beland omdat ik nergens op internet een kant en klaar script kan vinden die aan mijn behoefte voldoet. Ik hoop dat jullie mij kunnen helpen.

Ik wil een php script die in een directory mappen en bestanden zoek die ouder zijn dan x dagen en deze verwijderd.

waarom?
Ik maak vanaf sit A een backup (directadmin) en ftp deze backup naar serverB. Omdat ik niet tot in de eeuwigheid backups wil bewaren mogen ze van mij na 5 dagen verwijderd worden.

Nu heb ik dit gevonden maar het werkt niet:
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
$dir
= '/home/backup';
if ($handle = opendir($dir)) {
  /* This is the correct way to loop over the directory. */
  while (false !== ($file = readdir($handle))) {
    if ($file[0] == '.' || is_dir("$dir/$file")) {
       // ignore hidden files and directories
       continue;
    }

    if ((time() - filemtime($file)) > ($days *86400)) { //5 days
      unlink("$dir/$file");
    }
  }

  closedir($handle);
}

?>


Excuus op een of andere manier eindgt de quote niet :(

deze foutmelding krijg ik:
Quote:
Warning: filemtime() [function.filemtime]: stat failed for 9.rss in /home/sieliaku/public_html/delete.php on line 11

Warning: unlink(/home/sieliaku/public_html/images/phocagallery//9.rss) [function.unlink]: Permission denied in /home/sieliaku/public_html/delete.php on line 12


dit bestand heb ik zelfs al 777 gechmod.
De foutmelding krijg ik alleen voor de bestanden, met de directory's wordt helemaal niets gedaan :(

helaas kan ik geen ssh toegang, maar dit script wil ik draaien
find /home/backup -type f -mtime +5 -exec rm {} \;
vervolgens dit
find /home/backup -type d -mtime +5 -exec rm {} \;

Ik hoop dat jullie mij verder kunnen helpen.

groet
Roy

BBcode tags goed gesloten[/modedit]
Gewijzigd op 13/08/2010 10:02:11 door Roy Sielikaus
 
PHP hulp

PHP hulp

25/12/2024 17:57:12
 
Joren de Wit

Joren de Wit

12/08/2010 14:47:50
Quote Anchor link
Ik vermoed dat de paden die je gebruikt niet helemaal kloppen. Sowieso zul je in filemtime() ook de $dir moeten opgeven aangezien het relatieve pad anders niet klopt. Zie ook het pad in de tweede foutmelding, dat kan niet juist zijn.

Verder kun je wellicht beter glob() gebruiken, dan krijg je direct de relatieve paden terug en hoef je die zelf niet meer te construeren...
 
John D

John D

12/08/2010 15:12:57
Quote Anchor link
Ik gebruik dit om te tellen of te verwijderen, misschien kan je hier wat syntax uithalen. glob lijkt me ook wel een efficiente oplossing, kende ik nog niet.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$jouw_pad
= "tmp";
if ( $directory_handle = opendir( $jouwpad ) )
{

  $count = 0;
  while ( false !== ( $file = readdir( $directory_handle ) ) )
  {

    if($file != "." && $file != "..")
    {

      if(time()- fileatime($jouwpad . "/" . $file) < MAX_IDLE_TIME * 60)
      {

        $count++;
      }

      else //remove files with PHP - Unlink()
      {
        unlink($jouwpad . "/" . $file);
      }
    }
  }

  closedir($directory_handle);
}

?>
Gewijzigd op 12/08/2010 15:15:27 door John D
 
Roy Sielikaus

Roy Sielikaus

13/08/2010 09:59:52
Quote Anchor link
Dag John D,
Helaas kan ik niet zoveel met je code :( Want de selectie moet echt op ouderdom plaatsvinden. En code combineren??

Nadat ik de paden heb aangepast krijg ik 1 foutmelding minder :D
Helaas worden de bestanden nog niet verwijderd, de twee foutmelding blijft.

Glob gebruiken?
Zover ik begrijp laat je dan zoeken naar een pattern. Maar er is geen er is geen 'pattern' alleen maar een tijdsindicatie. pattern zou * zijn.

Ik heb momenteel een foto map genomen, omdat ik weet dat daar veel mappen en bestanden in staan die voldoen aan de voorwaarden.
Momenteel is de code:
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
$dir
= '/home/sieliaku/public_html/images/phocagallery';
if ($handle = opendir($dir)) {
  /* This is the correct way to loop over the directory. */
  while (false !== ($file = readdir($handle))) {
    if ($file[0] == '.' || is_dir("$dir/$file")) {
       // ignore hidden files and directories
       continue;
    }

    if ((time() - filemtime("$dir/$file")) > ($days *86400)) { //7 days
      unlink("$dir/$file");
    }
  }

  closedir($handle);
}

?>


en de foutmelding

Quote:
Warning: unlink(/home/sieliaku/public_html/images/phocagallery/9.rss) [function.unlink]: Permission denied in /home/sieliaku/public_html/delete.php on line 12
Gewijzigd op 13/08/2010 10:06:03 door Roy Sielikaus
 
Johan Dam

Johan Dam

13/08/2010 10:08:59
Quote Anchor link
Dit is een rechten probleem, de code klopt wel, maar PHP heeft simpelweg geen toestemming om de bestanden te verwijderen.

Ga naar de map in questie en verander de rechten naar 777, (vergeet niet aan te geven dat de verandering doorgevoerd moet worden op alle sub-mappen en bestanden)
 
Roy Sielikaus

Roy Sielikaus

13/08/2010 10:24:57
Quote Anchor link
Super, Dat deed het hem.
Ik had de bestanden wel 777 gegeven, maar niet de dir.
Volgende issue.
De bestanden in de root van de map worden netjes verwijderd. Maar wel allemaal? Niet alleen die ouder zijn dan 5 dagen.
Vervolgens worden alle subdirectory's overgeslagen :(
Gewijzigd op 13/08/2010 10:27:33 door Roy Sielikaus
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.