====== Konserwacja ======
Oto kilka porad, jak zautomatyzować niektóre codzienną obsługę wymaganą lub zalecaną przez DokuWiki.
===== Utrzymuj czarne listy w aktualności =====
Patrz [[blacklist|czarna lista]] jak ustawić zadanie cron by aktualizować na bieżąco filtry antyspamowe.
===== Skrypt automatycznego czyszczenia =====
Zaleca się ustawienie pewnych procesów czyszczenia ruchliwych DokuWikis. Następujący skrypt powłoki [[wp>Bash (powłoka Unix)]] posłuży za przykład. Usuwa on poprzednie wersje [[attic|z archiwum]], usuwa złamane pliki blokad i puste foldery, oraz czyści [[caching|pamięć podręczną]]((Przejrzyj również [[http://forum.dokuwiki.org/post/22265|dyskusję na forum]] dotyczącą konserwacji pamięci podręcznej.)).
#!/bin/bash
cleanup() {
# $1 ... full path to data directory of wiki
# $2 ... number of days after which old files are to be removed
# purge files older than $2 days from the attic (old revisions)
find "$1"/attic/ -type f -mtime +$2 -print0 | xargs -0r rm -f
# remove stale lock files (files which are 1-2 days old)
find "$1"/locks/ -name '*.lock' -type f -mtime +1 -print0 | xargs -0r rm -f
# remove empty directories
find "$1"/{attic,cache,index,locks,media,meta,pages,tmp}/ \
-mindepth 1 -type d -empty -print0 | xargs -0r rmdir
# remove files older than $2 days from the cache
find "$1"/cache/?/ -type f -mtime +$2 -print0 | xargs -0r rm -f
}
# cleanup DokuWiki installations (path to datadir, number of days)
# some examples:
cleanup /home/user1/htdocs/doku/data 256
cleanup /home/user2/htdocs/mywiki/data 180
cleanup /var/www/superwiki/data 180
Aby uruchomić go automatycznie, ustaw [[man>crontab(5)|zadanie cron]]. Następujący przykład wywołuje skrypt każdego dnia 7 minut po północy. Aby uruchomić jako użytkownik inny niż root, usuń ''root''.
7 0 * * * root /full/path/to/cleanup.sh
Upewnij się, że wszystko zostało poprawnie ustawione - nie chciałbyś chyba usunąć nie tych rzeczy?
==== Windows -- warmzip ====
Skrypt czyszczący poprzednie wersje plikóww systemach Windows to [[http://winadmin.forret.com/|waRmZip]], dostępny ze [[http://sourceforge.net/project/showfiles.php?group_id=88417|strony SourceForge]]. Napisz plik wsadowy by go wywołać i zaplanuj codzienne zadanie w harmonogramie. I jak to się mówi: 'Trzeba pamiętać o ustawieniu wszystkiego poprawnie' ;-)
Skorzystałem z powyższej sugestii odnośnie ''waRmZip'' i napisałem plik wsadowy - może on pomoże.
Moim ulubionym sposobem uruchamiania zadań w Windows jest [[http://www.kalab.com/freeware/pycron/pycron.htm|PyCron]].
@echo off
set waRmZip="c:\Program Files\waRmZip\waRmZip.wsf"
set wikiHome="c:\path\to\htdocs\wiki\data"
rem Move attic files older than 30 days to an archive location
%waRmZip% %wikiHome%\attic /ma:30 /md:%wikiHome%_archive\attic /r /q
rem Option: delete attic files older than 30 days
rem %waRmZip% %wikiHome%\attic /da:30 /dc /r /q
rem Delete empty attic directories; waRmZip requires the /da flag when using
rem /df, so add filter for *.zzz so /da doesn't remove any files
%waRmZip% %wikiHome%\attic /r /da:31 /df /fo:*.zzz /q
rem Remove stale lock files
%waRmZip% %wikiHome%\locks /da:1 /fo:*.lock /r /q
rem Remove empty directories
%waRmZip% %wikiHome%\pages /da:365 /df /fo:*.zzz /r /q
===== Utrzymywanie piaskownicy w czystości =====
By utrzymywać [[playground:piaskownicę]] i inne strony w czystości, użyj zadania cron na przykład co 30 minut, które odtwarza oryginalną zawartość piaskownicy i innych stron.
Przykład: Przywróć zawartość piaskownicy co 30 min:
0,30 * * * * cp -pf /path/to/savedwiki/data/pages/playground/playground.txt /path/to/dokuwiki/data/pages/playground/
Przykład: Przywróć wszystkie strony w [[:namespace|przestrzeni nazw]] "wiki" co 30 min:
0,30 * * * * cp -rpf /path/to/savedwiki/data/pages/wiki/ /path/to/dokuwiki/data/pages/wiki/
===== Gdy cron jest niedostępny =====
Jeśli hosting nie udostępnia możliwości ustalenia harmonogramu zadań, rozważ użycie wtyczki [[plugin:cronojob|cronojob]].
===== Discussion =====
Could you please provide PHP versions of these scripts to use with the cronojob plugin?
----
> Regarding the above cleanup script which uses file modification time (mtime), wouldn't it be safer to use the timestamp in the filename to determine if a file in the attic should be deleted or not?
On the one hand, I'd say it could be done but it's of course trickier to set up. For many installations it will be fine to use mtime. On the other hand, some might want to make sure they clean up old files no matter what (e.g. files left after a crash or critical PHP error).
----
Could someone add the appropriate line for [[http://forum.dokuwiki.org/post/22265|cache maintenance]] to the Windows waRmZip script?