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.

Learn more »

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!

View details »

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

View details »

Requirements

  • All POSIX OS (Linux/BSD/UNIX-like OSes), 32-bit and 64-bit MS Windows
  • Perl 5.16 and later
  • SQLite

Recommendations

View details »


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

Figure #1. Typical work example
  1. Server1 compresses Object1 and Object2
  2. Server1 sends the resulting archive to local storage
  3. Next, the status of the operation performed is registered on the Collector server
  4. Collector server saves the received data in the database
  5. Next, steps 2-4 are repeated for FTP, SFTP and HTTP storages
  6. Server2 compresses Object3
  7. Server2 sends the resulting archive to SFTP storage
  8. The status of the operation performed is registered on the Collector server
  9. 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

App-MBUtiny.tar.gz

We recommend the use of a CPAN:

# sudo cpan install App::MBUtiny
# sudo mbutiny configure

Now, try run:

# mbutiny -d test

Resources

  1. How do I get started?
  2. How do I use collector server?
  3. 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.