Come pulire i file sul mio sito web che non mi collego più
-
14-11-2019 - |
Domanda
Sto lavorando su un sito Web con un sacco di immagini e file PDF che vengono aggiornati regolarmente, ma i vecchi file non vengono cancellati dopo che i nuovi vengono caricati.Quindi ho molti file che sono semplicemente seduti sul server senza essere utilizzati.
C'è uno script o qualsiasi altra cosa posso correre e cercherò i file che nulla si collega a?
Modifica:
Non sto chiedendo come caricare nuovi file ed eliminare i vecchi in futuro.Ho già preso cura di questo.
Voglio solo sapere come sbarazzarmi dei file che non sono più in uso.
Ha senso?
Soluzione
Prova questo, basta non dimenticare di cambiare la tua directory $dir = "/Your/directory/here";
<?
$findex = array();
$findex[path] = array();
$findex[file] = array();
$extensions = array('.cfm','.html','.htm','.css','.php','.gif','.jpg','.png','.jpeg','.dwt');
$excludes = array('.svn');
function rec_scandir($dir)
{
$files = array();
global $findex;
global $extensions;
global $excludes;
if ( $handle = opendir($dir) )
{
while ( ($file = readdir($handle)) !== false )
{
if ( $file != ".." && $file != "." )
{
if ( is_dir($dir . "/" . $file) )
{
$files[$file] = rec_scandir($dir . "/" . $file);
}
else
{
for ($i=0;$i<sizeof($extensions);$i++)
{
if (strpos(strtolower($file),strtolower($extensions[$i])) > 0)
{
$found = true;
}
}
for ($i=0;$i<sizeof($excludes);$i++)
{
if (strpos(strtolower($file),strtolower($excludes[$i])) > 0)
{
$found = false;
}
}
if ($found)
{
$files[] = $file;
$dirlink = $dir . "/" . $file;
array_push($findex[path],$dirlink);
array_push($findex[file],$file);
}
$found = false;
}
}
}
closedir($handle);
return $findex;
}
}
$dir = "/Your/directory/here";
echo "\n";
echo " Searching ". $dir ." for matching files\n";
$files = rec_scandir($dir);
echo " Found " . sizeof($files[file]) . " matching extensions\n";
echo " Scanning for orphaned files....\n";
$findex[found] = array();
for ($i=0;$i<sizeof($findex[path]);$i++)
{
echo $i . " ";
$contents = file_get_contents($findex[path][$i]);
for ($j=0;$j<sizeof($findex[file]);$j++)
{
if (strpos($contents,$findex[file][$j]) > 0)
{
$findex[found][$j] = 1;
}
}
}
echo "\n";
$counter=1;
for ($i=0;$i<sizeof($findex[path]);$i++)
{
if ($findex[found][$i] != 1)
{
echo " " . $counter . ") " . substr($findex[path][$i],0,1000) . " is orphaned\n";
$counter++;
}
}
?>
.
Fonte: http://sun3.org/archives/297
Altri suggerimenti
Se non ci sono probabilità che avrai nuovamente bisogno di tali file dopo aver aggiornato il link e non hai file che hanno più collegamenti a loro, ti suggerisco di eliminare i file al momento dell'aggiornamento di un collegamento.IE:
- .
-
Link1
Punti aFile1
- Aggiorna
Link1
per puntare aFile2
- Elimina immediatamente
File1
.Se nel tuo scenario potresti avere più collegamenti allo stesso file o file che potrebbero essere innalzati in un breve periodo, suggerirei di configurare un lavoro di cron che verrà eseguito per un esempio una volta ogni settimana e controllerà tutti i file inLa directory
files/
contro la tabellalinks
nel database ed eliminali se non ci sono collegamenti a cui fare riferimento a quel file particolare.
Ci sono molti strumenti di controllo del collegamento gratuiti che è possibile utilizzare.Dopo averlo eseguito contro il tuo sito (filtraggio per file immagine / PDF), è quindi possibile eseguire quell'elenco generato e controllarlo a livello di programmazione rispetto alla directory di immagini / PDF per scoprire cosa non è nell'elenco.Tieni presente che questo può essere difficile determinare con certezza come generato dinamicamente generatodicetagcode (basato su ingressi / impostazioni dell'utente, riscrivi apache, i file restituiti tramite codice) potrebbero non essere inclusa.
Se è un server UNIX, utilizzare il comando find
con qualcosa del genere:
find /tmp/web_tmp \( \( \( -type f -amin +120 \) -or \( -type f -amin +30 -size 20480k \) \) -exec rm {} \; \) -or \( -depth -type d -empty -exec rmdir {} \; \)
.
In questo caso sto guardando nella cartella / tmp / web_tmp per le cartelle vuote e i file che non sono stati accessibili in 120 minuti o non sono stati accessibili in 30 minuti e sono oltre 20 MB.Una volta fondato eliminerà la voce trovata
Forse nel comando find
troverete qualcosa che ti permetterà di eliminare i file che non sono stati accessibili / modificati / modificati da molto tempo.