BackupTool for DokuWiki

backup plugin by Terence J. Grant
Backup your site and configuration data to a file.

Last updated on 2009-03-16. Provides Admin.
Compatible with DokuWiki 2008-05-05.

Similar to zip.

Tagged with archive, backup, maintenance.

    License

    It's not required, but please consider linking to this page or the main page from your site if you like this product.

    Disclaimer

    As with any data backup tool, there is always a possibility for data loss– especially unintentionally.

    Neither I nor this site will be held responsible for any data loss caused by this product.

    So download and use at your own risk!

    Download

    Before downloading or using this product, make sure you understand and accept the terms of the license.

    After downloading, make sure to follow the install instructions or upgrading instructions below; trust me, they're worth reading.

    • Older downloads are available on request only.

    Note: http://cloud.github.com/downloads/tatewake/dokuwiki-plugin-backup/backuptool-stable.tar.gz always points to the latest stable version!

    Installation

    Use the plugin manager to install, or…

    1. download the tarball/zip-file
    2. unpack it into <dokuwiki>/lib/plugins/
    3. login as admin and change the plugin in the configuration manager

    using git:

    % cd <dokuwiki>/lib/plugins/
    % git clone git://github.com/tatewake/dokuwiki-plugin-backup.git backup
    

    Debian install (or probably any other distribution):

    # cd /usr/share/dokuwiki/lib/plugins/
    # wget http://cloud.github.com/downloads/tatewake/dokuwiki-plugin-backup/backup-stable.tar.gz
    # tar -xvzf backup-stable.tar.gz
    # chown -Rv 33 backup/
    

    Note: http://cloud.github.com/downloads/tatewake/dokuwiki-plugin-backup/backup-stable.tar.gz always points to the latest stable version

    About

    This is a plugin for DokuWiki which enables you to backup the most important parts of your site; this includes all of your pages, all old revisions, meta data, subscriptions, media files (your downloads), as well as your plugins and templates.

    This is in case, for some odd reason, your host accidentally loses all your files; it's happened to me personally twice, on two different hosts since I began using DokuWiki– and backing up manually can be quite a nightmare.

    Standard Features

    To access the plugin, make sure you're on the admin account, and click the admin button on your wiki site.

    An entry named “Backup Tool” should be listed in the the available administrative tasks. Click it, and you should see something like the following image below: backup_form.jpg

    Simply check the items you wish to backup, and uncheck the ones you don't. For instance, you may not care about old revisions of documents, so you don't have to include them if you don't want to.

    Click the Create Backup button, and the process of backing up starts. For large sites, it may take some time; it may even time out– in which case you may wish to backup each section individually– though this is unlikely. It will usually take at least a little time for the page to respond, so please be patient.

    The backup file is generated and put in the root of your media directory. So you're then able to download it from there, and you may wish to delete it afterwards.

    Install

    As a plugin all you need to do is unpack the file into the lib/plugins/ directory (you should end up with a lib/plugins/backup folder.)

    Upgrading

    To upgrade, remove the original lib/plugins/backup folder, and install the new version as instructed above.

    What's New

    March 16, 2009

    August 24, 2008

    • New backup method: “Lazy and Quick” method. This method runs in O(1) constant time rather than the other two methods that run in O(n) linear time. This method should be used for folks with big sites to back up, but is only available if the GNU Tar method is supported.
    • For folks with installs on Macintosh based servers, files named ”.DS_Store” and files beginning with ”._” will be excluded from PEAR and GNU Tar methods now.
    • Some minor tweaks to the language files.

    August 2, 2008

    Major update!

    Here's what's new:

    • I've made an effort for all run-time errors to be handled.
    • I've replaced shell_exec with just exec, since this is more appropriate for the command line version.
    • PEAR is now supported as an alternate to exec, thanks to Andreas Wagner for this.
    • The list of files to backup is much improved, again thanks to Andreas Wagner.
    • Backups will not archive existing backups, again thanks to Andreas Wagner.
    • I've added auto-detection of PEAR and/or exec availability, since not all users will have access to these.
    • You can choose between PEAR and exec if you have the option of both.
    • All files entries for the exec version are relative instead of absolute now for exec, thanks to Uwe Koloska for this.
    • Both backup methods generate the same file structure now as well.
    • Backup file names have changed slightly, files now start with “dw-backup-”.
    • Backup options selected are now saved as defaults for future sessions.
    • Compression options are chosen based on what's available, in the order of bzip2, gzip, and no compression for both PEAR and exec.
    • Backup files are created directly into the media directory, so no moving is necessary.

    July 10, 2008

    I've finally gotten time to check the new ACL compatibility.

    As it turns out, I was mistaken– ACL file names and structure have not changed, simply the interface to modify ACL has, and this does not affect backuptool for DokuWiki at all.

    Therefore backuptool for DokuWiki will work regardless of the DokuWiki's version.

    So in other words, the April 7, 2007 version will work, and is safe to use.

    April 5, 2007

    • Backup files are now timestamped with date and time, thanks to Syv Ritch for the push.

    March 11, 2007

    • Added conf/mime.conf to list of things backed up under “configuration settings”

    October 12, 2006

    • New BackupTool release, fixes compatibility with new DokuWiki versions.

    August 3, 2006

    • Internationalization support complete

    July 29, 2006

    • Initial release

    Discussion

    Note to users: Tarlib doesn't work!

    Hi everyone, let me state for the record that “tarlib”, which is part of DokuWiki's core, currently does not generate working tar files in all situations.

    I've discussed this on the DokuWiki mailing list several times, and have filed (if I recall) at least two bug reports about it.

    • The latest bug report I've filed (yet to be resolved) is here.
    • The latest mailing list discussion for this is here.

    Tarlib version (non-working)

    Here is a version that attempts to use tarlib (part of DW) to write the archive directly into the media folder. The tar file it creates for some reason seems to be corrupt (or at least it won't verify in my local archive manager, 7-zip.) I suspect it's either:

    • Checksum generated is incorrect
    • Format is otherwise incorrect
    • Possibly DokuWiki's version of tarlib is out of date?

    I'm not horribly sure but I can't guarantee I'll be able to fix it in a timely manner, so if someone would like to investigate, I'd appreciate it.

    Download backuptool-tarlib-nonworking.zip

    Terence J. Grant 09/17/2006 00:04

    More problems with tarlib

    I've done some testing since last night…

    • tar files appear to be okay as long as you don't add directories
    • gnu tar doesn't appear to be able to verify the corrupted tar files
    • files with more than 100 characters in their path don't get added (uh-oh)

    Terence J. Grant 09/17/2006 12:29

    Andreas Wagner's tarlib version

    A little better, but still has the same problems:

    Andreas Wagner's Version

    You'll need to make a “tmp” directory in your data directory and chmod it 777 to test it.

    Terence J. Grant 07/10/2008 03:34

    Initial release jitters

    Hi all, I've gone ahead and put a list of all the known issues below; each of which is solvable, but currently still outstanding. Feel free to help me complete these early– it'll result in a faster release and more time spent on other projects. — Terence J. Grant 07/29/2006 05:44

    More files to backup?

    If you're aware of any important files I'm missing in the backup process, please list it below as file paths, thanks. — Terence J. Grant 07/29/2006 05:28

    • conf/mime.conf

    Hello, I would appreciate if your tool could also backup conf/mime.conf. Some plugins like freemind need to have changes in mime.conf.

    Thank you.

    deKesi

    Displaying page as multi-part

    Anyone have an idea on how to display the page as each individual section completes? I believe I'm doing everything right in this regard, but obviously the sever still wishes to wait until the page is completely loaded. So any help on this would be appreciated. — Terence J. Grant 07/29/2006 05:28

    Tar and GZip/BZip commands

    For the archiving commands ('tar') things might be a little more complex. The plugin manager includes two PHP classes, tarlib and zip.lib, I only use them for extraction in the plugin manager but a quick look makes me think they can handle archive creation and compression.

    Ok, I'll look into this as well. — Terence J. Grant 08/20/2006 20:42

    The harder stuff

    My other ideas are:
    * option to send the backup as part of its creation, i.e., the web browser will pop up its download window there and then and the admin can save the backup immediately.
    Yeah, I agree… I believe this should be doable via a document.location.href JavaScript… or it could be delivered directly via the right combination of multipart-mixed headers, but frankly I don't know how to do the latter.— Terence J. Grant 08/20/2006 20:42

    Its quite straight forward. The easiest way is to simply do a server side redirect to the backup file once its been created. Its also possible to send the data inline as an attachment. Both methods are described under header(). — Chris Smith 2006/08/21 19:44

    * if a current backup exists, add option to only download that backup. For this, it might be necessary to be able to determine what file types are included in the backup.
    Hmmm, I think keeping the current backup around (or accessible to anyone but superuser) would be a security risk… password hashes, pages with permissions, etc could all be compromised. — Terence J. Grant 08/20/2006 21:08

    I wasn't thinking of it being generally available. Perhaps the installer could create a protected “backup” namespace in the media tree. Or perhaps it is a bad idea. — Chris Smith 2006/08/21 19:44

    I'm prepared to help out with these changes if you don't mind.
    Anything you'd like to do, feel free. I'll try to improve some things when I get a chance as well. — Terence J. Grant 08/20/2006 20:42
    In reply to some of your other points above:
    * `date "+%W"` included in the file name will add a week number. Do man date to see the other format codes. e.g.
    'tar -rf backup-`date "+%W"`.tar '.$conf['olddir']

    You will probably need to escape the backticks or change the quote marks from double to single to ensure PHP passes them to the shell

    I was thinking of using the PHP date function originally, since myself I do backups fairly irregularly. (Sometimes I'll do twice in a day if i've had some significant changes.) The only concern I had was regarding replacing slashes in the date with dashes or something — Terence J. Grant 08/20/2006 20:42

    date will work too. Try something like,

    "backup-".date("Ymd-Hi").".tar"

    Chris Smith 2006/08/21 19:44

    * take a look at Andi's searchindex plugin. It uses continuous page updating to show its progress.

    Okay, I'll take a look at that. — Terence J. Grant 08/20/2006 20:42

    The plugin manager stores information about any plugin it installs, including the source URL. Update, simply attempts to retrieve and reinstall the plugin again from the same URL. At this time there is no intelligence behind it, i.e., it doesn't know if the plugin has been updated or even if the URL is still live. — Chris Smith 2006/08/21 19:44

    Cheers — Chris Smith 2006/08/20 23:57

    Thanks

    Thank you for your backup tool! Any plans to make automatically make daily/weekly backups or the option to send the backup to a certain mail address?

    I personally don't have any plans myself for this– feel free to add options and send them to me (see svn for some tips.) Automated backups could be done with what's called a cron job, but most people don't have access to this.

    As for mailing; I wouldn't know how to begin, though I suspect this might be easier. Again, contributions (within reason) are welcome.

    Terence J. Grant 08/22/2007 17:08

    No such file

    I have downloaded this plugin and all went okay, but when I process the backup I should find a back-up file in the root (“The backup file is generated and put in the root of your media directory”).
    But there is no such file. What can be wrong? —FJH Langendam 08/20/2008

    The file should be created in the “root of your media directory,” so this does not mean your “file system root,” this means the top level media directory.

    In other words, it should be creating a file in your “data/media” directory. Is this not happening? — Terence J. Grant 08/20/2008 23:08

    Another Question

    Dear Terence,
    I've tried it again and although DokuWiki shows the name of the bu-file (DokuWiki-backup-20080821-220132.tar.bz2) it's not in the dir (httpdocs/doku/data/media). — FJH Langendam 08/21/2008

    Hi FJH,

    There's a link generated on the BackupTool page, I'd suggest using that to get the file.

    I'd also suggest using the media manager to delete the file.

    Hope that helps,

    Terence J. Grant 12/20/2008 17:03

    compression type configurable

    Hi Terence and thanks for your updates of this plugin.

    I've just launched a new wiki at some site the PHP of which announces availability of bz2 but fails on generating anything bz2-y (also old revisions cannot be generated with bz2, e.g.), so I had to hack the code to force gzip compression. Would you consider adding the compression-type to the configurable options? (So I don't have to hack again when there's an update of the plugin.) — Andreas Wagner 11/25/2008

    Hi Andreas, yes, I'll add the option as time permits. — Terence J. Grant 12/20/2008 16:56

    Question about Tool

    - Can this tool be used to migrate data from one instance of DokuWiki to another instance running on some other host?

    - Does this tool work for Windows?
    - (also side note: anyone know why my H2 is not being properly rendered by DokuWiki? Is the a maximum size to a page? Is there some syntax error somewhere above me?)

    Peter Thung 12/16/2008

    Hi Peter,

    1. Yes, it should be able to. There is some manual configuration that will need to be done to restore, but it's very minimal.
    2. It will work on Windows if you do one of two things– you'll have to decide which is easier to configure, though):
      • Install tar and gzip (or tar, gzip, and bz2) via Cygwin for Windows and make it available to the server. (Or use a similar method to make tar, gzip2
      • Install Pear for your PHP installation.
    3. Usually these are syntax errors (mismatched ”=====” or ”**” signs for instance), but these are questions you should ask on the DokuWiki forum.

    Best of luck,

    Terence J. Grant 12/20/2008 16:56

    1. First thanks your the response.
    2. When you say there are some manual configuration that will need to be done to restore, but it's very minimal, may I ask what they are, or how or where I could find them? I was able to install the backup tool and run it. I apparently already had Cygwin installed and the tool seems to work as I saw the archive created. I looked into it and saw that it appears to just backup a few directories. Would the general procedure be to shutdown Apache, delete the physical directories then manually untar/unzip the archive to replace the directories you deleted?
    3. In regards to installing targ and gzip for windows and making it available to the server, if I do have Cygwin installed on my windows box, is it just a matter of making those executables included on the windows Path environment variable, or is there another way? I guess the Windows path thing was enough.

    Peter Thung 01/22/2009

    What is the procedure to restore from the backup archive?

    I think I may have answered it above. — Peter Thung 01/22/2009

    Respect datadir for saving

    Hi, in admin.php line 225, where the file gets saved, the plugin does not respect the setting of savedir to find the media directory. I changed the path to: “$conf['savedir'].'/media/'” and now it works. I suppose this is the intended behaviour. If not, trying to save in the wrong place can give permission problems as well as saving in the wrong place.

    thanks for this plugin… greets, naja

    Download is broken?

    I get an “Access Denied” message in an XML file when requesting http://cloud.github.com/downloads/tatewake/dokuwiki-plugin-backup/backup-stable.tar.gz. :( — Marcus Gnaß 10/20/2009

    Download still broken

    Same here, the link is not working. All the best, heinz

    Download filename changed?

    I also had problems finding it. Note name difference above good link: from backup backuptool

    _xxxx___cloud.github.com/downloads/tatewake/dokuwiki-plugin-backup/backup-stable.tar.gz
    http://cloud.github.com/downloads/tatewake/dokuwiki-plugin-backup/backuptool-stable.tar.gz

    Thanks for the plug-in, 8-) =)

    Dave B

    Still problems finding backup file...

    I get no errors or warnings until I try to click on the link where it says file not found. I also do not find it using FTP…(hosted on byethost.com)

    Mikael 11/09/2009

     
    plugin/backup.txt · Last modified: 2010/02/16 20:41 by 74.93.99.97
     
    Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
    Imprint Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
    WikiForumIRCBugsGitXRefTranslate