dmv php bestanden en mappen ouder dan x verwijderen
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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);
}
?>
$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
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
Verder kun je wellicht beter glob() gebruiken, dan krijg je direct de relatieve paden terug en hoef je die zelf niet meer te construeren...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);
}
?>
$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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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);
}
?>
$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
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)
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