====== 维护 ====== 这里有一些提示,是有关于自动化 DokuWiki 一些日常的必要维护。 不断更新黑名单 参见[[:blacklist|黑名单]]关于如何保持反垃圾邮件黑名单,并建立一个例行性 ---- 工作排程。 ===== 自动清理脚本-For Unix/Linux ===== 我们建议你为不停工作的 Dokuwiki 建立一个清理进程。下面这个脚步就是一个例子。它删除所有超过30天的[[:attic|修改]]记录,并删除陈旧的锁文件和空目录。 #!/bin/sh # 这里设置你的 DokuWiki 的安装路径 DOKUWIKI=/path/to/your/wiki # 清理超过30天的修改记录 find $DOKUWIKI/data/attic/ -type f -mtime +30 -exec rm -f {} \; # 删除无效的锁文件 find $DOKUWIKI/data/pages/ -name '*.lock' -type f -mtime +1 -exec rm -f {} \; # 删除空目录 find $DOKUWIKI/data/pages/ -depth -type d -empty -exec rmdir {} \; 要让它自动运行,需建立一个[[man>crontab(5|例行性工作排程]]。下面这个例子会在每天 0:05 时刻运行该脚本。 5 0 * * * /full/path/to/cleanup.sh 确保一切都不要出错,你也不想删错文件对吧? ==== 多个安装实例的清理脚本 ==== 下面这个脚本更适用于安装了多个 DokuWiki 的情况。同时展示了 [[man>find]] 的 ''-print0'' 选项和 [[man>xargs]] 的使用方法。 #!/bin/sh cleanup() { # $1 ... wiki 的 data 目录的完整路径 # $2 ... 天数 # 清理 $2 天之前的旧修改记录 find "$1"/attic/ -type f -mtime +$2 -print0 | xargs -0r rm -f # 清除无效的锁文件(2天之前的旧文件) find "$1"/pages/ -name '*.lock' -type f -mtime +2 -print0 | xargs -0r rm -f # 删除空目录 find "$1"/pages/ -depth -type d -empty -print0 | xargs -0r rmdir } # cleanup [data目录的路径] [天数] # 一些例子: cleanup /home/user1/htdocs/doku/data 256 cleanup /home/user2/htdocs/mywiki/data 180 cleanup /var/www/superwiki/data 180 ==== Windows 清理- 使用warmzip ==== Windows系统下有一清理旧文件的脚本 [[http://winadmin.forret.com/|waRmZip]],脚本可以从[[http://sourceforge.net/project/showfiles.php?group_id=88417|here on SourceForge]]获得。编写一个批处理文件调用它,然后添加为每天计划任务。但是谨记,保证以上所做的一切都要准确。;-) 根据上述建议,我依照"waRmZip",写了如下脚本(请根据实际情况下载waRmZip并改写waRmZip.wsf以及wikiHome的路径,另存为clean.bat后运行) 最新版本的DokuWiki 将锁定文件存在''/data/locks''目录,上面的shell脚本中没有处理,该batch脚本中已经加入 cron 也许能建立更好的维护脚本,以后有时间我会加入 My favorite way to run cron jobs on Windows is [[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 ===== 定期清理沙盘 ===== [[http://www.mbt-usa.com|MBT Shoes]] [[http://www.mbt-usa.com|MBT]] 为了使 wiki 的沙盘和其他的页面保持清洁,可以使用一个30分钟循环地例行工作排程,将沙盘和其他页面还原到它们的原始内容。 例子:每30分钟还原 [[playground:Playground]] 一次: 0,30 * * * * cp -rpf /path/to/savedwiki/data/playground/playground.txt /path/to/dokuwiki/data/pages/playground/ 例子:每30分钟还原 "wiki" [[:namespaces|命名空间]]的所有页面: 0,30 * * * * cp -rpf /path/to/savedwiki/data/pages/wiki/ /path/to/dokuwiki/data/pages/wiki/