zh:tips:maintenance
维护
自动清理脚本-For Unix/Linux
我们建议你为不停工作的 Dokuwiki 建立一个清理进程。下面这个脚步就是一个例子。它删除所有超过30天的修改记录,并删除陈旧的锁文件和空目录。
#!/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 {} \;
要让它自动运行,需建立一个例行性工作排程。下面这个例子会在每天 0:05 时刻运行该脚本。
5 0 * * * /full/path/to/cleanup.sh
确保一切都不要出错,你也不想删错文件对吧?
多个安装实例的清理脚本
下面这个脚本更适用于安装了多个 DokuWiki 的情况。同时展示了 find 的 -print0
选项和 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系统下有一清理旧文件的脚本 waRmZip,脚本可以从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 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
定期清理沙盘
为了使 wiki 的沙盘和其他的页面保持清洁,可以使用一个30分钟循环地例行工作排程,将沙盘和其他页面还原到它们的原始内容。
例子:每30分钟还原 Playground 一次:
0,30 * * * * cp -rpf /path/to/savedwiki/data/playground/playground.txt /path/to/dokuwiki/data/pages/playground/
例子:每30分钟还原 “wiki” 命名空间的所有页面:
0,30 * * * * cp -rpf /path/to/savedwiki/data/pages/wiki/ /path/to/dokuwiki/data/pages/wiki/
zh/tips/maintenance.txt · 最后更改: 由 123.117.81.97