Here is a very simple script to replicate data from one Firebase RTD to a backup RTD. Just be sure to modify the array of root keys (@firebaseBackupKeys) to reflect your database. This version can be called from a web browser, or via a cron job.
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
print 'Content-type: text/html', "\n\n";
use Firebase;
# Get a connection to Firebase;
$fb = Firebase->new(
firebase => 'SourceFirebase',
);
# Backup Firebase Database:
$fbb = Firebase->new(
firebase => 'DestinationFirebase',
);
@firebaseBackupKeys = ('config', 'devices', 'purchases',
'subscribers', 'subscriptionOffers', 'subscriptions' );
&FirebaseToFirebase();
sub getFirebaseItem {
my ($firebaseObject, $firebaseParentPath) = @_;
# Returns a ref to a hash:
return $firebaseObject->get($firebaseParentPath);
}
sub putFirebaseItem {
my ($firebaseObject, $path, $hashRefParams) = @_;
$firebaseObject->put($path, $hashRefParams);
}
sub FirebaseToFirebase {
my $messages = "";
foreach $dbKey (@firebaseBackupKeys){
# Replicate all of the data from the initial firebase $fb to the backup $fbb
$childOfKey = &getFirebaseItem(
$fb,
"/".$dbKey
);
$messages = $messages . "<p>Received $dbKey </p>";
&putFirebaseItem($fbb, "/".$dbKey, $childOfKey );
$messages = $messages . "<p>Replicated $dbKey </p>";
}
print($messages);
}
