Table des matières
Effacer les fichiers inutiles
Lorsqu'une nouvelle version de DokuWiki est disponible, certains des fichiers précédemment nécessaires peuvent devenir obsolètes. Garder ces fichiers est généralement sans conséquence, mais ils pourraient poser un risque de sécurité ou détériorer des installations plus tard, nous vous recommandons donc de les supprimer.
Une liste de tous les fichiers supprimés dans les versions récentes se trouve dans data/deleted.files
. Vous devriez vérifier s'ils existent toujours dans votre installation. S'ils le sont, supprimez-les.
Vous pouvez également voir la liste actuelle sur https://github.com/dokuwiki/dokuwiki/raw/stable/data/deleted.files
Utiliser le plugin RemoveOld
Pour supprimer d'anciens fichiers via l'administration de DokuWiki, vous pouvez également utiliser le plugin RemoveOld.
Utilisation d'un script
Les personnes disposant d'un accès au shell de leur serveur peuvent utiliser un script pour supprimer automatiquement tous les anciens fichiers.
Shell Linux
Cette ligne simple devrait fonctionner sur n'importe quel système Linux
grep -Ev '^($|#)' data/deleted.files | xargs -n 1 rm -vf
shell *nix
Certains systèmes peuvent ne pas prendre en charge l'option “rm -d” pour la suppression du répertoire. Dans ce cas, vous devez utiliser la suppression récursive (assurez-vous de vérifier que la liste des fichiers n'inclut pas de chemin qui va trop en supprimer):
grep -Ev '^($|#)' data/deleted.files | xargs -n 1 rm -fr
Script Python
Voici un script Python qui va également afficher les fichiers supprimés
import os for line in open("./data/deleted.files"): if line.isspace() or line[0] == '#': continue line = line.rstrip(os.linesep) try: if os.path.exists(line): print('Fichier supprimer => ' + line) os.remove(line) except OSError: pass
Script Ruby
Voici un script Ruby faisant la même chose
files = File.read("./data/deleted.files").split("\n").grep(/^[^$#]/) files.each do |file| puts "Suppression de #{file}." File.delete(file) rescue puts $! end
PHP Script
La même chose pour PHP :
<?php /* Fonction de sécurité, commentez ceci pour "activer" le script. */ exit('Check source'); $path = getcwd(); if(file_exists($path . '/data/deleted.files')) { $file = fopen($path . '/data/deleted.files', 'r'); while(false !== ($line = fgets($file))) { $line = trim($line); if(!empty($line) && !preg_match('/^\#/', $line) && file_exists($path . '/' . $line)) { unlink($path . '/' . $line); echo '/' . $line . ' - supprimé<br/>'; } } echo 'Fini!'; }
Script Powershell
Voici un script powershell d'une ligne faisant la même chose.
Get-Content .\data\deleted.files | Where-Object {$_ -notmatch '^($|#)' -and (Test-Path $_ )} | Foreach-Object {Remove-Item -path $_ -Force -Recurse}
CMD Script
Voici le script CMD pour Windows faisant la même chose, même si vous devez d'abord inverser toutes les barres obliques dans deleted.files
pour que les noms de fichiers soient acceptés.
for /F %i in ('findstr /R /V /C:"^#" /C:"^$" data\deleted.files') do del "%i"