AIXF Backup Combo

AIXF Backup Combo 2.0.0

No permission to download

fords8

Active member
fords8 submitted a new resource:

AIXF Backup Combo - Backup tool with mysqldump and PHP export options. Super admins only.

# 📦 AIXF Backup Combo

## Overview
A flexible, super admin–only database backup tool for XenForo 2.3+
Choose between mysqldump (fast server-level export) or PHP-based export (shared-hosting–friendly).
Backups are stored in /internal_data/aixf_backupcombo and can be downloaded or deleted directly from the Admin CP.

## 🚀 Features
  • Super admin–only access for security.
  • One-click database backup from the Admin CP.
  • Backups...

Read more about this resource...
 
I started out with a linux version of this. Which I have an addon for just that. But really wanted something for shared hosting as well.
Would you mind if I shared some template code I did?
You'd be free to use it yourself, and adapt it to your addon.

Personally I'm just not keen on the look of Exisiting backups section. It looks like a table, but doesn't look to be structured like one.
 
Would you mind if I shared some template code I did?
You'd be free to use it yourself, and adapt it to your addon.

Personally I'm just not keen on the look of Exisiting backups section. It looks like a table, but doesn't look to be structured like one.
No, not at all. Since this is admin areas, I wasn't to worried about the look of it.
 
So this is my backup template for daily backups.
HTML:
<div class="block">
    <div class="block-container">
        <h3 class="block-header">{{ phrase('daily_backups') }}</h3>
        <div class="block-body">
            <xf:datalist>
                <xf:datarow rowtype="header">
                    <xf:cell>{{ phrase('date') }}</xf:cell>
                    <xf:cell>{{ phrase('type') }}</xf:cell>
                    <xf:cell>{{ phrase('duration') }}</xf:cell>
                    <xf:cell>{{ phrase('status') }}</xf:cell>
                    <xf:cell></xf:cell>
                    <xf:cell></xf:cell>
                <xf:cell></xf:cell>
                </xf:datarow>

                <xf:foreach loop="$dailyBackups" key="$subdir" value="$backup">
                    <xf:datarow>
                        <xf:main label="{{ date($backup.runtime, 'M j, Y g:i a') }}" />
                        <xf:cell>
                            <ul class="listInline listInline--bullet" style="justify-content: center; margin: 0;" role="list">
                                <xf:if is="$backup.mysql.enable">
                                    <li><xf:fa icon="fa-database" /> {{ phrase('database') }}</li>
                                </xf:if>
                                <xf:if is="$backup.files.enable">
                                    <li><xf:fa icon="fa-file" /> {{ phrase('files') }}</li>
                                </xf:if>
                            </ul>
                        </xf:cell>
                        <xf:cell>
                            <xf:fa icon="fa-clock" />
                            {{ number($backup.endtime - $backup.runtime) }}s
</xf:cell>
                        <xf:cell>
                            <xf:if is="$backup.endtime">
                                <span class="label label--success">
                                    <xf:fa icon="fa-check" /> {{ phrase('complete') }}
</span>
                            <xf:else />
                                <span class="label label--warning">
                                    <xf:fa icon="fa-exclamation-triangle" /> {{ phrase('incomplete') }}
</span>
                            </xf:if>
                        </xf:cell>
                        <xf:action href="{{ link('backup_history/details', null, {'subdir': $subdir}) }}"
                                  overlay="true"
                                  title="{{ phrase('view_backup_details') }}">
                            <xf:fa icon="fa-search" />
                        </xf:action>
                        <xf:action href="{{ link('backup_history/download', {'subdir': $subdir}) }}"
                                  title="{{ phrase('download_backup') }}">
                            <xf:fa icon="fa-download" />
                        </xf:action>
                   <xf:action href="{{ link('backup_history/delete', {'subdir': $subdir}) }}"
                           overlay="true"
                           title="{{ phrase('delete_backup') }}">
                      <xf:fa icon="fa-trash" />
                   </xf:action>
                    </xf:datarow>
                </xf:foreach>
            </xf:datalist>
        </div>
    </div>
</div>
Resulting in this look:
1755024463975.webp
 
I built this myself, after I couldn't find anything that fit what I needed.

I'm not confident the retention of backups works 100% though so I haven't released it.
Yeah, I tested mine on my dev setup. And on a live site. Which worked well on both for me. Databases were not huge. Doesn't hurt to still backup in Cpanel or whatever other way you do it. Mine doesn't have automatic in it.
 
Yeah, I tested mine on my dev setup. And on a live site. Which worked well on both for me. Databases were not huge. Doesn't hurt to still backup in Cpanel or whatever other way you do it. Mine doesn't have automatic in it.
I set mine up for both manual and automatic backups, and it is designed to keep x daily backups, x weekly backups, x monthly backups and x manual backups.

The backups themseleves take no time at all. But making sure the clean up of old backups works as intended thats harder to test, especially with this type of set up.

Thats why I have my addon running on a live and test dev enviroment so I can see in a month or so if it all works out :)
 
Back
Top Bottom