Akeeba Backup Guide
Akeeba Backup Guide
Akeeba Backup Guide
Nicholas K. Dionysopoulos
Table of Contents
I. User's Guide to Akeeba Backup for Joomla! ..................................................................................... 1 1. Introduction ........................................................................................................................... 4 1. Introducing Akeeba Backup .............................................................................................. 4 2. Indicative uses ................................................................................................................ 4 3. A typical backup/restoration workflow ................................................................................ 5 4. Server environment requirements ....................................................................................... 6 2. Installation, updates and upgrades .............................................................................................. 8 1. Installing Akeeba Backup ................................................................................................. 8 1.1. Getting the installation packages ............................................................................. 8 1.2. Installing the backup component and language files .................................................... 8 1.2.1. Manual installation ..................................................................................... 9 1.2.2. The installation / update broke my site! .......................................................... 9 1.3. Installing the administrator panel icon module and plugins ........................................... 9 2. Upgrading from Core to Professional ................................................................................ 10 3. Updating to the latest version .......................................................................................... 10 3. Using the Akeeba Backup component ....................................................................................... 11 1. Pages outside the Control Panel panes .............................................................................. 11 1.1. Common navigation elements ............................................................................... 11 1.2. The Control Panel ............................................................................................... 11 1.2.1. Editing the component's Parameters ............................................................. 14 2. Basic Operations ........................................................................................................... 16 2.1. Profiles Management ........................................................................................... 16 2.2. Configuration Wizard .......................................................................................... 17 2.3. Configuration ..................................................................................................... 18 2.3.1. The main settings ..................................................................................... 19 2.3.1.1. Basic Configuration ........................................................................ 19 2.3.1.2. Advanced configuration .................................................................. 23 2.3.1.3. Optional filters .............................................................................. 23 2.3.1.4. Quota management ......................................................................... 24 2.3.1.5. Fine tuning ................................................................................... 25 2.3.2. Database dump engines ............................................................................. 26 2.3.2.1. Native MySQL Backup Engine ........................................................ 26 2.3.3. File and directories scanner engines ............................................................. 28 2.3.3.1. Smart scanner ............................................................................... 28 2.3.4. Archiver engines ...................................................................................... 29 2.3.4.1. ZIP format .................................................................................... 29 2.3.4.2. JPA format ................................................................................... 30 2.3.4.3. Encrypted Archives (JPS format) ...................................................... 30 2.3.4.4. DirectFTP ..................................................................................... 32 2.3.4.5. DirectSFTP ................................................................................... 33 2.3.4.6. ZIP using ZIPArchive class ............................................................. 34 2.3.5. Data processing engines ............................................................................ 34 2.3.5.1. No post-processing ......................................................................... 34 2.3.5.2. Send by email ............................................................................... 35 2.3.5.3. Upload to Amazon S3 .................................................................... 35 2.3.5.4. Upload to Dropbox ........................................................................ 37 2.3.5.5. Upload to RackSpace CloudFiles ...................................................... 38 2.3.5.6. Upload to Microsoft Windows Azure BLOB Storage service .................. 39 2.3.5.7. Upload to Remote FTP server .......................................................... 41 2.3.5.8. Upload to Box.net .......................................................................... 42 2.4. Backup now ....................................................................................................... 43
iii
2.5. Administer Backup Files ...................................................................................... 45 2.5.1. Integrated restoration ................................................................................ 48 2.5.2. Manage remotely stored files ...................................................................... 51 2.5.3. Discover and import archives ..................................................................... 52 2.6. View Log .......................................................................................................... 53 2.7. Access Control ................................................................................................... 55 2.7.1. Joomla! 1.5 and other Joomla! 1.5 distributions .............................................. 55 2.7.2. Joomla! 1.6, 1.7, 2.x and other Joomla! 1.6/1.7/2.x distributions ........................ 56 2.8. Site Transfer Wizard ........................................................................................... 56 3. Include data to the backup .............................................................................................. 59 3.1. Multiple Databases Definitions .............................................................................. 59 3.2. Off-site Directories Inclusion ................................................................................ 62 4. Exclude data from the backup ......................................................................................... 63 4.1. Files and Directories Exclusion ............................................................................. 64 4.2. Database Tables Exclusion ................................................................................... 66 4.3. Extension Filters ................................................................................................. 68 4.3.1. Components ............................................................................................ 68 4.3.2. Modules ................................................................................................. 69 4.3.3. Plug-ins .................................................................................................. 70 4.3.4. Languages ............................................................................................... 71 4.3.5. Templates ............................................................................................... 71 4.4. RegEx Files and Directories Exclusion ................................................................... 72 4.4.1. Regular Expressions recipes for files and directories ....................................... 74 4.5. RegEx Database Tables Exclusion ......................................................................... 74 4.5.1. Regular Expressions recipes for database tables .............................................. 76 5. Automating your backup ................................................................................................ 77 5.1. Front-end backup, for use with CRON .................................................................... 77 5.2. Native CRON script ............................................................................................ 81 5.3. Alternative CRON script ...................................................................................... 84 5.4. The Lazy Scheduling plugin ................................................................................. 86 6. Miscellaneous features ................................................................................................... 89 6.1. Lite mode for cell phones, PDAs, MIDs, etc. ........................................................... 89 6.2. System Restore Points ......................................................................................... 90 4. Miscellaneous Extensions (Modules, Plugins) ............................................................................. 93 1. Akeeba Backup Notification Module ................................................................................ 93 2. The plugins powering the One Click Update feature ............................................................ 93 5. Restoring backups ................................................................................................................. 95 1. Restoration and troubleshooting instructions ....................................................................... 95 2. Unorthodox: the emergency restoration procedure ............................................................... 95 6. Step by step guides ............................................................................................................... 99 1. Backing up your site to a cloud storage service ................................................................... 99 1.1. Introduction ....................................................................................................... 99 1.2. Basic configuration ............................................................................................. 99 1.3. Using Amazon S3 ............................................................................................. 100 1.3.1. Making your backups accessible by other Amazon S3 accounts ....................... 102 1.4. Using Dropbox ................................................................................................. 104 1.5. Where to go from here? ..................................................................................... 105 II. Security information .................................................................................................................... 107 7. Introduction ........................................................................................................................ 109 1. Foreword ................................................................................................................... 109 2. Why you need to care about ownership and permissions? .................................................... 109 8. How your web server works .................................................................................................. 110 1. Users and groups ......................................................................................................... 110 1.1. Users .............................................................................................................. 110
iv
1.2. Groups ............................................................................................................ 1.3. How users and groups are understood by UNIX-derived systems ................................ 2. Ownership .................................................................................................................. 2.1. Process ownership ............................................................................................. 2.2. File ownership .................................................................................................. 3. Permissions ................................................................................................................ 3.1. The three types of permissions ............................................................................ 3.2. What permissions can control .............................................................................. 3.3. Permissions notation .......................................................................................... 3.3.1. The textual notation ................................................................................ 3.3.2. The octal notation ................................................................................... 9. Securing your Akeeba Backup installation ............................................................................... 1. Access rights .............................................................................................................. 2. Securing the output directory ......................................................................................... 3. Securing file transfers ................................................................................................... III. Appendices ............................................................................................................................... A. The JPA archive format, v.1.2 ............................................................................................... B. The JPS archive format, v.1.9 ............................................................................................... C. GNU Free Documentation License .........................................................................................
110 111 111 111 112 113 113 113 114 114 114 116 116 116 117 118 120 124 128
Table of Contents
1. Introduction ................................................................................................................................... 4 1. Introducing Akeeba Backup ...................................................................................................... 4 2. Indicative uses ........................................................................................................................ 4 3. A typical backup/restoration workflow ........................................................................................ 5 4. Server environment requirements ............................................................................................... 6 2. Installation, updates and upgrades ...................................................................................................... 8 1. Installing Akeeba Backup ......................................................................................................... 8 1.1. Getting the installation packages ..................................................................................... 8 1.2. Installing the backup component and language files ............................................................ 8 1.2.1. Manual installation ............................................................................................. 9 1.2.2. The installation / update broke my site! .................................................................. 9 1.3. Installing the administrator panel icon module and plugins ................................................... 9 2. Upgrading from Core to Professional ........................................................................................ 10 3. Updating to the latest version .................................................................................................. 10 3. Using the Akeeba Backup component ............................................................................................... 11 1. Pages outside the Control Panel panes ...................................................................................... 11 1.1. Common navigation elements ....................................................................................... 11 1.2. The Control Panel ....................................................................................................... 11 1.2.1. Editing the component's Parameters ..................................................................... 14 2. Basic Operations ................................................................................................................... 16 2.1. Profiles Management ................................................................................................... 16 2.2. Configuration Wizard .................................................................................................. 17 2.3. Configuration ............................................................................................................. 18 2.3.1. The main settings ............................................................................................. 19 2.3.1.1. Basic Configuration ................................................................................ 19 2.3.1.2. Advanced configuration .......................................................................... 23 2.3.1.3. Optional filters ...................................................................................... 23 2.3.1.4. Quota management ................................................................................. 24 2.3.1.5. Fine tuning ........................................................................................... 25 2.3.2. Database dump engines ..................................................................................... 26 2.3.2.1. Native MySQL Backup Engine ................................................................ 26 2.3.3. File and directories scanner engines ..................................................................... 28 2.3.3.1. Smart scanner ....................................................................................... 28 2.3.4. Archiver engines .............................................................................................. 29 2.3.4.1. ZIP format ............................................................................................ 29 2.3.4.2. JPA format ........................................................................................... 30 2.3.4.3. Encrypted Archives (JPS format) .............................................................. 30 2.3.4.4. DirectFTP ............................................................................................. 32 2.3.4.5. DirectSFTP ........................................................................................... 33 2.3.4.6. ZIP using ZIPArchive class ..................................................................... 34 2.3.5. Data processing engines .................................................................................... 34 2.3.5.1. No post-processing ................................................................................. 34 2.3.5.2. Send by email ....................................................................................... 35 2.3.5.3. Upload to Amazon S3 ............................................................................ 35 2.3.5.4. Upload to Dropbox ................................................................................ 37 2.3.5.5. Upload to RackSpace CloudFiles .............................................................. 38 2.3.5.6. Upload to Microsoft Windows Azure BLOB Storage service .......................... 39 2.3.5.7. Upload to Remote FTP server .................................................................. 41 2.3.5.8. Upload to Box.net .................................................................................. 42 2.4. Backup now ............................................................................................................... 43 2.5. Administer Backup Files .............................................................................................. 45
User's Guide to Akeeba Backup for Joomla! 2.5.1. Integrated restoration ........................................................................................ 48 2.5.2. Manage remotely stored files .............................................................................. 51 2.5.3. Discover and import archives ............................................................................. 52 2.6. View Log .................................................................................................................. 53 2.7. Access Control ........................................................................................................... 55 2.7.1. Joomla! 1.5 and other Joomla! 1.5 distributions ..................................................... 55 2.7.2. Joomla! 1.6, 1.7, 2.x and other Joomla! 1.6/1.7/2.x distributions ................................ 56 2.8. Site Transfer Wizard ................................................................................................... 56 3. Include data to the backup ...................................................................................................... 59 3.1. Multiple Databases Definitions ...................................................................................... 59 3.2. Off-site Directories Inclusion ........................................................................................ 62 4. Exclude data from the backup ................................................................................................. 63 4.1. Files and Directories Exclusion ..................................................................................... 64 4.2. Database Tables Exclusion ........................................................................................... 66 4.3. Extension Filters ......................................................................................................... 68 4.3.1. Components .................................................................................................... 68 4.3.2. Modules ......................................................................................................... 69 4.3.3. Plug-ins .......................................................................................................... 70 4.3.4. Languages ....................................................................................................... 71 4.3.5. Templates ....................................................................................................... 71 4.4. RegEx Files and Directories Exclusion ........................................................................... 72 4.4.1. Regular Expressions recipes for files and directories ............................................... 74 4.5. RegEx Database Tables Exclusion ................................................................................. 74 4.5.1. Regular Expressions recipes for database tables ..................................................... 76 5. Automating your backup ........................................................................................................ 77 5.1. Front-end backup, for use with CRON ............................................................................ 77 5.2. Native CRON script .................................................................................................... 81 5.3. Alternative CRON script .............................................................................................. 84 5.4. The Lazy Scheduling plugin ......................................................................................... 86 6. Miscellaneous features ........................................................................................................... 89 6.1. Lite mode for cell phones, PDAs, MIDs, etc. ................................................................... 89 6.2. System Restore Points ................................................................................................. 90 4. Miscellaneous Extensions (Modules, Plugins) ..................................................................................... 93 1. Akeeba Backup Notification Module ........................................................................................ 93 2. The plugins powering the One Click Update feature .................................................................... 93 5. Restoring backups ......................................................................................................................... 95 1. Restoration and troubleshooting instructions ............................................................................... 95 2. Unorthodox: the emergency restoration procedure ....................................................................... 95 6. Step by step guides ....................................................................................................................... 99 1. Backing up your site to a cloud storage service .......................................................................... 99 1.1. Introduction ............................................................................................................... 99 1.2. Basic configuration ..................................................................................................... 99 1.3. Using Amazon S3 ..................................................................................................... 100 1.3.1. Making your backups accessible by other Amazon S3 accounts ............................... 102 1.4. Using Dropbox ......................................................................................................... 104 1.5. Where to go from here? ............................................................................................. 105
Chapter 1. Introduction
1. Introducing Akeeba Backup
Akeeba Backup is a complete site backup solution for your Joomla! powered website. As the successor to the acclaimed JoomlaPack component, Akeeba Backup builds on its strong legacy to deliver an easy to use, yet powerful, solution to backing up, restoring and moving your site between servers of the same or different architecture. Its mission is simple: backup your entire site - including all files and database contents - inside a standalone archive. You can then restore your entire site from the contents of this archive, without the need of installing Joomla! prior to the restoration. You can do so in a single click manner, without the tedious work required to set up and test external utilities, without changing your server configuration and without having to dive into obscure configuration options. If you want absolute power and flexibility, Akeeba Backup is right for you, too! It puts you in charge of fine-tuning your backup, choosing which directories, files or database tables to exclude. It can even allow you to backup nonJoomla! content, as long as you specify which off-site directories and databases you want to add. Akeeba Backup has won the J.O.S.C.A.R. award in the Administrator Only Extension at J and Beyond 2010, in the Admin Extension category at J and Beyond 2011 and Component category in J and Beyond 2011. The award was the result of a peer voting process, where the high-end Joomla! developers and web designers participating in the J and Beyond conferences picked the top extensions for Joomla!. Akeeba Backup's lead developer shared the 2011 J.O.S.C.A.R. in the Code Junkie category with NinjaBoard's lead developer, Stian Didriksen.
2. Indicative uses
Akeeba Backup can be used for much more than just backup. Some indicative uses are: Security backups. Taking a snapshot of your site should your server fail, or a hacker exploit some security hole to deface or compromise your site. Template sites. Web professionals have used Akeeba Backup in order to create "template sites". This means that you can build a site on a local server, install every component you usually do on most clients' sites and back it up. You now have a canned site that can serve as a great template for future clients. Using the same method you can have a snapshot of all the sites you have built for your clients, without the need to have them installed on your local server. Build a site off-line, upload the finished site easily. Web professionals can build a complete site off-line on a local server and when done take a snapshot with Akeeba Backup, then restore it on the production site. Testing upgrades locally, without risking breaking the on-line site. Joomla! updates have the potential of breaking things, especially in complex or badly written components and modules. Web masters use Akeeba Backup to get a site snapshot, restore it on a local test server, perform the upgrade there and test for any problems without the live site being at risk. Debugging locally. Almost the same as above, web professionals have used Akeeba Backup to take a snapshot of a client's Joomla! site in order to perform bug hunting. Using Akeeba Backup again, they can upload the fixed site back on the live server. Relocating a site to a new host. Web masters who want to take their site to a new host have found Akeeba Backup to be their saviour. Just backup the original site and restore on the new host; presto, your site is relocated with virtually no effort at all. Akeeba Backup has the potential to save you hours of hard labor, according to our users. It is licensed under the GNU General Public License version 3 or, at your option, any later version of the license. As a result, you are free to modify it to your liking and install it on as many sites as you like without having to pay for a pricey "developer's license".
Introduction
Akeeba Backup comes in two editions, Core and Professional. Akeeba Backup Core is provided free of charge and contains all the features a typical webmaster would like to have in order to easily complete backup and restoration jobs. On top of that, we offer you unconditional support, directly from members of our team, through our forum (as long as you have a valid subscription - support-only subscriptions start at 7.79 EUR). Even if this is not enough for you, we even give away our full documentation and the comprehensive troubleshooter guide without charging a single penny! If you find something missing, or spotted a bug, don't be afraid to contact us. We have an ongoing Bug Bounty: if you're the first to help us solve a substantial bug, you'll get a free subscription. Akeeba Backup Professional is designed to take your experience to a whole new level. Featuring advanced options, like embedded restoration, inclusion of external directories and databases, powerful filters based on regular expressions, easy exclusion of Joomla! extensions and support for putting your backups on compatible cloud storage services (such as Amazon's S3), it is designed to give the professional user a strong efficiency leverage. Akeeba Backup Professional is the ideal choice for professional web developers. Thanks to its liberal GNU GPL v3 license, Akeeba Backup Professional can be installed on an unlimited number of clients' websites, royalty-free! Amazing, isn't it?
Introduction
9. Back to the Kickstart window, click the button titled Clean Up. Kickstart removes the installation directory, restores your .htaccess file (if you had one in the first place), removes the backup archive and itself. 10.Believe it or not, you have a working site! Honestly! Click on the View the front-end button to visit your new site. If you are restoring to a different subdirectory on the same server as the original site, or to a whole different host, you might need to edit your .htaccess file for your site to work properly. This is all described in the restoration section of this guide. If you need help backing up your site, take a look in the Backup Now section of this guide.
Important
Google Chrome 4 introduced a feature where it permanently "remembers" redirections. Since redirections are a key component to the internal working of Joomla!, using Google Chrome 4+ to administer your Joomla! site can lead to unexpected results, unless you are using Joomla! 1.5.17 or any later version. Therefore we strongly recommend upgrading your sites to the latest Joomla! release. Akeeba Backup does include workarounds for Chrome's behaviour, but we can't guarantee that anything else in Joomla! (including installation) will work smoothly.
Introduction
In any case, you must make sure that Javascript is enabled on your browser for the backup to work. If you are using AVG antivirus, please disable its Link Checker feature as it is known to cause problems with several Javascript-based web applications, including Akeeba Backup and its tools.
Warning
Attention Mac OS X users! Safari, the default web server provided to you by Apple, is automatically extracting the ZIP file into a directory and removes the ZIP file. In order to install the extension through Joomla!'s extensions installer you must select that directory, right-click on it and select Compress to get a ZIP file of its contents.
Warning
Akeeba Backup is a big extension (over 2Mb for the Professional release). Some servers do not allow you to upload files that big. If this is the case you can try the Manual installation. If you have a WAMPServer local server, please note that its default configuration does not allow files over 2Mb to be uploaded. To work around that, left-click on the WAMP icon (the green W), click on PHP, php.ini and find the line beginning with upload_max_filesize. Change it so that it reads: upload_max_filesize = 4M
Save this file. Now, left-click on the WAMP icon, click on Apache, Service, Restart Service and you can now install the component. Editing the php.ini file should also work on all other servers, local and live alike. If the installation did not work, please take a look at the following two sections!
Important
When upgrading from Core to Professional you must install the Professional package twice. For an unknown reason, Joomla! does not copy some of the Professional package's files the first time you install it. However, if you install the package again (without uninstalling your existing copy of Akeeba Backup) finally Joomla! copies all of the necessary files and performs the upgrade correctly.
Live update
There is also an alternate update path, if your server supports it. It is called the "Live Update" feature and it is available since Akeeba Backup 3.0.b1. Whenever you visit the Akeeba Backup Control Panel, it will automatically check for the existence of an updated version and it will notify you. Clicking on the notification allows you to perform a live update without further interaction. Do note that if your server is protected by a firewall you'll have to enable port 80 and 443 TCP traffic to www.akeebabackup.com and joomlacode.org for this feature to work properly.
10
Important
Even though the Control Panel may load in PHP 5.0.x or 5.1.x, the backup won't run on such old versions of PHP. You can check your PHP version by going to your site's System Information menu item. We strongly suggest that you use the latest PHP 5.2.x or 5.3.x version for optimal operation of the component.
11
On the top of the page there is the component's title. Beneath it you can find quick links to the most vital functions which is what you'll have to deal with 99% of your time using the component.
Under the quick links, there is the profile selection box. It serves a double purpose, indicating the active profile and letting you switch between available profiles. Clicking on the drop down allows you to select a new profile. Changing the selection (clicking on the drop down list and selecting a new profile) automatically makes this new profile current and Akeeba Backup notifies you about that. Should this not happen, you can manually click on the Switch Profile button on the right to forcibly make the selected profile current.
Tip
The active profile is applied in all functions of the component, including configuration, filter settings, inclusion options, etc. The only settings which are not dependent on the active profile are those accessible from the Component Parameters button. Keep this in mind when editing any of Akeeba Backup's settings! On the right hand side of the page, you will find a slider with useful information arranged in panels. There are several panels: Status Summary
In this panel you can find information regarding the status of your backup output directory. Akeeba Backup will warn you if this directory is unwritable. If the text reads that there are potential problems you must take a look at the details below to find out what these might be!
Important
No matter what the PHP Safe Mode setting is, it is possible that your host enforces open_basedir restrictions which only allow you to have an output directory under a handful of predefined locations. On this occasion, Akeeba Backup will report the folder unwritable even though you might have enforced 0777 (read, write and execute allowed for all) permissions. These restrictions are reported in the section below the overall status text as an item entitled "open_basedir restrictions".
12
If any potential problems have been detected, right below the overall status you will find one or several warnings links. Just click on each warning's description to get a pop up window explaining the potential problem, its impact on your backup and precautionary or corrective steps you can take. If this section is empty, no detectable problems were found; this is a good thing, indeed!
Important
You are supposed to read the full text of the warnings by clicking on each item. Quite often users post for support on our forum asking something which is already written in the full text of the warnings. Please, DO NOT seek support unless you have read the detailed descriptions of all of the potential problems appearing in this box. Below of all this information you can find a donation link. If you feel that Akeeba Backup has saved your day - and you do not wish or can't afford subscribing to the Professional edition - you can donate a small amount of money to help us keep the free version going! Backup Statistics
This panel informs you about the status of your last backup attempt. The information shown is the date and time of backup, the origin (e.g. remote, backend, frontend and so on), the profile used and the backup status.
The left navigation panel set allows access to the different functions of the component, by clicking on each icon. There are two icons which need special mention, the updates icon and the Component Parameters icon. Since Akeeba Backup 3.2 there is a "Live Update" feature integrated in the navigation panel. Every time you display the Control Panel page, Akeeba Backup will query AkeebaBackup.com for the existence of a new release and cache
13
this data for a maximum of 24 hours. If it discovers that your version is out of date, it will allow you to upgrade to the latest release by clicking on the update icon which displays as the last item of the Basic Operations set of icons. If this doesn't work on your host, you can always update manually, as explained earlier in this document.
Important
For this feature to work you must ensure that your server can communicate with akeebabackup.com. If you are behind a firewall, make sure that you open TCP traffic over port 80 and 443 to www.akeebabackup.com (our update server location) and joomlacode.org (our file repository system). If you are a subscriber to the Professional release, the live update will not work properly unless you also specify your AkeebaBackup.com Download ID in the Component Parameters page. Since the Professional release is provided on a subscription basis, whenever you ask Akeeba Backup to update it, it has to provide your Download ID to our site to verify that you have a valid subscription before downloading the update installation package. You can find out your Download ID by logging in to AkeebaBackup.com and clicking on the My Subscriptions item on the right-hand user menu module. The Component Parameters button allows you to edit component-wide parameters, i.e. settings which apply to all backup profiles. These options are mentioned in the following section.
Do note that this popup looks slightly differently in Joomla! 1.6, i.e. it has tabs for each set of options instead of horizontal ruler lines to separate them. However, the naming of the options and their associated meaning is exactly the same.
14
This setting defines which is the minimum Joomla! privileges required to access Akeeba Backup's backup functionality. Remember that giving someone access to Akeeba Backup is like giving him a free pass to all of your site's configuration options, including those in your configuration.php file, i.e. database and FTP connection details. Never, ever give access to people who you don't fully trust. That's why the default setting is Super Administrators, which allows only Super Administrators (by definition full access users) to access the component.
Important
Even if you have a third party ACL system, such as JUGA, this setting will work on top of your system. If you have set this setting to Super Administrators and try to give a Manager access to the component through the ACL system he won't be able to use it. Even though your ACL system will let her through, Akeeba Backup's own setting will slam the door on her face. You have been warned! Enable front-end and remote backup Secret word Akeeba Backup allows you to take backups from the front-end, or from a desktop application called Akeeba Remote Control. In order to be able to do so, you have to enable this option.
Whenever you need to take a front-end backup, you have to supply this secret word to let Akeeba Backup know that you really have access to its functions and you're not an impostor, or a hacker attempting to cause a massive denial of service attack by overloading your server with backup operations. Please use only alphanumeric characters, i.e. lower and upper case a-z letters and the digits 0-9. Do not use special characters, as they tend to cause problems when passed in the frontend backup URL without converting them to URL encoded format (which is beyond the scope of this manual - so just use a-z, A-Z and 0-9, OK?) When enabled, Akeeba Backup will send an email regarding the backup status every time a frontend or remote backup is complete or failed. When the above option is enabled, the email will be sent to this email address. If you leave it blank, Akeeba Backup will send a copy of the email to all Super Administrators of the site. This option lets you customise the subject of the email message which will be sent when a remote, CRON or front-end backup succeeds. You can use the same variables you can use in file names, i.e. [HOST] for the domain name of your site and [DATE] for the current date and time stamp. Leave blank to use the generic default option. This option lets you customise the body of the email message which will be sent when a remote, CRON or front-end backup succeeds. Leave blank to use the generic default option. The email is delivered as plain text; you may not use any HTML to format it. You can use the same variables you can use in file names, i.e. [HOST] for the domain name of your site and [DATE] for the current date and time stamp, inside the body text. Moreover, you may also use any or all of the following variables in order to enhance the clarity of your message: [PROFILENUMBER] [PROFILENAME] [PARTCOUNT] [FILELIST] The numeric ID of the current backup profile
Email subject
Email body
The number of archive parts of the backup archive which was just generated A list of filenames of the archive parts of the backup archive which was just generated
15
When selected, the Live Update feature will not notify you of official releases (alphas, betas, RCs and stables). Instead, it will notify you whenever a Developer's Release is published and allow you to update to it. This should only be used on test sites and only if you want to try out the latest and greatest features before they are well-tested and released to the public. Developer's Releases may be broken or malfunction in unexpected ways. You have been warned. If and only if you are using the Professional release you have to specify your Download ID for the live update feature to work properly. You can get your Download ID by visiting AkeebaBackup.com and clicking My Subscriptions. Your Download ID is printed below the list of subscriptions. Filling in this field is required so that only users with a valid Professional subscription can download update packages, just as you'd expect from any commercial software.
Download ID
Note
Users of Akeeba Backup Core do not need to supply this information. Akeeba Backup Core is provided free of charge to everybody, therefore there is no need to validate the update against a username and a password. Minimum release stability for update notifications Normally, Akeeba Backup's Live Update notifies you of all available updates, including the unstable ones (alpha, beta and RC). Should you wish to be notified only when a "stable enough" new version is available, set this option to the required setting. For example, setting this to "Release Candidate" will not notify you about alphas and betas, but only for RCs and stable releases. Your settings can be automatically stored encrypted using the industry standard AES-128 encryption scheme. This will protect your passwords and settings from prying eyes. If, however, you do not want to use this feature, please set this option to No and reload the Control Panel page to apply this setting. Do note that your server must have the mcrypt extension installed for this feature to work. Please note that you may have to go to the Configuration page and click on the Save button before Akeeba Backup can successfully detect if your server supports encryption or not. Before doing that, Akeeba Backup might always report that your server does not support encryption.
Use Encryption
2. Basic Operations
The Basic Operations group contains the most common functions you will need on your daily Akeeba Backup usage. In fact, you will only use the other pages sparingly, mostly when you create a backup profile or want to update it after doing significant changes to your site.
The Profiles Management page is the central place from where you can define and manage backup profiles . Each backup profiles can be regarded as a container holding Akeeba Backup configuration values and filter settings. Each one uniquely and completely defines the way Akeeba Backup will perform its backup process.
16
The main page consists of a list of all backup profiles. On the left hand column there is a check box allowing the selection of a backup profile so that one of the toolbar operations can be applied. The other column displays the description of the backup profile. Clicking on it leads you to the editor page, where you can change this description. On the page's toolbar you can find the operations buttons: New Creates a new, empty profile. Clicking on this button will lead you to the editor page, where you can define the name of the new profile, or cancel the operation if you've changed your mind. Creates a prostine copy of the selected backup profile. The copy will have the same name and include all of the configuration options and filter settings of the original. Permanently removes all selected backup profiles. All associated configuration options and filter settings are removed as well. This is an irreversible operation; once a profile is deleted, it's gone forever. You can only delete one profile at a time. If you select multiple profiles, only the first one (topmost) will be removed. When you create a new profile or copy an existing profile, the newly generated profile becomes current. This means that you can work on your new profile as soon as you're finished creating it, without the need to manually make it current from the Control Panel page.
Copy
Delete
The editor page which appears when creating or editing a profile is trivial. The only changeable parameter is the profile's description. Clicking on Save applies the settings and gets you to the main Profiles Management page. Clicking on Apply applies the settings and returns you to the editor page. Finally, clicking on Cancel will disregard any changes made and get you to the main Profiles Management page.
17
The Configuration Wizard will automatically fine tune the following configuration parameters: AJAX method (use AJAX or IFrames) Optimize the minimum execution time so as to make the backup as fast as possible without your server throwing 403 Forbidden errors Adjust the location and/or permissions of the output directory. Useful if you just transferred your site to a new server or location. Optimize the database dump engine settings to make database dump as fast as possible, while avoiding memory outage errors Optimize the maximum execution time so that as few steps as possible are performed during the backup, without causing a timeout Automatically determines if your server needs archive splitting.
Important
The Configuration Wizard does not address the archive splitting required when you are using a post-processing engine (such as backup-to-email, S3, Dropbox, Box.net, etc). If you are using post-processing you may have to manually set the Part Size for Split Archives to a different value manually. At the end of the wizard process, you can either try taking a backup immediately or review and possibly modify the configuration parameters.
2.3. Configuration
Note
Some options discussed below may be only available in the for-a-fee Professional edition! The Configuration page is split in many sections - or panes, if you like - each one serving as a group for closely related options. Each of those panes displays a title and below it you can find all of the options. Hovering your mouse of the label - the left hand part of each row - you will be presented with a quite big tooltip providing short documentation of the setting and its available options. This way you won't have to refer to this document constantly when configuring Akeeba Backup. Some of the settings also feature a button. They can either do some action, like browsing for a folder and testing connection parameters, or it may be labeled Configure.... This latter case is mostly interesting, as pressing the button
18
will toggle the display of a sub-pane which contains options pertaining to this specific option. This GUI pattern is primarily used for "engines" type settings. Another interface element worth mentioning are the composite drop-downs. Whenever you are supposed to enter a number, Akeeba Backup presents you with a drop-down menu of the most common options. You can either select a value from the list, or select "Custom...". In the latter case, a text box appears to the right of the drop-down. You can now type in your desired value, even if it's not on the list. Do note that all of these elements have preset minimum/maximum values. If you attempt to enter a value outside those boundaries, or an invalid number, they will automatically revert to the closest value which is within the presents bounds.
Note
If you had been using earlier releases of Akeeba Backup, you will remember that these values used to use a draggable slider. Since the slider was rather "jumpy" and hard to configure, we reverted to using composite drop-downs in order to make entry of settings easier and faster.
On the top of the page you can see the numeric ID and title of the active backup profile. This acts as a reminder, so that you know which profile's settings you are editing. The toolbar also contains a Parameters button. Clicking on it will launch the profile-independent, component-wide parameters editor. It's the same as clicking the Component Parameters button in the Control Panel. The rest of this document is separated into sub-sections. The first sub-section describes the settings of each of the main configuration panes, whereas the rest of the sections discuss the settings made available to you through sub-panes.
Output Directory
This is the directory where the result of the backup process goes. The result of the backup depending on other configuration options - might be an archive file or an SQL file. This is also where your backup log file will be stored. The output directory must be accessible and writable by PHP.
Important
Providing a directory with adequate permissions might not be enough! There are other PHP security mechanisms which might prevent using a directory, for example the open_basedir restriction which only allows certain paths to be used for writing files from within PHP. Akeeba Backup will try to detect and report such anomalies in the Control Panel page before you attempt a backup.
19
You can use the following variables to make your setting both human readable and portable across different servers - or even different platforms: [DEFAULT_OUTPUT] is replaced by the absolute path to your site's administrator/components/com_akeeba/backup directory. This is assigned as the default location of output files unless you change its location. If you leave it as it is, you are supposed to make sure that the permissions to this directory are adequate for PHP to be able to write to it. [SITEROOT] is automatically replaced by the absolute path to your site's root [ROOTPARENT] is automatically replaced by the absolute path to the parent directory of your site's root (that is, one directory above your site's root) Is this over your head? No problem! Just click on the Browse... button and a pop-up directory navigator will allow you to find the proper directory. Next to the folder's location there is the button labeled Use. Click on it to make the current directory the selected one and close the pop-up. To make it even easier for you, Akeeba Backup displays a small icon next to the Use button. If it's a green check mark the directory is writable and you can use it. If it's a red X sign, the directory is not readable and you either have to select a different directory, or change this directory's permissions.
Warning
NEVER, EVER, UNDER ANY CIRCUMSTANCES SHOULD YOU USE YOUR SITE'S ROOT AS YOUR OUTPUT DIRECTORY! This will usually lead to corrupt backup or backup failure. The reason is that the output directory and all of their contents are automatically excluded from the backup set. However, even if your backup succeeds due to a bug (remember, it's supposed to fail!), using your public, web accessible site root as your output directory is like a party invitation to hackers worldwide. If you come to our forum with such a setup and a broken backup we can't help you. Log Level This option determines the verbosity of Akeeba Backup's log file: Errors only. Only fatal errors are reported. Use this on production boxes where you have already confirmed there are no unreadable files or directories. Errors and warnings. The minimum recommended setting, reports fatal errors as well as warnings. Akeeba Backup communicates unreadable files and directories which it wasn't able to backup through warnings. Read the warnings to make sure you don't end up with incomplete backups! Warnings are also reported in the Backup Now page GUI irrespective of the log verbosity setting as a convenience. All information. As "Error and Warnings" but also includes some informative messages on Akeeba Backup's backup process. All Information and Debug. This is the recommended setting for reporting bugs. It is the most verbose level, containing developer-friendly information on Akeeba Backup's operation. This is what we need to help you in case of a problem. This will also create a 2-5Mb log file on most sites, so you should only use this until you have achieved consistently valid backup archives creation. None. This log level is not recommended. You should only use this if you are paranoid and want no log files written on the server. However, if you are truly concerned about security, you should protect the backup output directory instead of using this log level!
20
Our servers usually run on Errors and Warnings or All Information levels. When we are testing new releases or change our server setups, we switch to All Information and Debug until we are sure everything is flowing smoothly. Backup archive name Here you can define the naming template of backup files. There are a few available variables. Variables are special pieces of text which will be expanded to something else at backup time. They can be used to make the names of the files harder to guess for potential attackers, as well as allow you to store multiple backup archives on the output directory at any given time. The available variables and their expansion at backup time are: [HOST] The configured host name of your site.
Note
This doesn't work in the native command-line CRON mode, i.e. using backup.php for producing automated backups. In such a case, it will be replaced with an empty string (no text). [DATE] The current server date, in the format YYYYMMDD (year as four digits, month as two digits, day as two digits), for example 20080818 for August 18th 2008. The year of the current server date, as four digits The month of the current server date, as two digits (zero-padded) The day of the current server date, as two digits (zero-padded) The current week number of the year. Week #1 is the first week with a Sunday in it. Day of the week, i.e. Sunday, Monday, etc. The full name is returned in your current Joomla! language. Front-end, remote and CRON backups may return this in English or your default Joomla! language. This is not a bug, it is how Joomla!'s translation system is supposed to work. A 64-character random string. Use sparingly, it can cause backup failure due to the file name being too long for your server The current server time, in the format HHMMSS (hour as two digits, minutes as two digits and seconds as two digits), for example 221520 for 10:15:20 pm. The version of Akeeba Backup. Useful if you want to know which version of Akeeba Backup generated this archive file.
[WEEKDAY]
[RANDOM]
[TIME]
[VERSION]
Backup Type
It defines the kind of backup you'd like to take. The backup types for Akeeba Backup are: Full site backup which backs up the Joomla! database, any extra databases you might have defined and all of the site's files. This produces a backup archive with an embedded installer so that you can restore your site with ease. This is the option 90% of the users want; it is the only option which creates a full backup of your site, capable of producing a working site if everything is wiped out of your server. Main site database only (SQL file) which backs up only the Joomla! database. It results in a single SQL file which can be used with any MySQL administration utility (e.g. phpMyAdmin)
21
to restore only your database should disaster strike. This option is recommended for advanced users only. Site files only which backs up nothing but the site's files. It is complementary to the previous option.
Warning
Having one "main site database" backup and one "sites files only" backup is not equal to having a full site backup! The full site backup also includes an installation script which, just like Joomla!'s web installer, allows you to effortlessly recover your site even if everything is wiped out of your server. It acts as the glue between the two pieces (files and database). All configured databases (archive file) which creates an archive file containing SQL files with dumps of your main site's database and all of the defined multiple databases. The database dumps can be restored by any MySQL administration tool (for example phpMyAdmin). The difference to the second option is that it produces an uncompressed SQL file and doesn't include any extra databases which you might have defined.
Note
Extra - or "multiple" - database definitions are only available in the Professional edition of the component. Incremental (files only). This is the same as the Site files only option, but instead of backing up all of your site's files, it only backs up the files which changed since the last time you performed a backup. The only comparison made is between the file's modification time and the last successful backup's time. The "last successful backup" refers to the last backup made using this backup Profile and which has a status of "OK", "Remote" or "Obsolete". Restoring an incremental backup set is a manual process. You have to manually extract the files from your "base" backup (an archive made with a Full Site Backup profile), then extract all incremental archives on top of it. Finally, used this collection of extracted files to restore your site. This process should only be used if you really know what you are doing. Do not trust that Akeeba Backup can sort out the collection of incremental backups and help you restore them. It won't. Use IFRAMEs instead of AJAX Normally, Akeeba Backup is using AJAX postbacks to perform the backup process without timing out. Its ability to do so depends on how well your server plays along with your browser's Javascript engine. Sometimes, this is just not possible at all and you'll experience the backup stalling at random points through the backup process. If modifying the other options doesn't help, enable this feature. When enabled, instead of using AJAX calls, Akeeba Backup will create a hidden IFRAME in the page and perform all server communications through it. Since IFRAMEs load the backup URL as if it were a regular web page, it minimizes the probability of conflicts. The major drawback is that this method is about 50% slower than the AJAX one, so your backup will take substantially longer. Normally, Akeeba Backup stores temporary information required to process the backup in multiple steps inside files in your Output Directory. Sometimes, especially on low-end hosts with ancient versions of PHP, this causes backup issues such as the backup restarting all the time. In those cases, you can check this box and Akeeba Backup will use your site's database to store this temporary information.
22
Do note that on some hosts this will cause the backup to fail with a "MySQL server has gone away" error message. That is a problem with the host's configuration. In those cases, nothing can be done. Our suggestion: if you receive such an error, migrate your site to a new host as the one you are using is most likely very restricted and severely under-performant. Moving to a faster, more reliable host can benefit your site in many more ways than just being able to run a backup.
This option controls how Akeeba Backup will access your database and produce a dump of its contents to an SQL file. It is used with all backup types, except the files only type. The available options for this setting are discussed in the Database dump engines section of this document. This option controls how Akeeba Backup will scan your site for files and directories to back up. The available options for this setting are discussed in the File and directories scanner engines section of this document. This option controls which kind of archive will be produced by Akeeba Backup. The available options for this setting are discussed in the Archiver engines section of this document. Akeeba Backup allows you to post-process the backup archives once the backup process is over. Post-processing generally means sending them somewhere off-server. This can be used, for example, to move your backup archives to cloud storage, increasing your data safety. The available options for this setting are discussed in the Data processing engines section of this document. Akeeba Backup will include a restoration script inside the backup archive in order to make restoration easy and the backup archive self-contained. You do not need anything else except the archive in order to restore a site. Restoration scripts honour the settings in your configuration.php, modifying only those necessary (for example, the database connection information), allowing you to create pristine copies ("clones") of your site to any host. You can find more information about restoration scripts in the next Chapter. Using the off-site directories inclusion of Akeeba Backup Professional, the component will be instructed to look for files in arbitrary locations, even if they are outside the site's root (hence the name of that feature). All the directories included with this feature will be placed in the archive as subdirectories of another folder, in order to avoid directory name clashes. We call this folder the "virtual directory", because it doesn't physically exist on the server, it only exists inside the backup archive. If you have Akeeba Backup Core or Professional and running it under Joomla! 1.6 with a customized Joomla! library path (i.e. you have moved Joomla!'s libraries directory off your site's root), Akeeba Backup will automatically add an off-site directory inclusion for these files and will create a subdirectory inside this virtual directory with a name of JPATH_LIBRARIES.
Archiver engine
23
Since Akeeba Backup 3.2 this section contains optional inclusion and exclusion filters which can be activated to customize your backup procedure. The available filters are: Date conditional filter It allows you to backup only files modified after a specific date and time. This is different than the incremental file only backup. It allows you to backup files newer than the specified date no matter which backup mode (full site backup, files only backup, incremental files only backup) you are using. The available options are: Date conditional filter Backup files modified after Tick the checkbox to activate this filter Files before this date and time will be skipped from the backup set. The format for the date and time parameter is YYYY-MM-DD HH:MM:SS TIMEZONE. This means that you have to specify the year as four digits, followed by a dash, then the month as two digits (e.g. 09 for September), followed by a dash, then the day as two digits (e.g. 01 for the 1st day of the month). For example, September 1st, 2010 is written as 2010-09-01. If you want to specify the time, leave a space after the date and write down the time as the hour using two digits (00-23, no a.m./p.m. is supported!), then a semicolon, then the minutes as two digits, followed by a semicolon, then the seconds as two digits. For example 59 seconds after 11:05 p.m. is written as 23:05:59. You can optionally leave a space after the time and specify the timezone as GMT+/-time. For example, GMT-6 is Dallas time which is six hours behind the GMT and GMT+2 is two hours ahead of GMT which is the Eastern Europe Time. If you do not specify a timezone the GMT timezone is assumed.
Important
You have to set your server's timezone in Joomla!'s Global Configuration for this feature to work reliably. If you get strange results, try editing your site's Global Configuration before asking us for support.
When checked, the quota settings will also be applied to remotely stored files. This option actually works only for files stored on Amazon S3 or a remote FTP server. When checked, Akeeba Backup will only apply quotas based on the date and time the backup was started. This allows you to easily do something like "keep daily backups for the last 15 days and always keep the backup taken on the first of each month".
Warning
Enabling this options DISABLES the size and count quotas. Maximum back age, in days Don't delete backups taken on Only applies when the Enable maximum backup age quotas option is enabled. Backups older than this number of days will be deleted. Newer backups will not be deleted. Only applies when the Enable maximum backup age quotas option is enabled.
24
Even when a backup is older than the Maximum back age, in days setting, it won't be deleted if it was taken on this day of the month. For example, if you set this to 1, backups taken on the first day of each calendar month will not be deleted. Setting this option to 1, the backup age to 31 and enabling the maximum backup age quotas you end up keeping all backups taken the last month and keeping the backups taken on the first of each month. When the locally stored files of a backup record are deleted (either manually or automatically after uploading it to a remote storage) the record is marked as Obsolete or Remote. Some users prefer to limit the number of the backup entries showing in the Administer Backup Files page. This option instructs Akeeba Backup to keep at most that many obsolete/remote records and automatically delete older obsolete/remote entries. This is different than the rest of the quotas because it doesn't remove files from your server, it removes the backup entry from Akeeba Backup's interface. When checked, old backup archives will be erased when the total size of archives stored under this (and only this) profile exceed the Size quota setting. Defines the maximum aggregated size of backup archives under the current profile to keep. Only has an effect if the previous options is activated. When checked, old backup archives will be erased when there are more backups stored under this (and only this) profile exceed the Count quota setting. Defines the maximum number of backups under the current profile to keep. Only has an effect if the previous options is activated.
Size quota
Note
This feature is only available in Akeeba Backup Professional, the for-a-fee edition of our software
Important
This option has effect ONLY when set in profile #1 (the default backup profile). In all other cases it is ignored. This quota setting doesn't affect the regular backups; it only applies to System Restore Points. Moreover, System Restore Points are not subject to the other quota settings, but only to this one. This setting defines the maximum total size System Restore Points can take on your server. For example, if it is set to 10Mb (the default value), only up to 10Mb of System Restore Point files will be kept on your server.
Some servers deploy anti-hacker measures (such as mod_evasive or mod_security) which will deny connections to the server if the same URL is accessed multiple times in a limited amount of time. Akeeba Backup has to call its backup URL multiple times, so it runs the risk of being treated as a potential hacker and denied connection to your server, resulting to backup failure.
25
In order to work around this issue, Akeeba Backup can throttle the rate of server requests using this setting. A minimum execution time of 2 seconds means that calls to the backup URL will happen at most once every two seconds. You are suggested to keep the default value. Maximum execution time Akeeba Backup has to divide the backup process in individual small steps in order to avoid server timeouts. However, it has to know how small they have to be; that's why this setting exists. Akeeba Backup will try to avoid consuming more time per step than this setting. You have to use a number lower than the maximum_execution_time setting in your host's php.ini file. In fact, we suggest using 50% of that value here: if your host allows up to 30 seconds in the php.ini, you have to enter no more than 15-17 seconds here. If unsure, 7 seconds is a very safe value under most configurations. When Akeeba Backup calculates the available time left for performing operations within the current backup step a number of external settings may skew this result and lead to timeout errors. This setting defines how conservative the backup engine will be when performing those calculations and is expressed as a percentage of the Maximum execution time parameter. The less this setting is, the more conservative Akeeba Backup gets. It is suggested not to use a value over 75%, unless you have a very fast server. If you experience timeouts, you may want to lower this setting to a value around 50%.
Important
Restoring views, triggers, stored procedures and functions requires adequate privileges for the database user during the restoration process. Most hosts do not assign this kind of privileges. If your restoration fails with a MySQL error when restoring such database entities you may have to ask your host to assign those privileges to your database user.
MySQL Compatibility
his option controls the MySQL version compatibility when creating the database SQL dump file. In fact, it forces Akeeba Backup to request the appropriate CREATE TABLE commands from your database server. It is useful when migrating your site to another host with a different MySQL version. The available options are: Default. This is the recommended option. The full feature set of your database server will be used when generating the CREATE command. Your target database server must run MySQL of a matching major version, i.e. MySQL 5 if the host you're backing up runs on MySQL 5. MySQL 4.1. Akeeba Backup will request from your database server to provide definitions (CREATE commands) in a MySQL 4.1 friendly format.
26
Important
This option will take effect in MySQL 4.1 or greater database hosts. If you use it on older MySQL version the backup might fail!
Warning
Do not use this option if your site is already running on MySQL 4.x or if both your site and the target host run on MySQL 5.x. Otherwise, crucial information about the database's encoding might be lost in the process, causing broken text on sites using non-ASCII character sets. Generate extended INSERTs When this is not checked, Akeeba Backup will create one INSERT statement for each data row of each table. When you have lots of rows with insignificant amount of data, such as banner and click tracking logs, the overhead of the INSERT statement is much higher than the actual data, causing a massively bloated database dump file. When this option is enabled, the dump engine will create a single INSERT statement for multiple rows of data, reducing the overhead and resulting into significantly smaller backup archives. Moreover, this will lead to much less SQL commands being run during restoration, which is of paramount importance on many restrictive shared hosting environments. It is suggested to turn this setting on, unless you are going to restore to a MySQL 4.1 host. If the previous setting is enabled, this setting defines the maximum length of a single INSERT statement. Most MySQL servers have a configured limit of maximum stement length and will not accept an INSERT statement over 1Mb. It is suggested to leave the default conservative setting (128Kb) unless you know what you're doing. If you get restoration failures indicating that you exceeded the maximum query length, please lower this setting. By default, Akeeba Backup will only back up database tables and VIEWs. If your host supports this, you can also back up and restore advanced aspects of your MySQL database: stored procedures, stored functions and triggers. If your site makes use of any of those features you will have to tick the box. If the backup operation crashes or you the database tables filter page is blank you must turn this option off for Akeeba Backup to work properly.
Warning
Using this feature requires that your host allows you to execute privileged SQL commands against the MySQL database: SHOW PROCEDURE STATUS SHOW FUNCTION STATUS SHOW TRIGGERS Most shared hosting providers do not allow you to execute these commands. Trying to do so will usually cause the script execution to abruptly halt, most often without indicating the source of error. If you are in doubt, disable this option and retry backup. This shouldn't be an issue with dedicated hosting, as long as you grant the SUPER privilege to the database user you use to connect to your site's database. Size for split SQL dump files Akeeba Backup is able to split your MySQL database dump to smaller files. This allows for an improved compression ratio and also helps avoid several problems with certain cheap hosts which put a restriction on the maximum size a file generated by PHP code can have.
27
Ideally, you should specify a setting which is about half as much as your Big file threshold setting in the archiver engine's configuration options pane. The reason to do that is that the archiver engines will not compress files with sizes over the value this threshold. Since it's impossible to have absolute control of the size of the database dump, using half the value of this setting allows for the expected size fluctuation. If you want to disable this feature and create a single big SQL dump file instead, just set this option to 0 Mb.
Important
This setting has no effect on "Main site database only" backup profiles. This is because the nature of this backup type does not allow splitting the database archive dump. If you want something equivalent, please use the "All configured databases" backup type instead, as it creates an archive file which contains your (split) database dump and takes up MUCH less space on your web server. Number of rows per batch Dumping table data happens in "batches", i.e. a few rows at a time. This parameter defines how many rows will be fetched from the table at any given time. If you are backing up tables with large chunks of binary data (e.g. files stored in BLOB fields) or if you have very large chunks of text stored in the database, the default value - 1000 rows - may cause a PHP memory or MySQL buffer exhaustion. If you get memory outage errors during the table backup, it is advisable to lower this setting. This is especially true if your MySQL and PHP combination does not allow a cursor to be effectively created and all data has to be transferred in PHP's memory. A value of 20 is a very safe value, at the expense of making your backup process slower and run more queries against your database server. Most servers work fine with the default value of 1000 rows per batch. When this option is enabled, Akeeba Backup's database dump engine will no longer try to figure out table and VIEW dependencies. This will speed up the database dump initialization step. This is recommended if and only if you have too many tables (over 200) in your database, you get timeout errors during the database dump initialization step and you do not use foreign keys, VIEWs, FUNCTIONs, PROCEDUREs, TRIGGERs or any tables using the MERGE database engine. If you do use any of those MySQL features in your tables there is a high probability that your SQL dump will be unable to be restored.
No dependency tracking
This option tells Akeeba Backup which directories to consider "large" so that it can break the backup step. When it is encountered with a directory having at least this number of files and subdirectories, it will break the step. The default value is quite conservative and suitable for most sites. If you have a very fast server, e.g. a dedicated server, VPS or MVS, you may increase this value. If you get timeout errors, try decreasing this setting. Akeeba Backup can use two different methods for asking your server to list the contents of a directory. The Regular method is very fast and works on the vast majority of servers. However,
28
some servers refuse to list files with permissions lower than 0755 (it's absurd, I know!) and require the slightly slower, Alternate method. If your backup archive is missing files and you do not get "Unreadable file" or "Unreadable directory" warnings during backup, please switch this option to Alternate (failsafe) and retry backing up.
Warning
The ZIP format requires the calculation of CRC32 checksums for each file added in the archive. This is a resource intensive operation which will slow down your backup and may lead to timeouts when archiving big files on slow hosts. If this happens, your only choice is not to use the ZIP format; use JPA instead. Unfortunately, we can't do anything about it: it is a combined limitation of the ZIP specification, how PHP works and how your server is set up.
Dereference symlinks
This setting is only valid on Linux and compatible *NIX hosts. Normally, when Akeeba Backup encounters symbolic links ("symlinks"), it follows them and treats them as regular files and directories, backing up their contents. Some site configurations may have symbolic links set up in such a way as to create an infinite loop, causing the backup to fail. When this option is set to No, Akeeba Backup will not follow symbolic links, but store their name and their target in the archive. Of course, if your symbolic links use absolute paths, restoring to a different server than the one you backed up from will result in broken symlinks.
Note
Even though Windows 7 supports symbolic links, it does so in a way that it's not possible for PHP to make use of this feature. As a result, this setting will only work on Linux, FreeBSD, Solaris and other compatible *NIX hosts. Part size for split archives Akeeba Backup supports the creation of Split Archives. In a nutshell, your backup archive is spanned among one or several files, so that each of these files ("part") is not bigger than the value you specify here. This is a useful feature for hosts which impose a maximum file size quota. If you use a value of 0Mb, no archive splitting will take place and Akeeba Backup will produce a single backup archive (default).
Warning
If you want to post-process your archive files it is suggested that you use small, nonzero values here. The time it takes the post-processing engine to transfer an archive from your server to the remote server equals part size divided by available bandwidth. Since the available execution time is finite and the available bandwidth is constant, the only way to avoid a timeout is creating small parts.
29
Important
Split ZIP archives can not be opened with 7-zip, Linux unzip and other GUI clients. Only WinZIP and PKZIP understand them. If you want to extract them, you must use WinZIP, PKZIP, Akeeba Kickstart or Akeeba eXtract Wizard. This is not an Akeeba Backup "bug", it's a problem with most free archiver extraction tools. Chunk size for large files processing Each file is read in small increments, we call chunks, while being copied in the archive. Larger chunks will result in faster backup, at the price of taking longer to process each one of them and risking a timeout. Smaller chunks lead to slower but safer backups. On very slow hosts, this parameter should be set to a low value, for example 256Kb, or even lower - especially true if you constantly get timeout errors when backing up large files. On fast hosts you may want to increase this value in order to speed up your backup operation. Files over this size will be stored in the archive file uncompressed. Do note that in order for a file to be compressed, Akeeba Backup has to load it in its entirety to memory, compress it and then write it to disk. As a rule of thumb, you need to have free memory equal to 1.8 times the size of the file to compress, e.g. 18Mb for a 10Mb file. Joomla! with a lot of plug-ins might consume as much as 16Mb and Akeeba Backup's engine might consume another 5Mb, so plan this value carefully, or you will run into memory exhaustion errors. Compression is also resource intensive and will increase the time to produce a backup. If this value is too high, you might run into timeout errors. At the end of the ZIP archive creation we have to attach a lookup table containing the names of all included files to the end of the archive file. This table is called the Central Directory. We have to do this in small chunks so as to avoid timeout or memory exhaustion errors. It is recommended that you leave the default value (1Mb) unless you know what you're doing.
Tip
It is recommended that you use the JPA format for all of your backups. You can extract JPA files either on your server using Kickstart, or on your desktop using Akeeba eXtract Wizard.
The settings for this engine are identical to those used in the ZIP engine.
Note
This feature is only available in the Akeeba Backup Professional release. The JPS is a further evolution of the JPA format, designed with the major goals of improving compression rations and enhancing the security of your data by encrypting the entire archive's contents with the industry standard AES-128
30
encryption format. The latter goal ensures that even in the unlikely event of your backup files ending up in the hands of hacker or another untrusted party, they would be useless. As per the strictest security standards, all information in the archive (including file names and file data) are encrypted. Without the password nobody can deduct any information about your site by examining a JPS archive. The contents of all files in the archive are compressed and encrypted in 64Kb blocks, allowing for better compression ratios over the JPA format.
Important
In order for JPS to work it requires that both the zlib and mcrypt PHP extensions are installed and activated on your server. Moreover, the mcrypt library installed on the server must support AES-128 in CBC mode. If any of these conditions is not met, the backup process will halt with an error mentioning that encryption is not enabled on your server. In this case, please contact your host with the information in this paragraph so that they can perform the necessary server-side changes.
Important
JPS archives can only be extracted on hosts fulfilling the same per-requisites (zlib and mcrypt extensions installed and activated). They can also be extracted only by Kickstart 3.1.2 and Akeeba eXtract Wizard 3.0.4 or later. Earlier version can't read the JPS archives at all.
The settings for this engine are: Encryption key This is the password to be used for encrypting the archive. For the sake of security, you are encouraged to enter a long passphrase which is hard to guess.
Warning
The key is case sensitive. This means that Abc, ABC and abc are three completely different keys! Dereference symlinks This setting is only valid on Linux and compatible *NIX hosts. Normally, when Akeeba Backup encounters symbolic links ("symlinks"), it follows them and treats them as regular files and directories, backing up their contents. Some site configurations may have symbolic links set up in such a way as to create an infinite loop, causing the backup to fail. When this option is set to No, Akeeba Backup will not follow symbolic links, but store their name and their target in the archive. Of course, if your symbolic links use absolute paths, restoring to a different server than the one you backed up from will result in broken symlinks.
Note
Even though Windows 7 supports symbolic links, it does so in a way that it's not possible for PHP to make use of this feature. As a result, this setting will only work on Linux, FreeBSD, Solaris and other compatible *NIX hosts. Part size for split archives Akeeba Backup supports the creation of Split Archives. In a nutshell, your backup archive is spanned among one or several files, so that each of these files ("part") is not bigger than the value you specify here. This is a useful feature for hosts which impose a maximum file size quota. If you use a value of 0Mb, no archive splitting will take place and Akeeba Backup will produce a single backup archive (default).
31
Warning
If you want to post-process your archive files it is suggested that you use small, nonzero values here. The time it takes the post-processing engine to transfer an archive from your server to the remote server equals part size divided by available bandwidth. Since the available execution time is finite and the available bandwidth is constant, the only way to avoid a timeout is creating small parts.
2.3.4.4. DirectFTP
Important
This feature is not meant for everyday users. It is designed for web professionals. If you don't understand the rest of this section, please do not use it. Akeeba Backup is equally useful as a site migration tool without using DirectFTP. The DirectFTP engine allows power users to directly export a website from one server to another, without the need to download the backup file to their PC, upload it and extract it on the other server. In order to do so, instead of backing up to an archive, it directly writes the backed up files to the remote server using FTP, hence the name. Do note that when using the DirectFTP engine, the post-processing engine will not run, as there is no archive produced. In a nutshell, when this option is activated, Akeeba Backup operates as usual, backing up your database and files. Instead of putting the site files, installer files and database dump inside a backup archive, it transfers them to a remote server using FTP. You can then visit the installation URL on the remote server to complete the site transfer progress.
Warning
This is considered an advanced feature. Since there are many things which might go wrong in the process and due to the fact that the success of the operation depends on the server configuration of both the originating and target servers, you are advised not to use it unless you know what you're doing. Moreover, bear in mind that the target server must not contain any files! If it does, it may not be possible to overwrite them, leading to an incomplete site transfer. Your originating server must support PHP's FTP extensions and not have its FTP functions blocked. Your originating server must not block FTP communication to the remote (target) server. Some hosts apply a firewall policy which requires you to specify to which hosts your server can connect. In such a case you might need to allow communication to your remote host. Normally, remote FTP connections consume a lot of time, therefore DirectFTP is very prone to time-outs. Theoretically, Akeeba Backup can automatically estimate the time required for transferring each file and avoid timing out. However, this is not always technically possible. In such a case you might want to lower the maximum execution time allowance and bias in the Configuration. Do note that large files have to be transferred in a single step, as most PHP and FTP configuration combinations disallow resuming uploads (chunked uploads). This means that a very large file, or a very large database dump may cause the process to fail with a timeout error.
32
The available configuration options are: Host name. The hostname of your remote (target) server, e.g. ftp.example.com. Port. The TCP/IP port of your remote host's FTP server. It's usually 21. User name. The username you have to use to connect to the remote FTP server. Password. The password you have to use to connect to the remote FTP server. Initial directory. The absolute FTP directory to your remote site's location where your site will be cloned to. This is provided by your hosting company. Do not ask us to tell you what you should put in here because we can't possibly know. There is an easy way to find it, though. Connect to your target FTP server with FileZilla. Navigate to the web server's root (usually it's a subdirectory named httpdocs, htdocs, public_html, http_docs or www). Above the righthand folder pane you will see a text box with a path. Copy this path and paste it to Akeeba Backup's setting. Use FTP over SSL. If your remote server supports secure FTP connections over SSL (they have to be implicit SSL; explicit SSL - a.k.a. FTPES - is not supported), you can enable this feature. In such a case you will most probably have to change the port. Please ask your hosting company to provide you with more information on whether they support this feature and what port you should use. You must note that this feature must also be supported by your originating server as well. Use passive mode. Normally you should enable it, as it is the most common and firewall-safe transfer mode supported by FTP servers. Sometimes, you remote server might require active FTP transfers. In such a case please disable this, but bear in mind that your originating server might not support active FTP transfers, which usually requires tweaking the firewall!
2.3.4.5. DirectSFTP
Important
This feature is only available in the Akeeba Backup Professional edition.
Important
This feature is not meant for everyday users. It is designed for web professionals. If you don't understand the rest of this section, please do not use it. Akeeba Backup is equally useful as a site migration tool without using DirectSFTP. The DirectSFTP engine allows power users to directly export a website from one server to another, without the need to download the backup file to their PC, upload it and extract it on the other server. In order to do so, instead of backing up to an archive, it directly writes the backed up files to the remote server using SFTP (Secure File Transfer Protocol over SSH), hence the name. Do note that when using the DirectSFTP engine, the post-processing engine will not run, as there is no archive produced. In a nutshell, when this option is activated, Akeeba Backup operates as usual, backing up your database and files. Instead of putting the site files, installer files and database dump inside a backup archive, it transfers them to a remote server using SFTP. You can then visit the installation URL on the remote server to complete the site transfer progress.
Warning
This is considered an advanced feature. Since there are many things which might go wrong in the process and due to the fact that the success of the operation depends on the server configuration of both the originating and target servers, you are advised not to use it unless you know what you're doing.
33
Moreover, bear in mind that the target server must not contain any files! If it does, it may not be possible to overwrite them, leading to an incomplete site transfer. Your originating server (where you are backing up from) must a. support PHP's SSH2 extensions, b. allow outbound TCP/IP connections to your target host's SSH port and c. not have the SFTP functions of the SSH2 extension blocked. Please note that some hosts apply a firewall policy which requires you to specify to which hosts your server can connect. In such a case you might need to allow communication to your remote host. Moreover, your target host must support SFTP connections using a username and password for authentication. If your remote server only allows authentication using certificate files it won't work with Akeeba Backup's DirectSFTP feature. Normally, remote SFTP connections consume a lot of time, therefore DirectSFTP is very prone to time-outs. Theoretically, Akeeba Backup can automatically estimate the time required for transferring each file and avoid timing out. However, this is not always technically possible. In such a case you might want to lower the maximum execution time allowance and bias in the Configuration. Do note that large files have to be transferred in a single step, as most PHP and SFTP configuration combinations disallow resuming uploads (chunked uploads). This means that a very large file, or a very large database dump may cause the process to fail with a timeout error.
The available configuration options are: Host name. The hostname of your remote (target) server, e.g. sftp.example.com. Port. The TCP/IP port of your remote host's FTP server. It's usually 22. User name. The username you have to use to connect to the remote SFTP server. Password. The password you have to use to connect to the remote SFTP server. Initial directory. The absolute FTP directory to your remote site's location where your site will be cloned to. This is provided by your hosting company. Do not ask us to tell you what you should put in here because we can't possibly know. There is an easy way to find it, though. Connect to your target FTP server with FileZilla. Navigate to the web server's root (usually it's a subdirectory named httpdocs, htdocs, public_html, http_docs or www). Above the righthand folder pane you will see a text box with a path. Copy this path and paste it to Akeeba Backup's setting.
34
This handy feature is available only in Akeeba Backup Professional. It will send you the backup archive parts as file attachments to your email address. That's right! No need to worry about downloading your backup archives, they will be emailed to you. That said, beware of the restrictions:
Warning
You MUST set the Part size for split archives setting of the Archiver engine to a value between 1-10 Megabytes. If you choose a big value (or leave the default value of 0, which means that no split archives will be generated) you run the risks of the process timing out, a memory outage error to occur or, finally, your email servers not being able to cope with the attachment size, dropping the email. The available configuration settings for this engine, accessed by pressing the Configure... button next to it, are: Process each part immediately If you enable this, each backup part will be emailed to you as soon as it's ready. This is useful if you are low on disk space (disk quota) when used in conjunction with Delete archive after processing. When using this feature we suggest having 10Mb plus the size of your part for split archives free in your account. The drawback with enabling this option is that if the email fails, the backup fails. If you don't enable this option, the email process will take place after the backup is complete and finalized. This ensures that if the email process fails a valid backup will still be stored on your server. The drawback is that it requires more available disk space. If enabled, the archive files will be removed from your server after they are emailed to you. Very useful to conserve disk space and practice the good security measure of not leaving your backups on your server. The email address where you want your backups sent to. When used with GMail or other webmail services it can provide a cheap alternative to proper cloud storage. A subject for the email you'll receive. You can leave it blank if you want to use the default. However, we suggest using something descriptive, i.e. your site's name and the description of the backup profile.
Email address
Email subject
35
The required settings for this engine are: Process each part immediately If you enable this, each backup part will be uploaded as soon as it's ready. This is useful if you are low on disk space (disk quota) when used in conjunction with Delete archive after processing. When using this feature we suggest having 10Mb plus the size of your part for split archives free in your account. The drawback with enabling this option is that if the upload fails, the backup fails. If you don't enable this option, the upload process will take place after the backup is complete and finalized. This ensures that if the upload process fails a valid backup will still be stored on your server. The drawback is that it requires more available disk space. If enabled, the archive files will be removed from your server after they are uploaded to Amazon S3. Your Amazon S3 Access Key Your Amazon S3 Secret Key If enabled, an encrypted connection will be used to upload your archives to Amazon S3. In this case the upload will take longer, as encryption - what SSL does - is a resource intensive operation. You may have to lower your part size. The name of your Amazon S3 bucket where your files will be stored in. The bucket must be already created; Akeeba Backup can not create buckets.
Delete archive after processing Access Key Secret Key Use SSL
Bucket
Warning
DO NOT CREATE BUCKETS WITH NAMES CONTAINING UPPERCASE LETTERS. AMAZON CLEARLY WARNS AGAINST DOING THAT. If you use a bucket with uppercase letters in its name it is very possible that Akeeba Backup will not be able to upload anything to it. More specifically, it seems that if your web server is located in Europe, you will be unable to use a bucket with uppercase letters in its name. If your server is in the US, you will most likely be able to use such a bucket. Your mileage may vary. Please note that this is a limitation imposed by Amazon itself. It is not something we can "fix" in Akeeba Backup (I did spent 5 hours on Christmas trying to find a workaround, with no success, because it's a limitation by Amazon). If this is the case with your site, please DO NOT ask for support; simply create a new bucket whose name only consists of lowercase unaccented latin characters (a-z), numbers (0-9), dashes and dots. Directory The directory inside your Amazon S3 bucket where your files will be stored in. If you want to use subdirectories, you have to use a forward slash, e.g. directory/subdirectory/subsubdirectory.
36
Tip
You can use Akeeba Backup's "variables" in the directory name in order to create it dynamically. These are the same variables as what you can use in the archive name, i.e. [DATE], [TIME], [HOST], [RANDOM]. Disable multipart uploads Since Akeeba Backup 3.2, uploads to Amazon S3 of parts over 5Mb use Amazon's new multi-part upload feature. This allows Akeeba Backup to upload the backup archive in 5Mb chunks and then ask Amazon S3 to glue them together in one big file. However, some hosts time out while uploading archives using this method. In that case it's preferable to use a relatively small Part Size for Split Archive setting (around 10-20Mb, your mileage may vary) and upload the entire archive part in one go. Enabling this option ensures that, no matter how big or small your Part Size for Split Archives setting is, the upload of the backup archive happens in one go. You MUST use it if you get RequestTimeout warnings while Akeeba Backup is trying to upload the backup archives to Amazon S3.
Regarding the naming of buckets and directories, you have to be aware of the Amazon S3 rules (these rules are a simplified form of the list S3Fox presents you with when you try to create a new bucket): Folder names can not contain backward slashes (\). They are invalid characters. Bucket names can only contain lowercase letters, numbers, periods (.) and dashes (-). Accented characters, international characters, underscores and other punctuation marks are illegal characters.
Important
Even if you created a bucket using uppercase letters, you must type its name with lowercase letters. Amazon S3 automatically converts the bucket name to all-lowercase. Also note that, as stated above, you may NOT be able to use at all under some circumstances. Generally, your should avoid using uppercase letters. Bucket names must start with a number or a letter. Bucket names must be 3 to 63 characters long. Bucket names can't be in an IP format, e.g. 192.168.1.2 Bucket names can't end with a dash. Bucket names can't have an adjacent dot and dash. For example, both my.-bucket and my-.bucket are invalid. If any - or all - of those rules are broken, you'll end up with error messages that Akeeba Backup couldn't connect to S3, that the calculated signature is wrong or that the bucket does not exist. This is normal and expected behaviour, as Amazon S3 drops the connection when it encounters invalid bucket or directory names.
37
than PHP's time limit restriction so as to avoid timing out. Since the available bandwidth is finite and constant, the only thing we can reduce in order to avoid timeouts is the file size. To this end, you have to produce split archives, by setting the part size for archive splitting in ZIP's or JPA's engine configuration pane. The suggested values are between 10Mb and 20Mb. Most servers have a bandwidth cap of 20Mbits, which equals to roughly 2Mb/sec (1 byte is 8 bits, plus there's some traffic overhead, lost packets, etc). With a time limit of 10 seconds, we can upload at most 2 Mb/sec * 10 sec = 20Mb without timing out. If you get timeouts during post-processing lower the part size.
Tip
If you use the native CRON mode (backup.php), there is usually no time limit - or there is a very high time limit in the area of 3 minutes or so. Ask your host about it. Setting up a profile for use only with the native CRON mode allows you to increase the part size and reduce the number of parts a complete backup consists of.
Warning
You can not upload files over 150Mb to Dropbox. This is a limitation imposed by Dropbox. Use of a greater Part Size for Split Archives will cause a transfer error. We regret to inform you that there is no workaround to this. Since Akeeba Backup 3.4, we are using the official Dropbox RESTful API. This is more stable than our earlier Dropbox implementation.
The required settings for this engine are: Process each part immediately If you enable this, each backup part will be uploaded as soon as it's ready. This is useful if you are low on disk space (disk quota) when used in conjunction with Delete archive after processing. When using this feature we suggest having 10Mb plus the size of your part for split archives free in your account. The drawback with enabling this option is that if the upload fails, the backup fails. If you don't enable this option, the upload process will take place after the backup is complete and finalized. This ensures that if the upload process fails a valid backup will still be stored on your server. The drawback is that it requires more available disk space. If enabled, the archive files will be removed from your server after they are uploaded to Dropbox. Before you can use Akeeba Backup with Dropbox you have to "link" your Dropbox account with your Akeeba Backup installation. This allows Akeeba Backup to access your Dropbox account without you storing the username (email) and password to Akeeba Backup. The authentication is a simple, two step process. First click on the Authentication - Step 1 button. A popup window opens, allowing you to log in to your Dropbox account. Once you log in successfully, close the popup. Then, click on the Authentication - Step 2 button. It should show a message dialog reading OK!. This means that your Akeeba Backup installation and Dropbox account are now linked. The directory inside your Dropbox account where your files will be stored in. If you want to use subdirectories, you have to use a forward slash, e.g. /directory/subdirectory/subsubdirectory.
Directory
38
brand, and is considered one of the most dependable ones. Its cheap prices make it ideal for applications where storing large quantities of backup archives is more likely than downloading them. Before you begin, you should know the limitations. As most cloud storage providers, CloudFiles does not allow appending to files, so the archive has to be transferred in a single step. PHP has a time limit restriction we can't overlook. The time required to upload a file to CloudFiles equals the size of the file divided by the available bandwidth. We want to time to upload a file to be less than PHP's time limit restriction so as to avoid timing out. Since the available bandwidth is finite and constant, the only thing we can reduce in order to avoid timeouts is the file size. To this end, you have to produce split archives, by setting the part size for archive splitting in ZIP's or JPA's engine configuration pane. The suggested values are between 10Mb and 20Mb. Most servers have a bandwidth cap of 20Mbits, which equals to roughly 2Mb/sec (1 byte is 8 bits, plus there's some traffic overhead, lost packets, etc). With a time limit of 10 seconds, we can upload at most 2 Mb/sec * 10 sec = 20Mb without timing out. If you get timeouts during postprocessing lower the part size.
Tip
If you use the native CRON mode (backup.php), there is usually no time limit - or there is a very high time limit in the area of 3 minutes or so. Ask your host about it. Setting up a profile for use only with the native CRON mode allows you to increase the part size and reduce the number of parts a complete backup consists of. Akeeba Backup is using the very stable official PHP bindings for CloudFiles access, which is unlikely to stop working for the foreseeable future. As a result, we consider it a good candidate for backup archives storage.
The required settings for this engine are: Process each part immediately If you enable this, each backup part will be uploaded as soon as it's ready. This is useful if you are low on disk space (disk quota) when used in conjunction with Delete archive after processing. When using this feature we suggest having 10Mb plus the size of your part for split archives free in your account. The drawback with enabling this option is that if the upload fails, the backup fails. If you don't enable this option, the upload process will take place after the backup is complete and finalized. This ensures that if the upload process fails a valid backup will still be stored on your server. The drawback is that it requires more available disk space. If enabled, the archive files will be removed from your server after they are uploaded to CloudFiles. The username assigned to you by the RackSpace CloudFiles service The API Key found in your CloudFiles account The name of the CloudFiles container where you want to store your archives in. The directory inside your CloudFiles container where your files will be stored in. If you want to use subdirectories, you have to use a forward slash, e.g. /directory/subdirectory/subsubdirectory. Leave blank to store the files on the container's root.
39
crosoft is reasonably priced (the cost is very close to CloudFiles) and quite fast, with lots of local endpoints around the globe.
Warning
Azure, unlike other cloud storage providers, doesn't support storing files over 64Mb without resorting to proprietary hacks. As a result you MUST use a part size for archive splitting lower than 64Mb at all times. Failure to do so might cause your backup uploads to fail. Before you begin, you should know the limitations. As most cloud storage providers, Azure does not allow appending to files, so the archive has to be transferred in a single step. PHP has a time limit restriction we can't overlook. The time required to upload a file to CloudFiles equals the size of the file divided by the available bandwidth. We want to time to upload a file to be less than PHP's time limit restriction so as to avoid timing out. Since the available bandwidth is finite and constant, the only thing we can reduce in order to avoid timeouts is the file size. To this end, you have to produce split archives, by setting the part size for archive splitting in ZIP's or JPA's engine configuration pane. The suggested values are between 10Mb and 20Mb. Most servers have a bandwidth cap of 20Mbits, which equals to roughly 2Mb/sec (1 byte is 8 bits, plus there's some traffic overhead, lost packets, etc). With a time limit of 10 seconds, we can upload at most 2 Mb/sec * 10 sec = 20Mb without timing out. If you get timeouts during post-processing lower the part size.
Tip
If you use the native CRON mode (backup.php), there is usually no time limit - or there is a very high time limit in the area of 3 minutes or so. Ask your host about it. Setting up a profile for use only with the native CRON mode allows you to increase the part size and reduce the number of parts a complete backup consists of. Akeeba Backup is using the very stable official PHP bindings for Microsoft Windows Azure access, which is unlikely to stop working for the foreseeable future. As a result, we consider it a good candidate for backup archives storage.
The required settings for this engine are: Process each part immediately If you enable this, each backup part will be uploaded as soon as it's ready. This is useful if you are low on disk space (disk quota) when used in conjunction with Delete archive after processing. When using this feature we suggest having 10Mb plus the size of your part for split archives free in your account. The drawback with enabling this option is that if the upload fails, the backup fails. If you don't enable this option, the upload process will take place after the backup is complete and finalized. This ensures that if the upload process fails a valid backup will still be stored on your server. The drawback is that it requires more available disk space. If enabled, the archive files will be removed from your server after they are uploaded to CloudFiles. The account name for your Microsoft Azure subscription. If your endpoint looks like foobar.blobl.core.windows.net then your account name is foobar. You can find this Key in account page. It is lengthy and always ends in double equals marks.
The name of the Azure container where you want to store your archives in.
40
Directory
The directory inside your Azure container where your files will be stored in. If you want to use subdirectories, you have to use a forward slash, e.g. /directory/subdirectory/subsubdirectory. Leave blank to store the files on the container's root.
The available configuration options are: Process each part immediately If you enable this, each backup part will be uploaded as soon as it's ready. This is useful if you are low on disk space (disk quota) when used in conjunction with Delete archive after processing. When using this feature we suggest having 10Mb plus the size of your part for split archives free in your account. The drawback with enabling this option is that if the upload fails, the backup fails. If you don't enable this option, the upload process will take place after the backup is complete and finalized. This ensures that if the upload process fails a valid backup will still be stored on your server. The drawback is that it requires more available disk space. If enabled, the archive files will be removed from your server after they are uploaded to the FTP server. The hostname of your remote (target) server, e.g. ftp.example.com. The TCP/IP port of your remote host's FTP server. It's usually 21. The username you have to use to connect to the remote FTP server.
41
The password you have to use to connect to the remote FTP server. The absolute FTP directory to your remote site's location where your archives will be stored. This is provided by your hosting company. Do not ask us to tell you what you should put in here because we can't possibly know. There is an easy way to find it, though. Connect to your target FTP server with FileZilla. Navigate to the intended directory. Above the right-hand folder pane you will see a text box with a path. Copy this path and paste it to Akeeba Backup's setting. Alternatively, use the button next to the edit box to launch an interactive FTP folder browser which allows you to select the directory visually.
If your remote server supports secure FTP connections over SSL (they have to be implicit SSL; explicit SSL - a.k.a. FTPES - is not supported), you can enable this feature. In such a case you will most probably have to change the port. Please ask your hosting company to provide you with more information on whether they support this feature and what port you should use. You must note that this feature must also be supported by your originating server as well. Normally you should enable it, as it is the most common and firewall-safe transfer mode supported by FTP servers. Sometimes, you remote server might require active FTP transfers. In such a case please disable this, but bear in mind that your originating server might not support active FTP transfers, which usually requires tweaking the firewall!
Note
This feature is available only to Akeeba Backup Professional 3.4.b1 and later. Using this engine, you can upload your backup archives to the low-cost Box.net cloud storage service. This is a very good choice for low-budget, small to moderately sized sites. The required settings for this engine are: Process each part immediately If you enable this, each backup part will be uploaded as soon as it's ready. This is useful if you are low on disk space (disk quota) when used in conjunction with Delete archive after processing. When using this feature we suggest having 10Mb plus the size of your part for split archives free in your account. The drawback with enabling this option is that if the upload fails, the backup fails. If you don't enable this option, the upload process will take place after the backup is complete and finalized. This ensures that if the upload process fails a valid backup will still be stored on your server. The drawback is that it requires more available disk space. If enabled, the archive files will be removed from your server after they are uploaded to Box.net.
Before you can use Akeeba Backup with Box.net you have to "link" your Box.net account with your Akeeba Backup installation. This allows Akeeba Backup to access your box.net account without you storing the username (email) and password to Akeeba Backup. The authentication is a simple, two step process. First click on the Authentication - Step 1 button. A popup window opens, allowing you to log in to your Box.net account. Once you log in successfully, close the popup. Then, click on the Authentication - Step 2 button. It should show a message dialog reading OK!. This means that your Akeeba Backup installation and Box.net account are now linked. The Box.net folder where the backup files will be stored. Please note that this list is dynamically read from your Box.net account after you've linked Akeeba Backup with it (using the Authentication procedure outlined above). After linking Akeeba Backup with Box.net you have to click on
Folder
42
the Refresh button to fetch the list of directories in your Box.net account. After 5-10 few seconds the drop-down will be populated with a list of your directories in Box.net. Select the one you want your backups to be stored in.
That being said, the initial backup page lets you define a short description (required) and an optional lengthy comment for this backup attempt. This information will be presented to you in the backup administration page to help you identify different backups. The default description contains the date and time of backup. Both the description and comment will be stored in a file named README.html inside your archive's installation directory, but only if the backup mode is full backup. Since Akeeba Backup 3.1.b1 both the description and the comment support Akeeba Backup's file naming "variables", e.g. [SITE], [DATE] and [TIME]. These variables are documented in the Output Directory configuration option's description. It goes without saying, but these variables can also be used in the case of automated backups, e.g. CRONmode backups. Whenever you are ready to start the backup, just click the Backup Now button. Do note that above the description field, there might be one or more warnings. These are the same warnings appearing in the Control Panel's right-hand pane and act as a reminder.
Important
Default output directory is in use is not an error message! It's just a reminder that the default output directory is a well known location on your site. In theory, a malicious user could figure out the name of the backup archive and download it directly over the web. In order to deter that, Akeeba Backup places a .htaccess file (compatible with virtually all Apache installations) and a web.config file (compatible only with IIS 7) to deter that. If you are using a host which doesn't support the directives of those two files, the contents of that directory may be inadvertently available over the web to malicious users. If in doubt, ask your host. Do not ask us. We can't know this information; we haven't set up your host's server. Our recommendation: consult your host about the proper way to create a backup output directory above your site's root and make it writable by PHP. Then, use that directory as the Output Directory in all of your backup profiles. This method offers the greatest degree of protection.
43
Once you click on the Backup Now button, the backup progress page appears. You must not navigate away from this page or close your browser window until the backup is complete. Otherwise, the backup process will be interrupted and no backup file will be created (or you'll end up with an incomplete backup file). Akeeba Backup disables the Joomla! menu during backup to prevent accidentally switching to a different page. If, however, the timeout bar (the second one which looks as a progress bar and changes its color from green to yellow to red) fills up, you can safely assume that your backup has crashed. Only in this case you should navigate away from the backup page and take a look at the log file for any error messages. Always try different configuration options - especially toying with the minimum execution time - before submitting a bug report on our support forum. The backup progress page consists of a large pane. The top section of the pane lists the steps Akeeba Backup has to take in order to complete your backup. Steps in gray background have not been dealt with yet. Steps in green background, featuring a green check mark on the left-hand side, have been successfully completed. The step in yellow background, featuring a blue arrow on the left-hand side, is the one being currently processed. Below that, you will find two lines, called Step/Substep in Akeeba Backup jargon. The first line will show you which table or directory has been backed up until now. This is very important. When the backup crashes, it hasn't crashed on the table or directory you see on the screen! In fact, you can be sure that this table/directory has been successfully backed up. The real problem appears in the log file and this is why we are adamant in asking for a backup log to be posted with your support request. The Substep line below is normally used for messages of lesser importance, such as noting the percentage of a table already completed (especially useful when backing up huge tables) and the name of the archive part which was processed by a data processing engine. The big bar is the overall progress bar and displays an approximation of the backup progress. Do note that during file backup you may see this bar jump back and forth. This is normal and, please, do not report it as a bug. It is exactly how it is supposed to behave. The reason is rather simple. Before your site is backed up, Akeeba Backup doesn't know how many files and directories it contains. As a result, it tries to do an educated guess and display an approximate backup progress. Guesswork is never accurate, which causes some jumping back and forth. Nothing to worry about, your backup is working without a problem. The next thing you see is the "timeout bar". This is not a progress bar. This bar counts the time elapsed while running the current step. Each time a new backup step starts, it resets to zero. The bar changes color from green to yellow to red. Green means that it's within the expected limits. Yellow means that we have exceeded the time we expected to consume, but are still within the configured limits. The red area means that this step is taking substantially more time than we expected. This doesn't mean that your backup is stuck; it may just be network latency or other unexpected issues which delay the server response. Do not consider the backup failed unless you either see an error page, or the timeout bar fills up all the way to the right - which means no server response was received within 3 minutes, which is just too long, therefore the backup has most probably failed. Should a minor (non fatal) error occur, Akeeba Backup displays a new Warnings pane with yellow background. This box holds the warnings which have occurred during the backup process, in chronological order. These are also logged
44
in the Akeeba Backup Debug Log and marked with the WARNING label, that is if your log level is at least Errors and Warnings. Usual causes of warnings are unreadable files and directories. Akeeba Backup regards them as minor errors because, even though the backup process can go through, what you get might be a partial backup which doesn't meet your expectations. In case warnings appear on your screen you are advised to review them and assess their importance.
After the whole process is complete, Akeeba Backup will clean up any temporary files it has created. Akeeba Backup will also clean temporary files and delete incomplete archive files upon detecting a backup failure. By that point, your site backup file has been created. You can now navigate out of the backup page and possibly into the backup administration page, clicking on the handy button which appears below the backup completion message.
I got an "AJAX loading error" when backing up. What should I do? [???] How do I know that my backup archive works? [https://www.akeebabackup.com/documentation/troubleshooter/abtestsupport.html] What happens if I have a backup problem? [https://www.akeebabackup.com/documentation/troubleshooter/abtestsupport.html] How do I get support? [https://www.akeebabackup.com/documentation/troubleshooter/abtestsupport.html]
This page is the single place you can review all your Akeeba Backup backup history, as well as administer the backup files. The bulk of the page consists of a standard Joomla! list table. Each row represents a backup attempt and displays a whole lot of information:
45
Clicking the check box on the leftmost cell of a row selects this backup for an operation to be applied to it. Operations are activated by clicking on tool bar buttons. In case of an operation allowing a single row to be selected, the topmost selected row is considered as the sole selection. Displays the description you have set when you started the backup. In case of frontend backups, this contains the default description which was assigned. If your backup has a comment attached to it, an info icon will also appear. Hovering your mouse over the info icon will show you a preview of that comment. The date when the backup started. The date is expressed in the user's preferred time zone, as it is set in the User Managment page of Joomla! itself.
Description
Start
Note
Backups taken without a logged in user, i.e. remote, front-end and native CRON backups, express the time in the UTC time zone. We can't "fix" that; without a user, Joomla! can't reliably report the time zone. Duration The duration of the backup in hours : minutes : seconds format. This information is not available for failed backups! Indicates the status of the backup and can be one of: OK Obsolete A complete backup whose backup archive is available for download. A complete backup whose backup archive is either deleted, or was overwritten by another backup attempt.
Status
Note
If you move your backup output directory's location, all your previous backups will appear as "Obsolete", even though you might have moved these backup files as well. This is not a bug. Akeeba Backup internally stores the absolute path to the backup files. When you move the output directory its absolute path changes, so Akeeba Backup is unable to locate the old backup files.
Important
If your host uses MySQL 4.0 the status will always appear as Obsolete and you will be unable to download the backup archive through your browser, as the result of limitations of this ancient, obsolete and unsupported MySQL version. You can still use your favorite FTP client to download the backup archives, though. Remote Indicates a complete backup which has been uploaded to remote storage (e.g. Dropbox, Amazon S3, CloudFiles and so on), but it is no longer stored on your server. You can fetch the backup archive backup to your server any time (as long as you haven't manually removed the file from the remote storage) in order to restore it, clicking the Manage Remote Files link on the right-hand column.
46
Note
Not all remote storage engines support fetching back backup archives. Currently, only FTP, Amazon S3, CloudFiles and Dropbox support this feature. Pending A backup attempt which is still running. You should not see any such record, unless a backup attempt started while you were loading this page. In this case, you should not navigate to the Control Panel page! Doing so would invalidate the backup and wreck havoc. You have been warned! Another reason to see such an entry is a backup attempt which failed with a PHP fatal error, or which was abruptly interrupted (by the user or a PHP error). In this case, you can safely delete the entry and get rid of the backup file as well. A backup attempt which failed with a catchable error condition.
Failed Origin
Indicates the origin of the backup and can be either frontend for backups originating from the front-end - or remote interface - or backend for backups originating from the back-end (regular backups). Indicates the backup type and can be Full for full site backups (database and files), DB Only for database only backups, Files only for files only backup or Multi DB for multiple databases backup (an archive containing SQL dumps of the main site's database and the defined multiple databases). Displays the numeric identifier of the backup profile used during the backup. It is possible that since then the profile may have been modified or even deleted! The total size of the backup archive in Mb. If the files are not available on your server, i.e. the record is marked as "obsolete" or "remote", the size appears inside parentheses to let you know that the files are not available for download. Displays the name of the backup file, if it is available. Moreover, it will show you the backup download links which allow you to download the backup archive directly to your browser. These links show as "Part 00", "Part 01" and so on. Single-part archives (the default setting on most hosts) will always have only one download link, titled "Part 00". If you have a multi-part archive, you will see as many links as the number of parts generated by Akeeba Backup.
Type
Profile Size
Archive
Important
The only supported and guaranteed method of downloading your backup archives error-free is using FTP/SFTP in BINARY transfer mode. Anything else has the potential to CORRUPT your backup archives. If the file is stored on a remote storage location, e.g. Amazon S3 or a remote FTP server, you will also see a Manage remote stored files link if you are using Akeeba Backup 3.2 or later. Clicking on it will allow you to transfer the files back to your server, download them directly from the remote location or remove them from the remote storage. Clicking on the label of each column allows you to sort the backup entries by the contents of that column. By default, Akeeba Backup sorts the records by Start descending, so that the newest backup attempts will appear on top. Below the header there are three filter boxes. The first one allows you to filter by the backup description. The other two allow you to select a date range so that only backups attempted within this date range will be displayed. You can leave either of these boxes empty to allow an open start or end date respectively.
47
On the top of the page you can find a tool bar with operations buttons. The Delete button will remove the selected backup attempt entries along with their backup archives (if applicable), whereas the Delete Files button will only remove the files (if found on your server). The Restore button (Akeeba Backup Professional only) will run the integrated restoration feature for the selected archive file. This feature can be used to restore your backup archive on the same server you backed up from or even a different server (live transfer of your site to another host!). The Discover and Import Archives (available since Akeeba Backup Professional 3.2) allows you to import any ZIP, JPA or JPS file, located anywhere in your server or Amazon S3, in the Administer Backup Files page in order to restore it on this or any other site.
Note
If you are interested in restoring your backup archives and your site is inaccessible or you're using the free Akeeba Backup Core edition, you can use Akeeba Kickstart or Akeeba eXtract Wizard to extract the archive and restore it on their server. The procedure is detailed in our Quick Start Guide and our Video Tutorials (both found under the Documentation menu item on our site).
Important
Integrated restoration is only supported for Full Site and Files Only backup archives. Trying to use it with any other type of backup files will ultimately result in an error. This feature is available only to Akeeba Backup Professional - the paid version. Users of the Akeeba Backup Core version can follow our video tutorials or Quick Start Guide instructions to easily restore their backups using Kickstart or eXtract Wizard.
The View / Edit Comment button will open a page showing the description and comment of the currently selected backup row. You can freely edit both the description and the comment on that page and save your changes using the Save button. The same page will open if you click on a backup record's description (appearing as a link).
Warning
THE INTEGRATED RESTORATION FEATURE MAY DESTROY YOUR SITE IF YOU ARE NOT CAREFUL.
48
Remember that you are OVERWRITING your site with the one contained in the backup archive. Do not do that on a live site unless it is absolutely necessary, i.e. you have already destroyed something vital in your site and want to revert to a "last known good" state. As with any backup restoration method, practise on a local testing server first. Don't push your luck by trying a potentially dangerous procedure you are unfamiliar with on a live server. Many sites have been destroyed by human error, augmented by the "bliss of ignorance" effect. Never, ever, under any circumstances, attempt a restoration on a live site unless you are familiar with the procedure and confident of all the steps you take. That said, we trust our own software and use it on our sites. Do note that we are extremely familiar with the procedure and extremely careful when doing restorations. This message tries to excessively - if that's ever possible - stress the point that you must be careful and that the best method to achieve that is practising on a local testing server first. The integrated restoration feature allows you to easily restore a previous backup directly on your server, as long as your backup archive still exists on your server of course. The whole idea behind this feature is that it is not necessary to manually download Kickstart, place it in your site's root and move the backup archive from the output directory to the site's root in order to perform the restoration. Instead, the integrated restoration feature takes care of extracting your backup archive directly from the backup output folder into your site's root and then allow you to run the embedded installer (Akeeba Backup Installer) to complete the restoration procedure. The communication between your browser and the archive extraction script is encrypted with the AES128 (Rijndael) encryption method, using a random key produced as soon as you initiate the restoration of a backup archive. This ensures that a malicious user can't exploit the restoration script to mischievously extract your backup archive in your site's root with the intent to steal your database password. The encryption/decryption algorithm is implemented with standard PHP and Javascript code, eliminating the need for third party cryptography libraries and ensuring that under no circumstances unencrypted data will be exchanged between the browser and the server.
When you first start the integrated restoration feature, you are presented with a few settings. The first setting, appearing above the Start Restoration button, determines how the file extraction will be performed. The two available options are: Write directly to files Use FTP uploads All files will be extracted directly to their final location using direct PHP file writes. If your permissions settings do not allow some files or directories to be created/overwritten the process will fail and your site will be left in a half-restored state. Using this method, each file is first extracted to the temporary directory specified by the current profile and then moved to its final location using FTP. This is a "best effort" approach and can work with most servers. Do note that only unencrypted FTP (plain FTP) is supported. If you choose this option, you'll also have to specify the FTP connection settings.
49
You MUST use this option if you want to restore your backup archive to a different site than the one you are in right now. Just select this option and provide the FTP connection details to the other site before clicking on Start Restoration. The default mode is writing directly to files, unless your site's Global Configuration indicates that the FTP layer should be used. In the event that a partial restoration happens, your site will be left in a semi-restored state. Trying to access it will pop up the restoration script (Akeeba Backup Installer, a.k.a. ABI). If you want to retry the restoration using different settings, please remove the installation directory from your site's root manually, for example using FTP, before trying to access your site's administrator back-end. If you chose to use the FTP mode, there are some connection settings you have to take care of. Do note that they are filled in with Joomla!'s FTP layer settings by default. Unless you chose not to store your FTP password in Joomla!'s configuration or if you have not configured the FTP layer yet, there is no need to change them. The settings are: Host name Port User name Password Initial directory The host name of your site's FTP server, without the protocol. For example, ftp.example.com is valid, ftp://ftp.example.com is invalid. The TCP/IP port of your site's FTP server. The default and standard value is 21. Please only use a different setting if your host explicitly specifies a non-standard port. The username used to connect to the FTP server. The password used to connect to the FTP server. The FTP directory to your web site's root. This is not the same as the filesystem directory and can't be determined automatically. The easiest way to determine it is to connect to your site using your favourite FTP client, such as FileZilla. Navigate inside your web site's root directory. You'll know you are there when you see the file configuration.php and directories such as administrator, component, language, includes, cache and xmlrpc in that directory. Copy (in FileZilla it appears on the right hand column, above the directory tree) and paste that path in Akeeba Backup's setting. Alternatively, click on the Browse button next to the text box to launch an interactive FTP directory browser. Navigate into the directory where you want your files to be restored and click on the OK button. Test FTP connection Clicking on this button will tell you if the FTP connection could be established or not. If the connection is not successful you should not proceed with a restoration in FTP mode as it will fail immediately.
The whole process is fully automated, so there is not much to tell you about it. However, you must not that in order for the restoration procedure to work properly you must take care of the following: 1. This feature is directly calling the administrator/components/com_akeeba/restore.php script. If you have a server-side protection, i.e. .htaccess rules, or permissions settings which prevent this file from being called directly the process will fail. Security note: The restore.php file is of no use to potential hackers. In order for it to work at all, it requires the restoration.php file (more on that on the next point of this list) to load. Even then, it expects encrypted data with a key which is not predefined and is only known to the restore.php script and the integrated restoration page of Akeeba Backup. As a result, it can't be used as a potential attack vector. 2. Before the restoration begins, Akeeba Backup needs to create the administrator/components/com_akeeba/restoration.php file with all the archive extraction setup parameters. It is intelli-
50
gent enough to use Joomla!'s FTP mode if it is enabled so as to overcome any permission problems, but you are ultimately responsible for ensuring that the permission settings are adequate for Akeeba Backup to create this file. If you have disabled Joomla!'s FTP layer, the permissions of the administrator/components/com_akeeba directory should be 0777 for the integrated restoration to work, or 0755 on hosts which use suPHP. If you are using Joomla!'s FTP layer and it was active when you were installing Akeeba Backup, you'll need to give this directory at least 0744 permissions, but you may have to manually remove restoration.php (but NOT restore.php!!!) after the site restoration is over. 3. When the extraction of the backup archive finishes, you will be automatically forwarded to the Akeeba Backup Installer page on a new tab or window. DO NOT CLOSE THE INTEGRATED RESTORATION PAGE'S TAB/ WINDOW! After you have competed the Akeeba Backup Installer process you are supposed to return to the Integrated Restoration page and click on the Finalize button to: remove the installation directory from your site's root, and remove the administrator/components/com_akeeba/restoration.php setup file to nullify the, already non-existent, potential risk of a malicious user abusing this script. 4. If you are restoring to a remote server, the previous step will result in a 404 page. Just point your browser to http://www.yoursite.com/installation/index.php (where www.yoursite.com is the domain name of the site you are restoring to) to access the restoration script. After finishing the restoration procedure, do NOT click the Finalize button. Instead, use your favorite FTP client to remove the installation directory from the site you were restoring to and rename any htaccess.bak file back to .htaccess.
51
The Fetch back to server button will automatically download the backup archive from the remote location and store it again on your server. This allows you to easily import backup archives stored on a remote location back to your server's storage so that you can easily restore them on the same or a different site. If you are using S3, please make sure that the user credentials you have supplied have enough privileges for the files to be downloaded (i.e. they don't grant write-only access to the bucket). Also make sure that you have adequate free disk space on your server for the operation to complete. The Delete button will permanently delete the archives from the remote storage. There is no confirmation. Once you click this button, your remotely stored files will be removed. Finally, there are links under the Download to your desktop header. Clicking on them will instruct your browser to download the respective backup archive's part directly to your PC. Currently, only Amazon S3, CloudFiles, Dropbox and remote FTP support this feature. Do note that the backup archives are transferred directly from the remote storage to your PC. They are not stored to your site's server. If you want to store them to your server, use the Fetch back to server button instead. If none of the above options are available, Akeeba Backup will display an error message. In that case, just close the modal dialog. After finishing your remote files administration, please close the modal dialog by clicking on the X button on its topright corner and reload the Administer Backup Files page. Until you reload the page the changes you made WILL NOT be visible. This is not a bug, it is the way it is meant to be.
52
better off doing that from inside Akeeba Backup itself. In order to accommodate for their needs, we introduced the Discover and Import Archives features in Akeeba Backup 3.2. This feature allows you to automatically find and import archives stored anywhere on your account. This means that you can upload backup archives anywhere in your site's folder structure, or even on a private off-site directory and Akeeba Backup will be able to import them. All backup archives are imported as backup records of the default backup profile (profile with ID #1) and can be restored just like any other backup archive. In order to launch this feature, go to the Administer Backup Files page and click on the Discover and import archives button on the toolbar. A new page appears which lets you select a directory.
Tip
Since Akeeba Backup 3.4.a1 you have the option to import archives from Amazon S3. Click the link directly above the directory selection box. It will take you to a slightly different page where you can enter the connection credentials to your S3 account and allow you to browse for ZIP and JPA files to import.
Use the Browse... button to open an interactive folder browser in a modal dialog. Navigate to the directory which contains the uploaded backup archives and click on the Use button. The dialog closes and you can now click on the Scan for files button to let Akeeba Backup search for backup archives inside that directory. You are presented with a new page, listing the discovered backup archives.
Select the backup archive you want to import by clicking on them. If you want to select multiple files, Control-click (Windows, Linux) or Command-click (Mac OS X) the archive you want to import. After that, click on the Import the files button. After a short while Akeeba Backup takes you back to the Control Panel page with a message that the import operation completed successfully. You can now click on the Administer Backup Files button to view the newly imported backup archives. You can now download or restore the imported backup archives.
53
The first page allows you to select an origin. Backups attempted using the Joomla! administrative back-end belong to the Backend origin. The Frontend origin applies to backup archives taken with the front-end backup method (also referred to as legacy CRON in our documentation) or using the altbackup.php script. The Command Line origin applies only to backups taken with the backup.php script file of the Professional release. The XML-RPC origin applies to backups taken with Akeeba Remote Control up to version 3.x. Finally, the JSON API origin applies to backups taken with Akeeba Remote Control 4.x or later.
Tip
If you just tried taking a backup using Akeeba Backup's interface, please select the Backend option from the drop-down. This takes you to the View Log visualization page.
If you wish to ask for support, you must download the raw log (a text file). Just click on the download button above the log viewer. Do not copy and paste the text appearing in the log viewer. If you do that, you will lose a day as we're going to tell you to download the raw log, ZIP it and attach it to your next post. Once again, please DO NOT copy and paste text. We absolutely and beyond any doubt need the raw log file in order to support you. Help us help you so that we can solve your issues as soon as possible.
Warning
When asking for support, make sure that the Log Level was set to "All Information and Debug" in the Basic section of the Configuration page before backing up. Otherwise the log will be useless in supporting you. The bulk of this page is the log visualization box. Each line is preceded by a time stamp, in the format YYMMDD hh:mm:ss (that's year, month, date with two digits, a space and time in 24-hour format). Each line is colour coded, for your convenience. Debug information is in smaller, grey type. Normal information is in black type. Warnings appear in bold yellow letters. It is important to read them as they convey information about skipped directories or other things that will be missing from the backup archive. If any errors occurred, these appear in bold red type.
54
Whenever you report bugs, all of this information is absolutely necessary. In order to reveal as little sensitive information as possible, whenever a file path has to be logged, your site's root folder is replaced with the string '<root>'. Keep this in mind when reading warnings and errors.
Important
The following options apply to back-end backups only. Front-end backups, including legacy front-end CRON jobs, remote backups and Lite Mode backups, are controlled by means of the Secret Word you define in the Component Parameters page. These backup modes are not controlled by the access control settings because they do not require a user to be logged in to take a backup; they only require knowledge of the Secret Word.
Please note that this setting has precedence over the per-user ACL. This means that if you set this setting to Super Administrator, an Administrator will not be able to use Akeeba Backup even if you grant him all permissions in the per-user ACL settings. The second level of access control is per-user ACL. By default Super Adminsitrator can do everything, Administrators can backup and download backup archives and Managers can only perform a backup but not download backup archives or configure the component. This feature allows you to have fine grained control over what each user can and can not do. To access it go to Components, Akeeba Backup and click on the Access Control button. You will see a list with all users granted back-end access (Managers, Administrators and Super Administrators). On each row, you will see the following columns: Username Group The username this row applies to Which user group (Manager, Administrator, Super Administrator) this user belongs to
55
Backup
A green check means that the user can use the Backup Now button to take a new backup. A white X in red background means he has no access to that feature. Click on the icon to toggle between the two states. A green check means that the user can use the download links in the Administer Backup Files page to download the backup archives. If you are using Akeeba Backup Professional, a user with the Download privilege will also be able to download or delete files from a remote storage location (e.g. Amazon S3). A white X in red background means he has no access to that feature. Click on the icon to toggle between the two states. A green check means that the user can use all of the configuration pages of Akeeba Backup, including filter pages, to modify the backup settings. A white X in red background means he has no access to that feature. Click on the icon to toggle between the two states.
Download
Configure
Setting up a backup operator is trivial: make sure that the user only has the Backup privilege (green check), whereas all of the other options are disabled. Similarly, to allow a user backup and restore a site but not touch the configuration settings just give him the Backup and Download privileges. The power is yours!
2.7.2. Joomla! 1.6, 1.7, 2.x and other Joomla! 1.6/1.7/2.x distributions
Joomla! 1.6 and later comes with a very powerful and somewhat complex ACL system on its own. Akeeba Backup is designed to make full use of it ever since the early 3.1.x releases. In order to access the ACL setup, go to Components, Akeeba Backup and click on the Component Parameters button. Then, click on the Permissions tab. Each group can be setup with the following privileges: Configure (the one on top) Access Component Backup Now Configure (the one towards the bottom) Download Allows access to Component Parameters button. This is a core Joomla! privilege. Self explanatory. If a user doesn't have this privilege, he won't be able to access the component! This is a core Joomla! privilege. The user can use the Backup Now button to take a new backup. This is a privilege specific to Akeeba Backup. The user can use all of the configuration pages of Akeeba Backup, including filter pages, to modify the backup settings. This is a privilege specific to Akeeba Backup; it has nothing to do with the first "Configure" item on that list. The user can use the download links in the Administer Backup Files page to download the backup archives. If you are using Akeeba Backup Professional, a user with the Download privilege will also be able to download or delete files from a remote storage location (e.g. Amazon S3). This is a privilege specific to Akeeba Backup.
We won't go into more details regarding the ACL setup on Joomla! 1.6. If you want more information about how the ACL system works in Joomla! 1.6, please consult its documentation or ask on the Joomla! forums.
Important
While the Site Transfer Wizard may be useful in transferring a site to another server, it is neither the optimal nor the only way. In fact, you could just as well back your site up, move the backup archive to the new server
56
and use Kickstart to restore it. Yes, it's that easy. The wizard may make this process easier, but it's possible that it doesn't work under some server combinations. It's not a bug, it has to do with the way PHP works and how different FTP servers are configured between hosts. Many times you simply want to move your site between hosts, e.g. from a local or development server back to the live server or move your site from Host A to Host B. Traditionally, this was a multi-step process: take a backup, download it to your local PC, upload it to the live server, upload Kickstart, run Kickstart and finalize the restoration. Since version 2.2 we offer a backup engine called DirectFTP which allows you to take a backup directly to a remote FTP server instead of an archive. This means that you no longer need to download/upload a backup archive or even use Kickstart. By the time the backup is finished, you are able to simply point your browser to the new host and start the restoration. The biggest drawback of this approach was that setting it up was a little difficult for novice users. Our Site Transfer Wizard feature is here to make using that feature dead simple! The Site Transfer Wizard guides you through a series of steps which allow you to define the connection parameters to your remote server and automatically takes care of all the details necessary for moving your site to the new host. It consists of only three simple steps.
Clicking on Next will take you to the next and most important step.
Host name
Port
57
Username
The username used to connect to your remote server. Do note that if your host requires an SSH certificate to connect to their server through SFTP, you will not be able to use SFTP with Akeeba Backup to transfer your site. Our software only supports username/password authentication to the remote server. The password used to connect to your remote server This is the full FTP, FTPS or SFTP directory to your remote site's web root. This may not always be obvious and most likely should not be left blank. You can always connect to your remote site using FileZilla, navigate to the web root directory of your new host and take a look above the right-hand directory pane. You will see a path. Copy it and paste it in this box of the Site Transfer Wizard. For FTP/FTPS connections only. The default behaviour is to use FTP Passive Mode for all site transfers, as it is the only guaranteed way to pass through firewalls. If your remote site requires FTP Active Mode (very rare) uncheck this box. If you are unsure if this is required, please ask your host. Enter the full URL to the remote site, e.g. http://www.example.com/joomla. Please, do not include a trailing slash.
Clicking on Next, Akeeba Backup will try to establish an FTP/FTPS/SFTP connection to your remote host and upload a small file named akeeba_connection_test.png. If that fails, it will let you know about the error which occurred so that you can fix it. If you have entered an incorrect directory, i.e. it doesn't correspond to the location used to store the files accessible through the "URL to the remote site" address, you will also get an error telling you that you have to fix it.
Important
Not all hosts are able to initiate FTP/FTPS/SFTP connections to other servers. The most common limiting factor is a server-side firewall which disallows outbound connections. If you are perfectly sure that your FTP/ FTPS/SFTP connection settings are correct and you still can not connect to your remote site, do not ask us for support. If you do, we'll tell you to read the documentation (this paragraph!). What you have to do instead is to contact your current host and ask them to open their firewall so that you can connect to your new host through FTP/FTPS/SFTP. If you get an error about not being able to change to the requested directory, you have entered the "FTP/FTPS/ SFTP directory to the remote site's root" wrong. Please refer to the section above about how to determine its correct setting. If you get an error reading "Your FTP/FTPS/SFTP directory is not defined correctly. You will be redirected back to the previous page to correct it. If in doubt about what this means, please read our documentation." then you have entered the "FTP/FTPS/SFTP directory to the remote site's root" wrong. Please refer to the section above about how to determine its correct setting. Do not ask for support if you have not read the above and followed all of these instructions. Such requests will be deleted without a reply.
58
writable through FTP/FTPS/SFTP. If you are not sure how to do that, please ask your host for instructions, as the solution is entirely host-specific. When the transfer is complete, you will be forwarded to the restoration script which was uploaded together with your site's files and database dump to the remote server. Follow all of its steps to restore your site's database and configure your site so that it can be used on the remote host. If you end up back on your source site (the one you are transferring from), a blank page or an Internal Server Error page, please use your favourite FTP client (e.g. FileZilla) to rename or remove the .htaccess file from the remote site and reload the page. Do not contact us for support unless you do that first. For your information, it is possible that your .htaccess file contains directives which either have a hardcoded site URL in them or are simply not compatible with your new host. Renaming the file "neutralizes" it and you can access the installation script normally. If your new host is GoDaddy, do note that it may take anywhere from 10 to 30 minutes after you rename .htaccess before the changes take any effect at all! After the restoration is over, click on the "remove the installation directory" link to remove the installation directory from your new host and begin using your site. If that is not possible or throws an error, please use your favourite FTP client (e.g. FileZilla) to manually remove the installation directory and all of its contents from your new host. Please do not ask for support if trying to access your site is causing the installation script to appear again. The solution is to remove the installation directory manually. If, after the restoration, you have any problems accessing the remote site, please refer to these troubleshooting instructions [https://www.akeebabackup.com/documentation/troubleshooter/prbasicts.html] first. Unless you have followed all of them, please do not ask us for support. 99.9% of all post-restoration problems that have ever been reported to our forum are solved by following these simple instructions.
Warning
Do not use this feature to add your site's database. It is automatically added anyway. Doing so will cause errors during the restoration of your site! You have been warned. Do not seek support for this kind of issues.
59
Warning
Do not confuse the term "database" with your Joomla! tables. It is possible that a single database contains tables for the current Joomla! site, tables from a standalone photo gallery script, tables from another Joomla! site on the same server (e.g. a subdomain), tables from a standalone PHPList installation and so forth. As far as Akeeba Backup is concerned, all of those tables exist in the same database. Unless you tell it otherwise, it will backup ALL tables of the database. A common misconception is that if you want to also backup a subdomain running on Joomla! and having its tables inside the same database as the main site, you should add its database a multiple database definition. DO NOT DO THAT, IT WILL MAKE THE RESTORATION FAIL! After all, Akeeba Backup already backs up those tables. Why should you have to back them up a second time?
Warning
If you add an empty database (one which has no tables) it will result in backup errors!
Note
The settings on this page are defined per profile . Make sure you have selected the desired profile in the Control Panel page.
At first, you are presented with a grid view, listing all database definitions. On the left of each entry, there are two icons: The trashcan. Clicking on this icon will remove the current database definition from the backup set. Pencil or Add. Both will open the database definition editor: the former to edit the database definition, the latter to create a new one.
60
The database definition editor opens as a dialog box inside the multiple databases definitions page. The options you can select for each database are: Database driver. You can select which database driver Akeeba Backup will use to connect to the database. Your options are: mysql. This is the regular MySQL connection driver for PHP. It has the widest compatibility, but the lowest performance. mysqli. This is an improved MySQL 5 connection driver. It must be supported by your server in order to work at all. Database server hostname. The host of your database server. Usually it's localhost, but many hosts use something different. If in doubt, ask your host. Database server port. Leave it blank, unless your host has told you to use a non standard port for connecting to his database server. Username. The username of the database user needed to connect to the database. Password. The password of the database user needed to connect to the database. Database name. The name of the database you are connecting to. Prefix. The prefix used in the table name's prefixes. If you leave this blank, you won't be able to assign a different prefix when restoring your database.
Warning
Some hosts use your account name as a prefix for the database and username. This is not the same as the Prefix setting above! In fact, you have to incorporate that account prefix in your database and username values. For example, you're hosted under the account name foobar and you create a database mydata and a user myuser. Your host displays a prefix foobar_ on the left of the edit boxes where you entered the database and user names. This means that your REAL database name is foobar_mydata and your real username is foobar_myuser. This is especially true for accounts hosted in cPanel and Plesk powered hosts. It goes without saying that your password doesn't take a prefix!!! Don't laugh, this question has been already asked in the forum.
61
If in doubt, contact your host. We can't guess the right values for you because we are neither your host nor your host's client (that is, you). If you ask your host to give you the connection information to your database, they must be able to do so. When you think you have all the connection information ready, click on Test Connection. This will check all settings except the Prefix. If the connection test succeeds, it will inform you:
If your connection works properly, it's time to save your changes by clicking the Save button. The top panel will briefly display a "loading" message and the dialog box will go away. That was it, your extra database definition is now saved.
Important
Akeeba Backup will not automatically restore the off-site directories to their original location. Since Akeeba Backup is meant for backing up, restoring and migrating sites to another host we chose not to automatically
62
restore off-site directories, as this would break the migration process. A future version of Akeeba Backup might address this issue more elegantly. We are open to suggestions!
Warning
Under no circumstances should you add your site's root as an off-site directory inclusion! Akeeba Backup already adds the contents of your site's root to the backup set without any manual intervention. If you manually add this directory you will be backing up the same files twice, bloating your backup size - which could in turn lead to backup problems, such as running out of disk space.
At first you are presented with a grid view, listing all the off-site inclusions you may have already added. Next to each row and on the left hand side of it you will find two icons: The trashcan. Clicking on this icon will remove the current directory definition from the backup set. Pencil or Add. Both will toggle the row to edit mode: the former to edit the directory definition, the latter to create a new one.
When a row enters the edit mode, the pencil icon changes to two different icons: The diskette. Clicking on this icon will save any changes you have made. Cancel. Clicking it will abort any changes you have made.
You will also observe that the path to the external directory has also turned to an edit box with a folder icon on its left. You can type in the absolute path to the external directory using the edit box, or click on the folder icon to launch a visual folder browser, much like the one you use to select an output directory in the component's Configuration page. If you choose to use the edit box, you can use the following variables: [SITEROOT] is the absolute path to your site's root [ROOTPARENT] is the absolute path to your site root's parent directory, i.e. one level above your site's root.
63
files, click tracking tables, download log database records and so forth. The exclusion filters allow you to fine tune what should be left out of the backup set.
The normal view of this page consists of three discrete areas. The top area contains the component and page names and two links to switch between the normal and the tabular view modes. The middle area contains two interface elements: The Root Directory drop-down menu. Akeeba Backup can define filters for the site's files or for each of the offsite directories separately. The default selection, [SITEROOT], contains all filters pertaining to the main site's files. If you have defined off-site directories, you can select the appropriate directory from the drop-down list in order to define filters for that directory. The Current directory bread crumb list. It shows the current path relative to the Root directory above. Clicking on a subdirectory allows you to quickly navigate to it. Below that, there is a button to Reset all filters. Clicking it will remove all Files and Directories Filters, for all of the current root's subdirectories. This is useful in case you have messed up with the filters a lot and you need a quick way to revert to the factory default settings. The lower area consists of two panes. Each pane contains rows with icons and text. The icons represent an exclusion type and can have three states: on (yellow background), off (white background), or force enabled (red background). You
64
can toggle between the on and off states by clicking on the icon. The force enabled state means that this exclusion type is active (on) and forcibly enabled by another feature of Akeeba Backup, such as the automatic exclusions discussed above, the regular expressions filters or a programmatic filter (plug-in) by a third-party developer. The left hand pane is a list of subdirectories of the Current directory. Each row consists of: Exclusion. When enabled, the entire directory will be skipped from the backup set. It will be as if this directory never existed on your server. Skip subdirectories. When enabled, the subdirectories of this directory will be skipped from the backup set. It will be as if this directory's subdirectories never existed on your server. Skip files. When enabled, the files inside this directory will be skipped from the backup set. It will be as if the files inside this directory never existed on your server.
The directory name. Clicking on it will load the contents of this directory in both panes and will make this directory current. The right hand pane is a list of files contained inside Current directory. Each row consists of: Exclusion. When enabled, the file will be skipped from the backup set. It will be as if this file never existed on your server.
The file name. The file size. It will be expressed in the unit which is more convenient, i.e. bytes, Kb, Mb or Gb. This enables you to quickly pick very large files within your site, which are usually the ones you'd like to exclude from the backup set.
When you click on the Tabular View link, the page radically changes format. Instead of browser panes, you now have a grid. On the top side of the grid you have the Add new filter buttons: Exclude directory. Completely skips backing up the given subdirectory. Exclude file. Completely skips backing up the given file. Skip subdirectories. Skips backing up all the subdirectories inside the given directory. Skip files. Skips backing up all the files inside the given directory. Each line of the grid displays the following information:
65
The filter type. It can be one of: Exclude directory. Completely skips backing up the given subdirectory. Exclude file. Completely skips backing up the given file. Skip subdirectories. Skips backing up all the subdirectories inside the given directory. Skip files. Skips backing up all the files inside the given directory. Trashcan. When you click it, the filter row will be removed. Pencil. When you click it, the row switches to edit mode
The filter item itself. It is the relative path to the directory or file which the filter row applies to. The path is relative to the Root directory displayed on the selection box on top. When you click on the pencil icon, the filter item becomes an edit box. You can type in the new relative path and then click outside the edit box, or press Tab on your keyboard, to immediately save the changes. There is no way to undo your changes.
The normal view of this page consists of three discrete areas. The top area contains the component and page names and two links to switch between the normal and the tabular view modes. The middle area contains the Current Database drop-down list. Akeeba Backup can define filters for the site's main database or for each of the extra database definitions separately. The default selection, Site's main database, contains all filters pertaining to the main site's database, i.e. the one your Joomla! site runs on. If you have defined extra databases, you can select the appropriate database from the drop-down list in order to define filters for that database. The middle area also contains two quick buttons:
66
Exclude non-core tables. This option automatically filters out the tables whose name doesn't begin with your site's prefix. These are usually tables which do not belong to the current Joomla! installation. However, be warned of the major pitfall! If you host many Joomla! installations on the same database you'll have to use this option every time you add a new extension on any of the other Joomla! sites. Alternatively, you can use the Regular Expressions Database Tables feature of the Professional edition which can be set up to automatically deal with such installations. Reset all filters. Clicking this button will delete all database table filters. The lower area consists of a single pane, showing the contents of the database: tables, views, triggers, stored procedures and functions. Each row represents one database entity and consists of icons and text. The two leftmost icons represent an exclusion type and can have three states: on (yellow background), off (white background), or force enabled (red background). You can toggle between the on and off states by clicking on the icon. The force enabled state means that this exclusion type is active (on) and forcibly enabled by another feature of Akeeba Backup, such as regular expressions filters or simply denote that a specific filter is not applicable to this entity. For example, there is no point skipping dumping the data of a view, or a stored procedure, as they have no data in the sense a table does. The third icon, next to the database entity's name, represents the type of the entity, e.g. table, view, etc. You can hover your mouse over the icon to get a tooltip describing the kind of this entity.
Important
The prefixes of the entities' names appear abstracted. If your site's prefix is jos_ (the default Joomla! setting), the table jos_users will appear as #__users. This is done to help you quickly identify the tables your site runs on. Each row of this pane consists of the following elements: Exclusion icon. If enabled, this database entity will not be backed up at all, i.e. it will be missing from the database dump. Data exclusion icon. If enabled, only the structure of a table will be backed up, but not its contents. This is useful e.g. for banner tracking or log tables. You need to keep their structure so that your site works, but you don't need to back up tens of thousands of historical data rows you can certainly live without.
Entity type icon. Depends on the entity type, e.g. if it's a view, table, procedure, etc. Entity name. The name of the entity, as described above.
When you click on the Tabular View link, the page radically changes format. Instead of a database browser pane, you now have a grid. Above the grid you have the Add new filter buttons:
67
Exclude this. Completely skips backing up the given database entity. Do not backup its contents. Backs up only the structure but not the contents of the given table. Each line of the grid displays the following information: The filter type. It can be one of: Exclude this. Completely skips backing up the given database entity. Do not backup its contents. Backs up only the structure but not the contents of the given table. Trashcan. When you click it, the filter row will be removed. Pencil. When you click it, the row switches to edit mode
The filter item itself. It is the abstracted database entity name which the filter row applies to. When we say "abstracted" we mean that the site's prefix has to be replaced by #__. When you click on the pencil icon, the filter item becomes an edit box. You can type in the new abstracted database entity name and then click outside the edit box, or press Tab on your keyboard, to immediately save the changes. There is no way to undo your changes.
4.3.1. Components
Note
This feature is available only in Akeeba Backup Professional, the paid version of our component The most evident use of the Extension Filters is to exclude components, the essential building blocks of any Joomla!-powered web site.
68
The Components exclusion page presents a list with all installed non-core components. Each component lists its State and the Component name. When the State column contains a green check mark, it means that this module will be included in the backup. A white X in a red circle means that the component will be excluded from the backup set. Clicking on the status icon toggles its state.
Important
Akeeba Backup Professional is unable to automatically identify the database tables used by components. Joomla! enforces no naming standard for components' tables and there is also no standard way to automatically determine which tables are created by which component either. As a result, excluding components' database tables is your responsibility . Do not ask us to automate this process. The only method to do so is to implement a workaround for certain components only. This is not an optimal solution as it would mislead most users into believing that Akeeba Backup Professional can do this for every component they might have installed, which would simply be false.
4.3.2. Modules
Note
This feature is available only in Akeeba Backup Professional, the paid version of our component From this page you can exclude any installed front-end or back-end non core module. The modules are displayed as a flat list spanning three columns.
69
The first column, labelled State , indicates the filtering status of this item. A green check mark, it means that this module will be included in the backup. A white X in a red circle means that the module will be excluded from the backup set. Clicking on the status icon toggles its state. The Module column contains the module's name. The Area column indicates if this is a front-end (labelled as Public front-end ) or a back-end module (labelled as Administrator back-end ). The front-end modules are always listed first.
4.3.3. Plug-ins
Note
This feature is available only in Akeeba Backup Professional, the paid version of our component From this page you can exclude any installed front-end or back-end non core plug-ins. The plug-ins are displayed as a flat list spanning four columns.
The first column, labelled State , indicates the filtering status of this item. A green check mark, it means that this plugin will be included in the backup. A white X in a red circle means that the plug-in will be excluded from the backup set. Clicking on the status icon toggles its state. The Plug-in column contains the plug-in's name. The Type column displays the plug-in type, as reported by Joomla!. The Area column indicates if this is a front-end (labelled as Public front-end ) or a back-end plug-in (labelled as Administrator back-end ). The front-end plug-ins are always listed first.
70
4.3.4. Languages
Note
This feature is available only in Akeeba Backup Professional, the paid version of our component From this page you can exclude any installed, non-default language. This means that each and every language marked as default for the back-end or the front-end will not be listed at all in this page! Languages are displayed in a list spanning three columns.
The first column, labelled State , indicates the filtering status of this item. A green check mark, it means that this language will be included in the backup. A white X in a red circle means that the language will be excluded from the backup set. Clicking on the status icon toggles its state. The Language column contains the language's ISO code, for example en-GB for British English. The Area column indicates if this is a front-end (labelled as Public front-end ) or a back-end language (labelled as Administrator back-end ). The front-end languages are always listed first.
4.3.5. Templates
Note
This feature is available only in Akeeba Backup Professional, the paid version of our component From this page you can exclude any installed, non-default template. This means that each and every template marked as default for the back-end or the front-end will not be listed at all in this page! Templates are displayed in a list spanning three columns.
71
The first column, labelled State , indicates the filtering status of this item. A green check mark, it means that this template will be included in the backup. A white X in a red circle means that the template will be excluded from the backup set. Clicking on the status icon toggles its state. The Template column contains the template's name. The Area column indicates if this is a front-end (labelled as Public front-end ) or a back-end template (labelled as Administrator back-end ). The front-end languages are always listed first.
72
This page primarily consists of a grid view. Above the grid, you can find the Root Directory drop-down menu. Akeeba Backup can define filters for the site's files or for each of the off-site directories separately. The default selection, [SITEROOT], contains all filters pertaining to the main site's files. If you have defined off-site directories, you can select the appropriate directory from the drop-down list in order to define filters for that directory. The grid contains three columns: Icons column You can perform the basic operation by clicking on this column's icons: Trashcan. When you click it, the filter row will be removed. Pencil. When you click it, the row switches to edit mode Add (only on the last row). Clicking this icon adds a new row at the end of the list and switches it to edit mode. You can select the type of the newly added filter.
Type
The filter type defines what will happen when a directory or file matches the regex filter and can be one of: Exclude directory. Completely skips backing up the given subdirectory. Exclude file. Completely skips backing up the given file. Skip subdirectories. Skips backing up all the subdirectories inside the given directory. Skip files. Skips backing up all the files inside the given directory.
Filter Item
When you click on the pencil or add icons, the respective row enters the edit mode. In this mode, the filter type becomes a drop-down list where you can select the type of this filter row. The filter item column also turns into an edit box so that you can enter your filter definition. The icon column now contains two different icons: Diskette. When you click it, the changes will be saved. Cancel. When you click it, any changes will be cancelled and the row will resume its previous state.
73
In order to make sure that your filters match the directories and/or files you meant to, you can do so very easily. Just go back to the Control Panel and click on the Files and Directory Exclusion button. The items filtered out by the regular expressions filters will be automatically highlighted in red. You can browse through the file system structure to make sure that only the items you really meant are being excluded.
74
In computing, regular expressions, also referred to as regex or regexp, provide a concise and flexible means for matching strings of text, such as particular characters, words, or patterns of characters. A regular expression is written in a formal language that can be interpreted by a regular expression processor, a program that either serves as a parser generator or examines text and identifies parts that match the provided specification. "Regular expression" article [http://en.wikipedia.org/wiki/Regular_expression] from Wikipedia In a nutshell, regular expressions allow you to quickly define filters which match table names based on a number of criteria. If you want a quick cheatsheet you can use, I suggest the Regular Expressions Cheat Sheet (V2) [http:// www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/] from AddedBytes.com. Some practical examples will be presented at the end of this section. There are some special considerations experienced regular expressions users must have in mind: You are supposed to specify a full regular expression, including its opening and ending separators. So "^foo" is invalid, but "/^foo/" and "#^foo#" are valid. Akeeba Backup supports an extension to the PCRE syntax. If you prefix the regex with an exclamation mark you negate its meaning. So "/^foo/" will match all entities starting with "foo", whereas "!/^foo/" will match all entities NOT starting with "foo". Akeeba Backup stores and parses your data as raw Unicode (UTF-8), provided that your database meets the minimum requirement of MySQL 4.1 or greater. This eliminates the need to use the u suffix of regular expressions in order to reference Unicode characters. When it comes to database table filters in particular, you have to bear in mind: All Joomla! tables have their prefix stripped and replaced by the standard #__ placeholder. So, if your database prefix is jos_, jos_users is internally referenced as #__users. You must take this into account when writing regex filters, as this is the name you will have to match! The prefix replacement is not made in Database Only backup modes (either main site database, or all databases). As a result, you have to reference the tables by their full, normal name, e.g. jos_users. The examples at the end of this section apply to a full site backup scenario, where the replacement does take place.
This page primarily consists of a grid view. Above the grid, you can find the Root Directory drop-down menu. Akeeba Backup can define filters for the site's main database or for each of the extra databases you may have defined. The default selection, Site's main database, contains all filters pertaining to the main site's database, of course. If you have defined extra databases, you can select the appropriate database from the drop-down list in order to define filters for that database. The grid contains three columns:
75
Icons column
You can perform the basic operations by clicking on this column's icons: Trashcan. When you click it, the filter row will be removed. Pencil. When you click it, the row switches to edit mode Add (only on the last row). Clicking this icon adds a new row at the end of the list and switches it to edit mode. You can select the type of the newly added filter.
Type
The filter type defines what will happen when a directory or file matches the regex filter and can be one of: Exclude a table. Completely skips backing up tables whose names match the regular expression. Do not backup a table's contents. Only backs up the structure of tables whose names match the regular expression, but not their contents.
Filter Item
When you click on the pencil or add icons, the respective row enters the edit mode. In this mode, the filter type becomes a drop-down list where you can select the type of this filter row. The filter item column also turns into an edit box so that you can enter your filter definition. The icon column now contains two different icons: Diskette. When you click it, the changes will be saved. Cancel. When you click it, any changes will be cancelled and the row will resume its previous state.
In order to make sure that your filters match the directories and/or files you meant to, you can do so very easily. Just go back to the Control Panel and click on the Database Tables Exclusion button. The items filtered out by the regular expressions filters will be automatically highlighted in red. You can browse through the database structure to make sure that only the items you really meant are being excluded.
76
/^#__vm_/
Important
Only one of those options is available in the free (as in "free beer") Akeeba Backup Core release
Tip
Do you want to automate your backups despite your host not supporting CRON? Webcron.org [http:// webcron.org/] fully supports Akeeba Backup's front-end backup feature and is dirt cheap - you need to spend about 1 Euro for 1000 backup runs. Just make sure you set up your Webcron CRON job time limit to be at least 10% more than the time it takes for Akeeba Backup to backup your site. Don't know how much is that? No problem! Just take a regular backup from your site's back-end, then go to Administer Backup Files page and take a look at the Duration column. That's what you're looking for!
77
Before beginning to use this feature, you must set up Akeeba Backup to support the front-end backup option. First, go to Akeeba Backup's main page and click on the Component Parameters button. Find the option titled Enable frontend and remote backup and set it to Yes. Below it, you will find the option named Secret key. In that box you have to enter a password which will allow your CRON job to convince Akeeba Backup that it has the right to request a backup to be taken. Think of it as the password required to enter the VIP area of a night club. After you're done, click the Save button on top to save the settings and close the dialog.
Tip
Use only lower- and upper-case alphanumeric characters (0-9, a-z, A-Z) in your secret key. Other characters may need to be manually URL-encoded in the CRON job's command line. This is error prone and can cause the backup to never start even though you'll be quite sure that you have done everything correctly. Most hosts offer a CPanel of some kind. There has to be a section for something like "CRON Jobs", "scheduled tasks" and the like. The help screen in there describes how to set up a scheduled job. One missing part for you would be the command to issue. Simply putting the URL in there is not going to work.
Warning
If your host only supports entering a URL in their "CRON" feature, this will most likely not work with Akeeba Backup. There is no workaround. It is a hard limitation imposed by your host. We would like to help you, but we can't. As always, the only barrier to the different ways we can help you is server configuration. If you are on a UNIX-style OS host (usually, a Linux host) you most probably have access to a command line utility called wget. It's almost trivial to use: wget --max-redirect=10000 "http://www.yoursite.com/index.php?option=com_akeeba& view=backup&key=YourSecretKey" Of course, the line breaks are included for formatting clarity only. You should not have a line break in your command line!
Important
Do not miss the --max-redirect=1000 part of the wget command! If you fail to include it, the backup will not work with wget complaining that the maximum number of redirections has been reached. This is normal behavior, it is not a bug.
Warning
Do not forget to surround the URL in double quotes. If you don't the backup will fail and it will be your fault! The reason is that the ampersand is also used to separate multiple commands in a single command line. If you don't use the double quotes at the start and end of the backup URL, your host will think that you tried to run multiple commands and load your site's homepage instead of the front-end backup URL. If you're unsure, check with your host. Sometimes you have to get from them the full path to wget in order for CRON to work, thus turning the above command line to something like: /usr/bin/wget --max-redirect=10000 "http://www.yoursite.com/index.php?option=com_akeeba& view=backup&key=YourSecretKey" Contact your host; they usually have a nifty help page for all this stuff. Read also the section on CRON jobs below.
78
Optionaly, you can also include an extra parameter to the above URL, &id=profile_id, where profile_id is the numeric ID of the profile you want to use for the backup. If you don't specify this parameter, the default backup profile (ID=1) will be used. In this sense, the aforementioned URL becomes: /usr/bin/wget --max-redirect=10000 "http://www.yoursite.com/index.php?option=com_akeeba& view=backup&key=YourSecretKey&profile=profile_id" wget is multi-platform command line utility program which is not included with all operating systems. If your system does not include the wget command, it can be downloaded at this address: http://wget.addictivecode.org/ FrequentlyAskedQuestions#download. The wget homepage is here: http://www.gnu.org/software/wget/wget.html. Please note that the option --max-redirect is available on wget version 1.11 and above.
Important
Using a web browser (Internet Explorer, Firefox, ...) or wget version 1.10 and earlier will most probably result into an error message concerning the maximum redirections limit being exceeded. This is not a bug. Most network software will stop dealing with a web site after it has redirected the request more than 20 times. This is a safety feature to avoid consuming network resources on misconfigured web sites which have entered an infinite redirection loop. Akeeba Backup uses redirections creatively, to force the continuation of the backup process without the need for client-side scripting. It is possible, depending on site size, Akeeba Backup configuration and server setup, that it will exceed the limit of 20 redirections while performing a backup operation.
Warning
The ampersands above should be written as a single ampersand, not as an HTML entity (&). Failure to do so will result in a 403: Forbidden error message and no backup will occur. This is not a bug, it's the way wget works.
79
Execution time (the grid below the other settings): Select when you want your CRON job to run Alerts: If you have already set up alert methods in webcron.org's interface, we recommend choosing an alert method here and not checking the "Only on error" so that you always get a notification when the backup CRON job runs. Now click on Submit and you're all set up!
Warning
The ampersands above should be written as a single ampersand, not as an HTML entity (&). Failure to do so will result in a 403: Forbidden error message and no backup will occur. This is not a bug, it's the way wget and PHP work. In order to call this script with a schedule, you need to put something like this to your crontab (or use your host's CRON feature to set it up): 0 3 * * 6 /usr/local/bin/php /home/USER/backups/backup.php Where /usr/local/bin/php is the absolute path to your PHP command-line executable and /home/USER/backups/backup.php is the absolute path to the script above. If you set up your cron schedule with a visual tool (for example, a web interface), the command to execute part is "/ usr/local/bin/php /home/USER/backups/backup.php".
80
Using the front-end backup in SiteGround and other hosts using cURL instead of wget
As one of our users pointed out in the support forum, finding the correct command to issue for the CRON job is tricky. What he writes applies not only to his host, SiteGround, but many other commercial hosts as well. We'll simply quote our user, bzcoder. In the CPanel for SiteGround there is a cronjob option, you create a cronjob using that and use: curl -b /tmp/cookies.txt -c /tmp/cookies.txt -L --max-redirs 1000 -v "<url>" as your command. Replace <url> with your backup URL. Make sure to use the initial url displayed on the backend NOT the final URL when you run the backup manually (been there, done that) - when you do that you end up with a url that doesn't work because of the extra parameter used in continuing the backup process.
81
-quiet will suppress all output except warnings and error messages. If the backup runs successfully you get no output at all. Note: this option was added in Akeeba Backup Professional 3.3.4. Since Akeeba Backup 3.3.4, the backup.php script will return a different exit code, depending on the backup status. When the backup is successful and without warnings, the exit code will be 0. When the backup completed but with warnings, the exit code will be 1. Finally, if the backup fails, the exit code will be 2. This allows you to check the backup status, for example inside a shell script, for automation purposes. In order to give some examples, I will assume that your PHP CLI binary is located in /usr/local/bin/php - a common setting among hosts - and that your web site's root is located at /home/johndoe/httpdocs. 1. Backup with the default profile (ID = 1) and default description: usr/local/bin/php /home/johndoe/httpdocs/administrator/components/com_akeeba/backup.php 2. Backup with profile number 2 and default description: usr/local/bin/php /home/johndoe/httpdocs/administrator/components/com_akeeba/backup.php -profile=2 3. Backup with the default profile (ID = 1) and a description reading "My automated backup": usr/local/bin/php /home/johndoe/httpdocs/administrator/components/com_akeeba/backup.php -description="My automated backup" 4. Backup with profile number 2 and a description reading "My automated backup": usr/local/bin/php /home/johndoe/httpdocs/administrator/components/com_akeeba/backup.php -profile=2 -description="My automated backup" It goes without saying that the line breaks are for readability only. You should not include line breaks in your command line. Special considerations: Most hosts do not impose a time limit on scripts running from the command-line. If your host does and the limit is less than the required time to backup your site, the backup will fail. We are working on a workaround to allow operation even within such time constraints. This script is not meant to run from a web interface. If your host only provides access to the CGI or FastCGI PHP binaries, backup.php will not work with them. The solution to this issue is tied to the time constraint above. The workaround we're planning will solve both issues. Some servers do not fully support this backup method. The usual symptoms will be a backup which starts but is intermittently or consistently aborted in mid-process without any further error messages and no indication of something going wrong. In such a case, trying running the backup from the back-end of your site will work properly. If you witness similar symptoms please use the Alternative CRON Script, outlined in the next section.
82
/usr/bin/php5-cli /home/myusername/public_html/administrator/components/com_a where myusername is your account's user name (most probably the same you use to login to cPanel) and YourProfileID is the numeric profile number you want to use for your backup job. Do note the path for the PHP command line executable: /usr/bin/php5-cli. This is the default location of the correct executable file for cPanel 11 and later. Your host may use a different path to the executable. If the command never runs, ask them. We can't help you with that; only those who have set up the server know the changes they have made to the default setup. Finally, click the Add New Cron Job button to activate the CRON job.
83
usr/local/bin/php /home/johndoe/httpdocs/administrator/components/com_akeeba/backup.php -profile=2 -description="My automated backup" -override "engine.postproc.s3.accesskey=ABCDEF" -override "engine.postproc.s3.secretkey=1234567890abcdefgh" In this case, we are telling the backup script to use the backup Profile with ID=2, give the backup description of "My automated backup" and then supply the S3 access and secret keys.
Important
The values of the override parameters must be enclosed in double or single quotes (depends on your Operating System), otherwise the operating system will not pass them back to the backup.php script. Finally, it should be noted that you can use the command-line override feature to do more tricky configuration overrides, for example turning off the archive splitting or using a different backup output directory to enhance your security. If it's something you can do in the Configuration page of the component, you can also do it using command line overrides.
84
It goes without saying that the line breaks are for readability only. You should not include line breaks in your command line. Special considerations: Most hosts do not impose a time limit on scripts running from the command-line. If your host does and the limit is less than the required time to backup your site, the backup will fail. This script is not meant to run from a web interface. If your host only provides access to the CGI or FastCGI PHP binaries, backup.php will not work with them. The solution to this issue is tied to the time constraint above. The workaround we're planning will solve both issues. You must enable the front-end backup feature of your Akeeba Backup Professional instalaltion and assign a "secret key" for it. This is possible by going to the Akeeba Backup Professional's Control Panel page and clicking on the Parameters button on the top right corner of the toolbar. You will find the front-end backup options further down the Parameters page. Before using the alternative CRON script for the first time, you must visit the Akeeba Backup's Control Panel page at least once. Since the command-line version of PHP used to run the backup is oblivious to the domain name used by your site, we have to cache this information. Caching of this information occurs as soon as you visit the Control Panel page. The host name is absolutely required in order for the script to be able to access your Akeeba Backup installation's front-end backup feature. Your host must support one of the three methods used by the helper script to access your front-end backup URL: 1. The PHP cURL module. 2. The fsockopen() method 3. The fopen() URL wrappers If none of these methods is available, the backup will fail. Your host may have a firewall setup which doesn't allow the CRON script to access the front-end backup URL. In such a case, the backup will consistently fail without a new log file being produced and without a backup entry being written to the database. You will have to contact your host so that they can allow the script to access the frontend backup URL. Do note that despite the alternative CRON script and your site running on the same server, the firewall restriction might still be in place. This is counter-intuitive, but we've seen this happening on man hosts. If you are seeking assistance in our forums regarding a failed CRON job, please indicate if and which of these steps you have already tried. Not doing so will hinder our ability to help you in a timely manner.
/usr/bin/php5-cli /home/myusername/public_html/administrator/components/com_a where myusername is your account's user name (most probably the same you use to login to cPanel) and YourProfileID is the numeric profile number you want to use for your backup job. Do note the path for the PHP command line executable: /usr/bin/php5-cli. This is the default location of the correct executable file for cPanel 11 and later. Your host may use a
85
different path to the executable. If the command never runs, ask them. We can't help you with that; only those who have set up the server know the changes they have made to the default setup. Finally, click the Add New Cron Job button to activate the CRON job.
86
never end, eating up the entirety of your free disk space and causing the inability to access your site or even the suspension of your hosting account. 7. Since we do not want your page load time to be 10 seconds or more, we will have to use a hidden IFrame to run the backup while the user is viewing your site. This means that they will see the page load spinner in Internet Explorer, Opera, Firefox, Safari and Chrome continuously spinning while they are visiting your site, probably confusing them into thinking that your site loads forever and losing some visitors. Search engines will also see that behaviour and penalise your site for having an unearthly page loading time, losing you more visitors. 8. If your cache or backup output directory is not writable, you might end up filling up your database with pending or failed backup records. If only the cache directory is unwritable, you may end up with multiple backups taken one after the other, depleting your free disk space. 9. If the visitor abandons the page while the backup is running, some servers will cause the backup archive to be corrupt. Unfortuantely, this can not be tested beforehand, therefore you have to test your backups to make sure you are not bitten by this issue. 10.If your visitor has turned off Javascript on her browser, the backup won't run 11.There is a small window, up to 500msec, where two successive visits might break the backup. It is the time window between when the plugin checks if another visitor has caused the backup to start/step and starting/stepping the backup. This will lead to broken backups, therefore you have to check all your backups to make sure they can be restored. 12.If the backup fails for any reason, e.g. you run out of disk space, the results are unspecified. Typically, multiple backups will be attempted until you disable the plugin or your database space runs out and your site stops working. 13.Using this plugin on a site where the "System - Cache" plugin is enabled may cause unforeseen effects, usually the backup not starting, multiple backups taken one after the other or a broken backup. 14.If you are using caching in your Global Configuration, enabling this plugin may break your site or cause it to load very slowly.
87
Important
Akeeba Backup may start your backup after the specified time if there is no traffic on your site at the specified time. Remember that, unlike CRON, the Lazy Scheduling plugin runs a backup step if and only if there is visitor traffic on your site. No traffic, nothing runs. Backup profile Select the Akeeba Backup profile to run. You can only select one profile to automate with the plugin. If you need to run extra profiles you have to trigger it using one of the other methods (the three CRON job varieties or the Remote backup). When enabled, a backup will always be run, ignoring the frequency and time settings. As the title implies, it should ONLY be used for testing, if you want to make sure that the plugin works. Do not leave this activated on a production site! If you do, visitor traffic will deplete your server resources and could even cause your account to be suspended on your host. In other words, do not leave this option turned on for more than a couple of minutes at a time! Sometimes you may hit a situation where the plugin causes a PHP fatal error and effectively locks you out of your site. When this happens, you can immediately disable the plugin by visiting the URL http://www.yoursite.com/index.php?akreset=password, where password is the password you specify in this option. Please note that the most common reason for the plugin's malfunction is lack of disk space. Most hosts will address attempts to exceed your disk quota by instantly halting the scripts running on your site, effectively not allowing Joomla! to run at all. With the reset URL, the plugin allows you to immediately disable it (so that it won't try to deplete your disk space) and remove the log file and backup archive of the pending backup, ensuring you can at least access your site again. When done, just click on Save. That's it! Your backup will execute automatically.
Test mode
Password
Important
Always test that a backup works by running a manual backup from the component's back-end. If and only if it works properly you should enable the plg_aklazy plugin. If you run into any problems, please read the next section on Technical details and pitfalls. Please, do not ask for support for using this plugin. It's an unsupported backup method which we added back only because several users asked us, despite our advise to migrate to much more reliable CRON jobs.
Important
Since the Lazy Scheduling plugin creates a hidden IFRAME on your site's pages, some browsers will show the page as "loading" while a backup is running. This is caused by the IFRAME waiting for the backup step to complete. There is no workaround to this other than not using the Lazy Scheduling plugin. Previously, we mentioned that plg_aklazy creates a hidden IFRAME or uses Javascript. We'll explain how this works. If you don't have page caching enabled, or a registered user is logged in, or an administrator (back-end) page is being
88
accessed, or if the System Debugging is turned on, plg_aklazy will only inject a hidden IFRAME at the end of the page's body if a backup is about to start or a new backup step must be triggered. This allows the backup to be triggered even if your visitor's browser doesn't support Javascript. If caching is enabled and it's a guest (not logged in) visitor, a special piece of Javascript is injected at the end of the page body. This code will check if a backup step is required using AJAX calls and, if so, will silently create the invisible IFRAME. So, if you are using caching, the backup check and backup triggering will work if and only if your visitor's browser supports Javascript (that's about 90-95% of visitors). While your visitor is looking at the page, the IFRAME will trigger a backup job by calling a special URL on your site which looks like index.php?aklazy=start&nonce=abcdef. As soon as this page tries to load, plg_aklazy will "hijack" Joomla!'s execution, perform the step and issue a redirection to the next step's URL, or indicate that no further processing is required once the backup is done. As a result, the backup will run in its entirety even if a single visitor stays long enough on your site to trigger all the necessary backup steps. If a visitor leaves your site (e.g. closes the window or navigates to a different page) in the middle of a backup step, the backup step will continue to run in the background, ensuring that no corrupt backups can occur.
Important
If you are using a third-party SEF solution, such as sh404SEF or AceSEF, you must specify the aklazy and nonce URL parameters as "non-SEF", i.e. that they should not be used as part of a SEF URL. Failure to do so will cause plg_aklazy to fail, or cause other problems with your site's functionality. If you are unsure how to do that, please consult the author of your SEF component. We can't help you with this part, as we can't possibly know how all SEF components work.
Important
PHP's Safe Mode may not allow the Lazy Scheduling plugin to operate properly. As a good measure, we strongly advise against using this plugin on hosts which have the Safe Mode enabled.
6. Miscellaneous features
Some features do not fall under any other category. We decided to reserve a place in our manual for these lesser-known but very useful features.
89
Just replace www.example.com with the actual domain name and path to your site!
Important
The front-end backup feature option must be enabled from the Parameters button in the Control Panel. If it's not, you'll get an "Access Denied" message. In the first page you get upon accessing this URL just select the backup profile from the drop down list and enter your secret word in the text box, then click on the Backup Now button. The backup process will proceed automatically, giving you a cut-down version of the backup progress information you would get from the backend backup mode. Akeeba Backup advances through the pages automatically, using Javascript.
90
If you want to reclaim free space on your host, just select the restore points which are no longer relevant and click on Delete.
The System Restore Points feature does not allow me to install a component / plugin / module / template. Now what?
Not all extensions are compatible with the System Restore Points feature of Akeeba Backup. Some of them might fail to install at all when you're using SRP. In this case, you have two options: 1. Temporarily disable SRP. In the extensions installer page, towards the bottom, you will see a link which reads "Back to the standard installer". Click on it. The page reloads and the bottom line with the Akeeba Backup logo is no longer there. Now retry installing your extension; it should work. If not, proceed to the next option. 2. Completely disable SRP. Go to Extensions, Plugin Manager and find the System - System Restore Points plugin. Disable it by clicking on the green checkmark (Joomla! 1.5) or green hollow disk (Joomla! 1.6 and later) so that it turns red. This completely disables Akeeba Backup's SRP feature until you enable back the plugin.
I restored a System Restore Point and my component / plugin / module / template is still broken!
As you read above, not all extensions are fully compatible with Akeeba Backup's System Restore Point feature. The following problems, outside our control, may arise: Database tables not backed up. Akeeba Backup expects a specific naming convention for database table. For example, if you have com_foobar, it expects that its tables are named jos_foobar_something, where jos_ is your site's prefix and something is the last part of the table's name. Some components, however, do not follow that convention. For example, VirtueMart is called com_virtumart and its tables follow the jos_vm_something convention. Unless the extension's developer or us (as in the case of VirtueMart!) have provided an SRP integration file, Akeeba Backup's SRP feature will NOT back up the component's tables and restoring the SRP will pretty much make no difference, despite Akeeba Backup reporting that it was restored successfully. Unless Joomla! enforces a strict table naming standard, you can pretty much be sure that this will happen. The solution is to ALWAYS have a tested backup of your site and ALWAYS try extension upgrades on a dev or local copy of your site. Related extensions not backed up. Many components rely on numerous plugins and modules to provide their functionality. Major components like K2, Tienda, VirtueMart, even Akeeba Backup itself, follow this approach. Unless its developer or us have provided an SRP integration file, Akeeba Backup doesn't know about this necessary related extensions, doesn't back them up and -of course- does not restore them. Due to that, even after an SRP restoration your component may still be broken! Unless Joomla! enforces a way to positively link related extensions
91
to the component, you can pretty much be sure that this will happen. The solution is to ALWAYS have a tested backup of your site and ALWAYS try extension upgrades on a dev or local copy of your site. Added files are not removed. This may sound a little crazy, but it can be a huge problem. If the newer version of the component added files which were not present in the previous, backed up, version it is very possible that they will cause a problem. This depends on how the component works. Unfortunately, the only workaround is to uninstall the newer version, reinstall the old one and then restore your SRP backup. Please note that SRP is a more or less experimental technology. We are trying to provide a feature that Joomla! wasn't designed to be capable of. As a result, this feature is prone to breakage. While we have tried our best to support the major components out of the box, we can't really support everything under the sun (not with 8,000 Joomla! extensions listed in the JED and growing). Do not rely solely on SRPs for the good health of your site. We recommend to ALWAYS take a full site backup prior to the installation / uninstallation / upgrade of any extension on your site and to ALWAYS test your backups. An untested backup is not a backup! Our Quick Start Guide provides important information regarding the ways to test your backups.
I have Restore Points taken with Akeeba Backup Core 3.3.4 or earlier. How do I restore them?
The System Restore Points feature was removed from the free of charge (Core) version of our software as of Akeeba Backup Core 3.3.5. However, restoring your System Restore Points is still possible, albeit manually. Download the SRP backup. It's a .jpa file whose name starts with restorepoint- and is located in the default output directory; for most users this is administrator/components/com_akeeba/backup Extract it locally using Akeeba eXtract Wizard Copy all folders EXCEPT the sql folder to your site's root, overwriting existing files. Open the files in the sql folder with a text editor. Search and replace #__ with your site's database table name prefix (usually it's jos_). Restore those files to your site's database using phpMyAdmin
92
93
Wow! That's awesome! I am a developer and would like to do the same thing for my components. Is it possible?
Yes! It's all distributed under the GPLv3 and can be reused with any component/module/plugin/template using the same license. For starters, you can dissect the two plugins. It's very easy to figure out how they work. In fact, it's so darn simple that will make you wonder why this wasn't in use for decades already. If you have questions, contact us through our site's Contact Us page or by posting on our forum and we will help you. That's the spirit of Free and Open Source Software: spreading knowledge.
94
Note
These instructions are meant to be first read before disaster strikes. Therefore, a fair amount of humour has been used throughout. If you try to read it after disaster struck you will naturally find the humorous parts inappropriate, or even offensive. Rest assured that this is because you are under a huge amount of stress. As soon as you'll have finished following the instructions herein, you will be able to re-read this document with a light heart and enjoy the humorous puns as they were intended.
95
Restoring backups
Inevitably, some people will end up with a backup file, a ruined site and a problem in the restoration procedure they can't work out. Almost always, the recipe includes a pressing deadline which requires that the site is on-line... yesterday. If you are in a situation like the one we just described, breathe. Do not panic. We've got you covered, with this concise manual site restoration guide. So, here it goes... it's manual Joomla! Site restoration In 7 steps or even less.
96
Restoring backups
The idea is to replace all instances of #__ (note that there are two underscores after the hash sign) with jos_ in the MySQL command part (not the data part). DO NOT PERFORM A BLIND SEARCH AND REPLACE OF #__ WITH jos_ AS IT WILL CAUSE SEVERE PROBLEMS WITH SOME COMPONENTS. Easy, wasn't it? NOW SAVE THAT FILE!
97
Restoring backups
dbprefix live_site
is the database prefix; if you followed our instructions, it is jos_ Normally this is an empty string. If, however, your Joomla! site's front page looks as if all images and CSS files are not loading, you have to modify it and enter your site's base URL. For example, if the new site is located in http://www.example.com/mysite/, you have to locate the line starting with var $live_site and change it to become: var $live_site = "http://www.example.com/mysite";
98
99
order. If something goes wrong, just post as much information you can on our support forum. We will get back to you in 24-48 hours. Usually, we'll reply in much less time, even on weekends and bank holidays. Provided that you are in your Joomla! administrator back-end, just click on the Components, Akeeba Backup menu item. In the Control Panel page which loads, click on the Configuration button. This will bring you to a quite lengthy configuration page. Locate the Archiver Engine setting in the pane titled Advanced Configuration. Click the button labeled Configure next to it in order for the detailed settings to display. You should get something like this:
We will have to change just one option: Part size for archive splitting. Select the "Custom..." option and type in 20 in the text box that appears to the right of the drop-down. This setting will chunk our backup archive into multiple files, the maximum size of each one being the value of this setting. You might wonder why we need to do that. PHP always has a strict time limit, i.e. the maximum time a PHP page may process data before the web server aborts it. Uploading the backup archives to cloud storage takes time, the exact amount of which depends on the size of the file and the network speed. The time limit and the bandwidth are beyond our control, so we can change the only parameter we can touch in order to avoid timeouts: the file size. Akeeba Backup Professional is smart enough to upload each part of the backup archive on a PHP page load of each own, so as to avoid timing out.
In this configuration details pane you have to enter your Amazon S3 Access key and Private key. You should have been given those keys during your signup to Amazon S3. If you haven't noted them down, just sign in to your Amazon
100
S3 account and go to the Security Credentials page. You will find this information in the Access Keys section. Back to our configuration page, checking the Use SSL setting will make your data transfer over a secure, encrypted connection at the price of taking a little longer to process. I recommend turning it on anyway. The Bucket setting defines the Amazon S3 bucket you are going to use to store your backup into. The Directory defines a directory inside the bucket where you want the backup files stored and must have been already created.
Warning
DO NOT CREATE BUCKETS WITH NAMES CONTAINING UPPERCASE LETTERS. AMAZON CLEARLY WARNS AGAINST DOING THAT. If you use a bucket with uppercase letters in its name it is very possible that Akeeba Backup will not be able to upload anything to it. More specifically, it seems that if your web server is located in Europe, you will be unable to use a bucket with uppercase letters in its name. If your server is in the US, you will most likely be able to use such a bucket. Your mileage may vary. Please note that this is a limitation imposed by Amazon itself. It is not something we can "fix" in Akeeba Backup (I did spent 5 hours on Christmas trying to find a workaround, with no success, because it's a limitation by Amazon). If this is the case with your site, please DO NOT ask for support; simply create a new bucket whose name only consists of lowercase unaccented latin characters (a-z), numbers (0-9), dashes and dots. Do note that as per S3 standards the path separator for the directory is the forward slash. For example, writing first_level\second_level is wrong, whereas first_level/second_level is the correct form. I recommend using one bucket for nothing but site backups, with one directory per site or subdomain you intend to backup. If you want to use a first-level directory, just type in its name without a trailing or leading forward slash.
Tip
Should you need a visual interface for creating and managing Amazon S3 buckets, I highly recommend using S3Fox Organizer [http://www.s3fox.net/], a free plug-in for the FireFox web browser. Enough said. Click on Save to store the changed settings. Back to the Akeeba Backup Professional Control Panel, click on the Backup Now icon. It's backup time! Ignore any warning about the Default output directory in use. We don't need to care about it; our backup archives will end up securely stored on Amazon S3 anyway. Just click on the big Backup Now! button and sit back. The upload to Amazon S3 takes place in the final step of the process, titled Finalizing the backup process. If during this stage you observe that the timeout bar the bar which looks like a progress bar fills all the way to the right, you have a timeout error. This means that you have to go back to the configuration and lower the Part size for archive splitting setting.
Important
On local testing servers you will have to use ridiculously small part sizes, in the area of 1-5Mb, as the xDSL consumer Internet service has a much more limited bandwidth than your host.
Warning
If you get a RequestTimeout warning while Akeeba Backup is trying to upload your backup archive to the cloud, you MUST go to the Configuration engine and enable the "Disable multipart uploads" option of the S3 engine. If you don't do that, the upload will not work. You will also have to use a relatively small part size for archive splitting, around 10-20Mb (depends on the host, your mileage may vary). As you can see, I just backed up my personal blog to Amazon S3:
101
Note
When you're following the "Install & configure the Command line" instructions in the above tutorial, make sure to also add this into your system path: %AWS_IAM_HOME%\bin It seems they left that step out. Once the CLI is working, here are the commands to run (don't enter the lines with #Comments. Also enter them one at a time).
102
# Create the group iam-groupcreate -g MYSITE-backup # Create the user & add to the group iam-usercreate -u MYSITE-backup -g MYSITE-backup
# Attach the policy to the group iam-groupuploadpolicy -g MYSITE-backup -p MYSITE-backup -f L:\IAMCli-1.2.0\policy\MYSITE-ba # Get the credentials iam-useraddkey -u MYSITE-backup In this example, we have created a bucket for all site backups. Within that bucket we have folders for each site. We can create credentials for each site and they can only access their subfolder. Also the credentials can only add backups. Backups can not be deleted or even downloaded. The only access the credential has is "PutObject" to upload the backup file. Here is the sample policy file (L:\IAMCli-1.2.0\policy\MYSITE-backup.txt): { "Statement":[{ "Sid":"XXXXXXXXXXXXXXX", "Action":["s3:PutObject" ], "Effect":"Allow", "Resource":"arn:aws:s3:::MYBUCKET/MYSITE/*" }] } You can generate your own policy file here: http://awspolicygen.s3.amazonaws.com/policygen.html
103
{ "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::YOURBUCKETNAMEHERE/*" } ] } 13.Click Apply Policy That's it! Now you can use those S3 credentials in your Akeeba Backup profile.
Further thoughts
Giving a user only the PutObject privilege allows the user to upload backups to the bucket, but any remote quotas will fail, as the user is not allowed to delete any objects (files) in your S3 bucket. You can opt for a compromise between tight security and ease of use. If you give your user both the PutObject and DeleteObject privileges he will be able to upload backups (PutObject) and run quotas (DeleteObject) but not list or download backup archives. In other words, even in the unlikely event that an attacker gains complete access to your site's database and filesystem, recovers the encrypted contents of Akeeba Backup's configuration table and encryption key file, writes a script to decode the configuration, gets access to your S3 credentials and tries to use them, he won't be able to download backup archives or even use those S3 credentials with any graphical S3 tool.
104
In this configuration details pane you have to login to Dropbox. It is a two step authentication process. First click on the Authorisation - Step 1 button. It will open a popup box which will ask you to log in to Dropbox. This popup executes a page in Dropbox's servers, so that Akeeba Backup never knows your email and password. After logging in, close the popup and click on the Authorisation - Step 2 button. Wait a few seconds (usually 3-5 seconds). It should reply with a dialog box reading OK. This means that Akeeba Backup on your server is now granted access to your Dropbox account. Should you want to revoke this access, you can do that from your Dropbox account. The Directory defines a directory inside your Dropbox account where you want the backup files stored and must have been already created. Do note that as per Dropbox.com standards the path separator for the directory is the forward slash. For example, writing first_level\second_level is wrong, whereas first_level/ second_level is the correct form. I recommend using one directory for nothing but site backups, with one subdirectory per site or subdomain you intend to backup. If you want to use a first-level directory, just type in its name without a trailing or leading forward slash.
Tip
If you have installed Dropbox' desktop client application on your PC you can simply create the directory on your local Dropbox directory (usually found under My Documents in Windows machines). The desktop client application will automatically synchronize the folders to your on-line account. Enough said. Click on Save to store the changed settings. Back to the Akeeba Backup Professional Control Panel, click on the Backup Now icon. It's backup time! Ignore any warning about the Default output directory in use. We don't need to care about it; our backup archives will end up securely stored on Dropbox anyway. Just click on the big Backup Now! button and sit back. The upload to Dropbox takes place in the final step of the process, titled Finalizing the backup process. If during this stage you observe that the timeout bar the bar which looks like a progress bar fills all the way to the right, you have a timeout error. This means that you have to go back to the configuration and lower the Part size for archive splitting setting.
Important
On local testing servers you will have to use ridiculously small part sizes, in the area of 1-5Mb, as the xDSL consumer Internet service has a much more limited bandwidth than your host.
105
they have a publicized integration API. If you have a specific need not covered by our base software, just contact us. We listen carefully to the community feedback and we make the impossible happen. All that for a very low subscription fee to the Professional downloads service.
106
Table of Contents
7. Introduction ................................................................................................................................ 1. Foreword ........................................................................................................................... 2. Why you need to care about ownership and permissions? ............................................................ 8. How your web server works .......................................................................................................... 1. Users and groups ................................................................................................................. 1.1. Users ...................................................................................................................... 1.2. Groups .................................................................................................................... 1.3. How users and groups are understood by UNIX-derived systems ........................................ 2. Ownership .......................................................................................................................... 2.1. Process ownership ..................................................................................................... 2.2. File ownership .......................................................................................................... 3. Permissions ........................................................................................................................ 3.1. The three types of permissions .................................................................................... 3.2. What permissions can control ...................................................................................... 3.3. Permissions notation .................................................................................................. 3.3.1. The textual notation ........................................................................................ 3.3.2. The octal notation ........................................................................................... 9. Securing your Akeeba Backup installation ....................................................................................... 1. Access rights ...................................................................................................................... 2. Securing the output directory ................................................................................................. 3. Securing file transfers .......................................................................................................... 109 109 109 110 110 110 110 111 111 111 112 113 113 113 114 114 114 116 116 116 117
108
Chapter 7. Introduction
1. Foreword
Since you have chosen Akeeba Backup for backing your site up, it is obvious that you are using Joomla! as your web-based Content Management System. By using Joomla! you have embarked to the joyful adventure of managing a PHP powered website. Usually, this last part is gone unnoticed. The fact that you are using a PHP application is often taken for granted, but when it comes down to security and problem solving, this is the key concept of which you should have a strong grasp. This part of the documentation deals with the basic concepts of PHP website management and their implications upon using Akeeba Backup. In this part, we will see the intricacies of access permissions, web site users and the impact of various PHP settings on your site's operability and security. This is not meant to be a concise manual on website administration. There are plenty of web and off-line resources with more in-depth information on the subject, but this introduction will quickly get you up to speed. This document is no light reading; it is purposely sprinkled with a lot of tech-talk, albeit explained in layman's terms. Our objective was not to write a document which can be read and understood in a single reading. Some things you will understand by the first time you'll have read it. Most of it you will only get it after reading it again. A few shady areas will only become clear reading over again and referring to it every time you get stuck managing your site.
109
1.1. Users
As we mentioned, the fundamental block of ownership separation is a user . Each user has an entry in the system's password database and consists of a user name and a numeric user ID . A user is not necessarily linked to a physical person; in fact, most utilities and services create and operate under a user of their own. The numeric user ID is an unsigned integer, therefore it can take a value between 0 and 65534. The user name and the numeric user ID are usually linked with an one to one relationship, meaning that if you know either one you can find the other one. The exception to this is most ISPs. In this case, because there are more users than the available number of user IDs, some numeric IDs will be reused, breaking the one to one relationship. However, on most - if not all - hosts, the one to one relationship exists. Some user IDs are special. By convention, user IDs below 500 are reserved for system users. These are special users which are not assigned to some physical person. One of them, zero (0), has a very special meaning; it is assigned to the super user , commonly called root . This user is the God of the system. He has unlimited powers. He can override all access restrictions and make any kind of modification. For this reason, no sane system administrator logs in under that user. They will always log in under a normal user and only temporarily log in as root whenever they need to change system-wide settings.
1.2. Groups
Defining permissions per user is tiresome on systems which have more than a few users. In order to combat this inconvenience, all UNIX systems have the notion of groups . A group is nothing but a collection of users. The relationship to users is a many-to-many relationship, meaning that one user can belong to many groups and one group can contain many users. To keep things dead simple, groups have the same format as users. Each group has a group name and a numeric group ID . Again, not all groups are linked to a physical person; in fact there are a number of de facto group names used to control access to crucial system resources. The numeric group ID is an unsigned integer, therefore it can take a value between 0 and 65534. The group name and group ID are linked with an one to one relationship, meaning that if you know either one you can find the other one. I am not aware of exceptions to this rule and I can't think a reason, either. There are some special group ID's. By convention, zero (0), is assigned to the root's group. Its sole member should be root, or other users with a user ID of 0. It empowers its members to do anything they please on the system, almost like the user ID 0 does. Noticed the "almost" part? Belonging to the root group alone, without having a user ID of 0, does not give you infinite powers but it does grant you very broad access indeed! Every user can belong to many different groups. To simplify things a little bit, every user has a so-called default group. This means that one of the groups he is a member of will be his effective group, unless otherwise specified, in all operations.
110
Important
User IDs for a user with the same user name on different systems can be different. A user named example on system A and system B might have one user ID on system A and a completely different on system B. However, all UNIX-derived systems really know about are IDs, not names! This is very (read: extremely) important when you transfer files from one system to another. All archive types which store owner information (for example GNU tar ) store nothing but the numeric ID's. Moving these to another system and extracting them will screw up ownership and permissions. Just because you have the user ID 567 on Host A doesn't mean that you won't end up with user ID 678 on Host B; extracting such an archive would make all your files owned by someone else, effectively screwing up your site.
2. Ownership
The term ownership implies that system items belong to someone. In the context of web site management the items we are interested in are files and processes . Everybody understands what files are, but the term processes is rarely understood amongst webmasters. So, let's explain it.
111
In order to combat this possibility, UNIX systems employ a feature which allows processes to drop privileges and run under a different user than the one which started them. In fact, they change their ownership! To prevent abuse of this feature, a process must run under root privileges to be able to switch to another user. This feature is extensively used by system services, including MySQL and Apache. In the context of web site management, Apache is of special interest. Apache is the de facto web server for Linux systems and is being used by over 50% of Internet sites, according to NetCraft's August 2008 survey. Chances are you are using it on your site, too. Apache, like most UNIX services (affectionately called daemons) uses the feature to drop privileges. The user and group under which it runs are defined in its configuration files. These configuration files are usually out of the reach of regular users (like you!) on commercial hosts, for security reasons. There is a special case which acts as the exception to the Apache rule. Many commercial hosts run suPHP-enabled Apache installations. This is an extension to the normal PHP's mode of operation which allows each PHP page to run in a process owned by the file's owner (more on file ownership in the next sub-section). This means that each of the PHP files under your account on such a host run as the user which has been assigned to your account. And, if this still isn't apparent to you, such hosts nullify the burden of ownership and permissions (more on permissions in the next section). To put it clearly: with suPHP the file owner, your own user and the Apache user are one and the same. If you are looking for a decent host, find one which is using suPHP. It's better for security and removes a lot of administrative burden from you. A win-win situation.
112
Conversely, whenever you are using a web interface to perform file operations, you are using a web application - or any PHP script/application for that matter - running on the web server whose process is owned by a different user. Therefore, whenever you create files from a web application, they will be owned by the user the web server runs under. The distinction of file ownership in these two cases is of paramount importance when you get stuck with files which are accessible to FTP but inaccessible to the web server, or vice versa. This minute distinction is the cause of a lot of grief to many webmasters, so beware!
3. Permissions
So far you have learned about users, groups and ownerships. But how do they all stick together? Why these are necessary to have in the first place? The reason is simple: security. In multiuser operating systems you normally don't like users snooping around other people's files, especially when those files contain sensitive information, such as passwords. The most common method for overcoming this problem is to assign permissions on each system item, controlling who can do what. This simple concept works wonderfully; it's like putting doors on a building and giving people only the keys for the doors to areas they should have access to.
Group permissions
Other permissions
These three actions, combined with the three access request groups (owning user, owning group and the rest of the world) give us a total of nine distinct operations which can be controlled. Each action is an on/off switch. If a permission
113
is set, it is turned on and the right to perform the action is granted. If the permission is not set, the switch is off and the right to perform the action is not granted.
It is almost apparent that "1" stands for execute only, "2" stands for write only and "4" stands for read only. Adding these values together gives you the rest of the combinations. You can't add together the same value (1+1 is forbidden
114
as it is meaningless), so each of the composite values can be broken down to its components very easily. You don't even have to memorise the whole table! A permission of 0777 means that the owning user, owning group and the rest of the world can read, write and execute the file (full permissions for everyone). A 0764 permission means that the owning user has full access, the owning group has read and write access and the rest of the world have read only access.
115
116
Securing your Akeeba Backup installation If you are really paranoid about securing your site's backup files - like we are for our own sites! - you can use Akeeba Remote Control. Remote Control is a desktop application for Microsoft Windows which allows backing up your site from your desktop, with options to automatically downloading the backup archive and remove the server's copy of this file. Alternatively, you can use our backup file post-processing options, for example uploading all backup archives to Amazon S3 and removing your server copy.
Important
The preferred and suggested method for downloading your backup files - for several reasons - is using FTP in BINARY mode, preferably over an encrypted connection. Alternatively, you can use Remote CLI which allows you to use this approach when downloading backup archives.
117
Table of Contents
A. The JPA archive format, v.1.2 ...................................................................................................... 120 B. The JPS archive format, v.1.9 ....................................................................................................... 124 C. GNU Free Documentation License ................................................................................................. 128
119
Structure of an archive
An archive consists of exactly one Standard Header and one or more Entity Blocks . Each Entity Block consists of exactly one Entity Description Block and at most one File Data Block . All values are stored in little-endian byte order, unless otherwise specified. All textual data, e.g. file names and symlink targets, must be written as little-endian UTF-8, non null terminated strings, for the widest compatibility possible.
Standard Header
The function of the Standard Header is to allow identification of the archive format and supply the client with general information regarding the archive at hand. It is a binary block appearing at the beginning of the archive file and there alone. It consists of the following data (in order of appearance): Signature, 3 bytes Header length, 2 bytes Major version, 1 byte Minor version, 1 byte The bytes 0x4A 0x50 0x41 (uppercase ASCII string JPA) used for identification purposes. Unsigned short integer represented as two bytes, holding the size of the header in bytes. This is now fixed to 19 bytes, but this variable is here to allow for forward compatibility. When extra header fields are present, this value will be 19 + the length of all extra fields. Unsigned integer represented as single byte, holding the archive format major version, e.g. 0X01 for version 1.2. Unsigned integer represented as single byte, holding the archive format minor version, e.g. 0X02 for version 1.2.
120
Unsigned long integer represented as four bytes, holding the number of files present in the archive. Unsigned long integer represented as four bytes, holding the total size of the archive's files when uncompressed. Unsigned long integer represented as four bytes, holding the total size of the archive's files in their stored (compressed) form
When creating spanned archives, the first file (part) of the archive set has an extension of .j01, the next part has an extension of .j02 and so on. The last file of the archive set has the extension .jpa. When creating spanned archives you must ensure that the Entity Description Block is within the limits of a single part, i.e. the contents of the Entity Description Block must not cross part boundaries. The File Data Block data can cross one or multiple part blocks.
Entity Block
An Entity Block is merely the aggregation of an Entity Description Block and at most one File Data Block. An Entity can be at present either a File or a Directory. If the entity is a File of zero length or if it is a Directory the File Data Block is omitted. In any other case, the File Data Block must exist.
121
0x02 for symbolic links (instructs the client to create a symbolic link whose target is stored, uncompressed, as the entity's File Data Block). When the type is 0x02 the Compression Type MUST be 0x00 as well. Compression type, 1 byte. 0x00 for no compression; the data contained in File Data Block should be written as-is to the file. Also used for directories, symbolic links and zero-sized files. 0x01 for deflate (Gzip) compression; the data contained in File Data Block must be deflated using Gzip before written to the file. 0x02 for Bzip2 compression; the data contained in File Data Block must be uncompressed using BZip2 before written to the file. This is generally discouraged, as both the archiving and unarchiving scripts must be ran in a PHP environment which supports the bzip2 library. Compressed size, 4 bytes Uncompressed size, 4 bytes Entity permissions, 4 bytes Extra fields data, variable length An unsigned long integer representing the size of the File Data Block in bytes. For directories, symlinks and zero-sized files it is zero (0x00000000). An unsigned long integer representing the size of the resulting file in bytes. For directories, symlinks and zero-sized files it is zero (0x00000000). UNIX-style permissions of the stored entity. The extra fields for each file are stored here. The total length of extra fields is included in the Block Length above
Each Extra Fields consists of: Extra Field Identifier, 2 bytes Extra Field Length, 2 bytes Extra Field Data, variable length A signature denoting the data stored in the extra field The length (in bytes) of the Extra Field Data The internal structure varies by the type of the Extra Field, as noted in the Extra Field Identifier
122
Binary dump of file contents or textual representation of the symlink's target, for CT=0x00 Gzip compression output, without the trailing Adler32 checksum, for CT=0x01 Bzip2 compression output, for CT=0x02
Change Log
Revision History NKD, Akeeba Developershttp:// www.akeebabackup.com Updated to format version 1.1, fixed incorrect descriptions of header signatures June 2009
123
Important
When the password is blank, no encryption takes place. Archivers should take this into account when creating files. Unarchivers should also take this into account when the user passes an empty string as their password. When a non-blank password is used, all files are encrypted using the same password. More specifically, all data blocks are encrypted using the same password.
Structure of an archive
An archive consists of exactly one Standard Header and one or more Entity Blocks . Each Entity Block consists of exactly one Entity Description Block and at most one File Data Block. Each FIle Data Block consist of one or several Data Chunk Blocks. All values are stored in little-endian byte order, unless otherwise specified. All textual data, e.g. file names and symlink targets, must be written as little-endian UTF-8, non null terminated strings, for the widest compatibility possible.
Standard Header
The function of the Standard Header is to allow identification of the archive format and supply the client with general information regarding the archive at hand. It is a binary block appearing at the beginning of the archive file and there alone. It consists of the following data (in order of appearance): Signature, 3 bytes Major version, 1 byte Minor version, 1 byte The bytes 0x4A 0x50 0x54 (uppercase ASCII string JPS) used for identification purposes. Unsigned integer represented as single byte, holding the archive format major version, e.g. 0X01 for version 1.9. Unsigned integer represented as single byte, holding the archive format minor version, e.g. 0X09 for version 1.9.
124
The total length of extra headers. In version 1.9 of the format it is always 0.
The total size of this header is 8 bytes, plus the size of the extra headers (if any).
Entity Block
An Entity Block is merely the aggregation of exactly one Entity Description Block, followed by the encrypted contents of exactly one Entity Description Block Data and zero or one instances of a File Data Block. An Entity can be at present a File, Symbolic Link or Directory. If the entity is a File of zero length or if it is a Directory the File Data Block is omitted. In any other case, the File Data Block must exist.
Holds the complete (relative) path of the Entity as a UTF16 encoded string, without trailing null. The path separator must be a forward slash (/), even on systems which use a different path separator, e.g. Windows. 0x00 for directories (instructs the client to recursively create the directory specified in Entity path data). When the entity type is 0x00 the Compression Type MUST be 0x00 as well. 0x01 for files (instructs the client to reconstruct the file specified in Entity path data) 0x02 for symbolic links (instructs the client to create a symbolic link whose target is stored, uncompressed, as the entity's File Data Block). When the type is 0x00 the Compression Type MUST be 0x00 as well.
0x00 for no compression; the data contained in File Data Block should be written as-is to the file. Also used for directories, symbolic links and zero-sized files. 0x01 for deflate (Gzip) compression; the data contained in File Data Block must be deflated using Gzip before written to the file.
125
0x02 for Bzip2 compression; the data contained in File Data Block must be uncompressed using BZip2 before written to the file. This is generally discouraged, as both the archiving and unarchiving scripts must be ran in a PHP environment which supports the bzip2 library. Uncompressed size, 4 bytes Entity permissions, 4 bytes File Modification Time, 4 bytes An unsigned long integer representing the size of the resulting file in bytes. For directories, symlinks and zero-sized files it is zero (0x00000000). UNIX-style permissions of the stored entity. The UNIX timestamp of the file's last modification time. For directories and symlinks it must be ignored and set to 0x00000000.
End-of-archive header
This header is written after the end of the archive data, at the end of the last part of the archive. When creating spanned archives, the first file (part) of the archive set has an extension of .j01, the next part has an extension of .j02 and so on. The last file of the archive set has the extension .jps. You must also ensure that the Entity Description Block is within the limits of a single part, i.e. the contents of the Entity Description Block must not cross part boundaries. The File Data Block data can cross one or multiple part blocks, but the header of each Data Chunk Block must both be inside the same part. This header is written after the end of the archive data, at the end of the last part of the archive. Its structure is:
126
Signature, 3 bytes Number of parts, 2 bytes File count, 4 bytes Uncompressed size, 4 bytes Compressed size, 4 bytes
The bytes 0x4A, 0x50, 0x45 ("JPE") The total number of parts this archive consists of. Non-spanned archives should set this to 1.
Unsigned long integer represented as four bytes, holding the number of files present in the archive. Unsigned long integer represented as four bytes, holding the total size of the archive's files when uncompressed. Unsigned long integer represented as four bytes, holding the total size of the archive's files in their stored (compressed) form
The size of the EOA header is 17 bytes for version 1.9 of the format.
Change Log
Revision History July 2010 Described version 1.9 NKD, Akeeba Developershttp:// www.akeebabackup.com
127
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
128
or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-net-
129
work location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M.Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
130
O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
131
is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
132
dation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
133