App::MBUtiny
Websites and any file system elements backup tool
This tool allows you to back up your data to local and remote storage. SFTP, FTP, HTTP and other servers can be used as storage. Each backup is registered on the collector server. Collector data can be used to send daily reports to your email address.
Why App::MBUtiny?
- SFTP storages are supported as standard.
- Easy install procedure and configuration
- It is possible to send an created backup archive to several storages simultaneously
- The project includes the possibility of monitoring
- There are simple server and collector examples
- Almost all current operating systems are supported
- It is free!
Features
- BackUp web sites (content)
- BackUp small databases
- Running external scripts/commands and BackUp result of their work
- Supported SFTP, FTP, HTTP and Local storages
- Easy installation via CPAN
- The collector server is supported
Requirements
- All POSIX OS (Linux/BSD/UNIX-like OSes), 32-bit and 64-bit MS Windows
- Perl 5.16 and later
- SQLite
Recommendations
- Apache 2.2/2.4, with CGI or FastCGI modules
- LWP::Protocol::https module
- Mozilla::CA
What is App::MBUtiny?
App::MBUtiny is a tool written in Perl language that allows you to backup your data. As a storage for your backups, you can use a local folder, a folder located on other media, an SFTP or FTP remote folder, an HTTP server and any other file storage facility
Archive files can be maked by simply copying objects (files, directories, etc.), and then compressing them using standard compression utilities, such as tar, gzip, zip, bzip2, xz, rar, etc. In addition to regular copying, copying is also supported "in exclusion mode"; this is when the folder and files are copied, excluding some of them.
App::MBUtiny also supports the execution of third-party tools for the making of objects for further backup, for example: mysqldump, pg_dump, svnadmin dump
How it works
- Server1 compresses Object1 and Object2
- Server1 sends the resulting archive to local storage
- Next, the status of the operation performed is registered on the Collector server
- Collector server saves the received data in the database
- Next, steps 2-4 are repeated for FTP, SFTP and HTTP storages
- Server2 compresses Object3
- Server2 sends the resulting archive to SFTP storage
- The status of the operation performed is registered on the Collector server
- Collector server saves the received data in the database
Example of config file
<Host foo>
Enable yes
<SendMail>
To to@example.com
Cc cc@example.com
From from@example.com
SMTP 192.168.0.1
</SendMail>
SendReport no
SendErrorReport yes
BUday 3
BUweek 3
BUmonth 3
Trigger test -d ./test || mkdir ./test
Trigger ls -la > ./test/my.lst
Trigger test -d ./test/foo || mkdir ./test/foo
Trigger echo test > ./test/foo/test1.txt
Trigger echo test > ./test/foo/test2.txt
Trigger ls -la > ./test/foo/dir.lst
Trigger test -d ./test/bar || mkdir ./test/bar
Trigger echo test > ./test/bar/test1.txt
Trigger echo test > ./test/bar/test2.txt
Trigger echo test > ./test/bar/test3.txt
Trigger ls -la > ./test/bar/dir.lst
Trigger test -d ./test/bar/exc || mkdir ./test/bar/exc
Trigger ls -la > ./test/bar/exc/dir.lst
Trigger mysqldump -f -h mysql.host.com -u user --port=3306 --password=password \
--add-drop-table --default-character-set=utf8 \
--databases databasename > ./test/databasename.sql
Object ./test/dir.lst
Object ./test/foo
Object ./test/databasename.sql
<Collector>
URL https://user:password@collector.example.com/collector.cgi
Comment Collector said blah-blah-blah # Optional for collector
TimeOut 15
</Collector>
<Local>
FixUP off
Localdir ./test/mbutimy-local1
Localdir ./test/mbutimy-local2
#Comment Local storage said blah-blah-blah # Optional for collector
</Local>
<SFTP>
FixUP on
URL sftp://user@example.com:22/path/to/backup/dir1
URL sftp://user@example.com:22/path/to/backup/dir2
Set key_path /path/to/private/file.key
Comment SFTP storage said blah-blah-blah # Optional for collector
</SFTP>
</Host>
Example of collector CGI script
#!/usr/bin/perl -w
use strict;
use utf8;
use CGI;
use App::MBUtiny::Collector::Server "/mbutiny";
my $q = new CGI;
my $server = new App::MBUtiny::Collector::Server(
project => "MBUtiny",
ident => "mbutiny",
log => "on",
logfd => fileno(STDERR),
);
$server->status or die($server->error);
print $server->call($q->request_method, $q->request_uri, $q) or die($server->error);
Download
You can download the distribution from the SourceForge site or from the CPAN
We recommend the use of a CPAN:
# sudo cpan install App::MBUtiny
# sudo mbutiny configure
Now, try run:
# mbutiny -d test
Resources
- How do I get started?
- How do I use collector server?
- Want to know more?
Support
App::MBUtiny is a community driven project and you can find help and support on the CPAN and SourceForge sites, but also on community based help sites like PerlMonks and Stack Overflow. You can also refer to the official App::MBUtiny documentation for more details.