Linux sunucularda kullandığınız kontrol paneline bağlı olarak.Aldığınız yedekleri zamanlı olarak size ait başka sunucuda olan ftp hesabınıza yükletmeye yarayan php ve bash script destekli yazılımı veriyorum.Yazılım arayüzü oldukca basit.
Demo : http://bash.cyberciti.biz/backup/wizard-ftp-script.php
[php]
<?php
/****************************************************************
* Copyright (c) 2005-2006 nixCraft <http://www.cyberciti.biz/>
* This script is licensed under GNU GPL version 2.0 or above
* You are free to copy, modify, improve – php source code under
* GNU GPL version 2.0 or above.
****************************************************************/
// Make sure form is submitted by user
if(!(isset($_POST[‘showftpscript’]))) {
// if not display them form
writeHead("FTP MySQL and Webserver System Backup script",true);
writeForm();
writeFoot();
}
else {
$_POST[‘dirs’] = stripslashes(trim($_POST[‘dirs’]));
$_POST[‘ftpservername’] = stripslashes(trim($_POST[‘ftpservername’]));
$_POST[‘ftpuser’] = stripslashes(trim($_POST[‘ftpuser’]));
$_POST[‘ftppasswd’] = stripslashes(trim($_POST[‘ftppasswd’]));
$_POST[‘ftpbakdir’] = stripslashes(trim($_POST[‘ftpbakdir’]));
$_POST[‘mysqlpassword’] = stripslashes(trim($_POST[‘mysqlpassword’]));
$_POST[‘mysqluser’] = stripslashes(trim($_POST[‘mysqluser’]));
$_POST[‘mysqlhost’] = stripslashes(trim($_POST[‘mysqlhost’]));
$OUT="#!/bin/sh\n";
$OUT .= "# System + MySQL backup script\n";
$OUT .= "# Full backup day – " .$_POST[‘fullbackupday’]. " (rest of the day do incremental backup)\n";
$OUT .= "# Copyright (c) 2005-2006 nixCraft <http://www.cyberciti.biz/fb/>\n";
$OUT .= "# This script is licensed under GNU GPL version 2.0 or above\n";
$OUT .= "# Automatically generated by http://bash.cyberciti.biz/backup/wizard-ftp-script.php\n";
$OUT .= "# ———————————————————————\n";
$OUT .= "\n### System Setup ###\n";
$OUT .= ‘DIRS="’ .$_POST[‘dirs’]. ‘"’ ."\n";
$OUT .= "BACKUP=/tmp/backup.$$\n";
$OUT .= ‘NOW=$(date +"%d-%m-%Y")’."\n";
$OUT .= ‘INCFILE="/root/tar-inc-backup.dat"’."\n";
$OUT .= ‘DAY=$(date +"%a")’."\n";
$OUT .= ‘FULLBACKUP="’ .$_POST[‘fullbackupday’]. ‘"’ ."\n";
$OUT .="\n### MySQL Setup ###\n";
$OUT .= ‘MUSER="’ .$_POST[‘mysqluser’]. ‘"’ ."\n";
$OUT .= ‘MPASS="’ .$_POST[‘mysqlpassword’]. ‘"’ ."\n";
$OUT .= ‘MHOST="’ .$_POST[‘mysqlhost’]. ‘"’ ."\n";
$OUT .= ‘MYSQL="$(which mysql)"’."\n";
$OUT .= ‘MYSQLDUMP="$(which mysqldump)"’."\n";;
$OUT .= ‘GZIP="$(which gzip)"’."\n";
$OUT .="\n### FTP server Setup ###\n";
$OUT .= ‘FTPD="’ . $_POST[‘ftpbakdir’]. ‘/incremental"’ ."\n";
$OUT .= ‘FTPU="’ . $_POST[‘ftpuser’]. ‘"’ ."\n";
$OUT .= ‘FTPP="’ . $_POST[‘ftppasswd’]. ‘"’ ."\n";
$OUT .= ‘FTPS="’ . $_POST[‘ftpservername’]. ‘"’ ."\n";
$OUT .= ‘NCFTP="$(which ncftpput)"’."\n";
$OUT .="\n### Other stuff ###\n";
$OUT .= ‘EMAILID="’.$_POST[’emailid’]. ‘"’ ."\n";
$OUT .= "\n### Start Backup for file system ###\n";
$OUT .= ‘[ ! -d $BACKUP ] && mkdir -p $BACKUP || :’ ."\n";
$OUT .= "\n### See if we want to make a full backup ###\n";
$OUT .= ‘if [ "$DAY" == "$FULLBACKUP" ]; then’ ."\n";
$OUT .= ‘ FTPD="’.$_POST[‘ftpbakdir’].’/full"’ ."\n";
$OUT .= ‘ FILE="fs-full-$NOW.tar.gz"’ ."\n";
$OUT .= ‘ tar -zcvf $BACKUP/$FILE $DIRS’ ."\n";
$OUT .= ‘else’ ."\n";
$OUT .= ‘ i=$(date +"%Hh%Mm%Ss")’ ."\n";
$OUT .= ‘ FILE="fs-i-$NOW-$i.tar.gz"’ ."\n";
$OUT .= ‘ tar -g $INCFILE -zcvf $BACKUP/$FILE $DIRS’ ."\n";
$OUT .= ‘fi’ ."\n";
$OUT .= "\n### Start MySQL Backup ###\n";
$OUT .= "# Get all databases name\n";
$OUT .= ‘DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse \’show databases\’)"’ ."\n";
$OUT .= ‘for db in $DBS’ ."\n";
$OUT .= ‘do’ ."\n";
$OUT .= ‘ FILE=$BACKUP/mysql-$db.$NOW-$(date +"%T").gz’ ."\n";
$OUT .= ‘ $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE’ ."\n";
$OUT .= ‘done’ ."\n";
$OUT .= "\n### Dump backup using FTP ###\n#Start FTP backup using ncftp\n";
$OUT .= ‘ncftp -u"$FTPU" -p"$FTPP" $FTPS<<EOF’ ."\n";
$OUT .= ‘mkdir $FTPD’ ."\n";
$OUT .= ‘mkdir $FTPD/$NOW’ ."\n";
$OUT .= ‘cd $FTPD/$NOW’ ."\n";
$OUT .= ‘lcd $BACKUP’ ."\n";
$OUT .= ‘mput *’ ."\n";
$OUT .= ‘quit’ ."\n";
$OUT .= ‘EOF’ ."\n";
$OUT .= "\n### Find out if ftp backup failed or not ###\n";
$OUT .= ‘if [ "$?" == "0" ]; then’ ."\n";
$OUT .= ‘ rm -f $BACKUP/*’ ."\n";
$OUT .= ‘else’ ."\n";
$OUT .= ‘ T=/tmp/backup.fail’ ."\n";
$OUT .= ‘ echo "Date: $(date)">$T’ ."\n";
$OUT .= ‘ echo "Hostname: $(hostname)" >>$T’ ."\n";
$OUT .= ‘ echo "Backup failed" >>$T’ ."\n";
$OUT .= ‘ mail -s "BACKUP FAILED" "$EMAILID" <$T’ ."\n";
$OUT .= ‘ rm -f $T’ ."\n";
$OUT .= ‘fi’ ."\n";
writeHead("Your Shell Script code",false);
echo "<p>Your Shell Script code:</p>\n\n";
echo ‘<p><textarea readonly rows="20" cols="95" onclick="this.focus();this.select()">’.$OUT."</textarea></p>\n\n";
echo "<p><a href=’wizard-ftp-script.php’><< Back to Script Setup</a>\n";
echo " | <a href=’http://bash.cyberciti.biz/’>Shell script home</a> | <a href=’http://www.cyberciti.biz/tips/how-to-backup-mysql-databases-web-server-files-to-a-ftp-server-automatically.html’>Back to article</a> </p>\n";
writeFoot();
}
function writeForm() {
echo ‘
<h3>Use following form to generate backup ftp script <span style="color: rgb(255, 0, 0);">:)</span></h3>
<script>
function checkForm() {
if (document.forms.backupFtpScript.elements[\’lbldirs\’].value.length == 0) {
alert(\’Please enter a value for the "Backup directory name" field\’);
return false;
}
if (document.forms.backupFtpScript.elements[\’lblftpservername\’].value.length == 0) {
alert(\’Please enter a value for the "FTP Server Name" field\’);
return false;
}
if (document.forms.backupFtpScript.elements[\’lblftpuser\’].value.length == 0) {
alert(\’Please enter a value for the "FTP User Name" field\’);
return false;
}
if (document.forms.backupFtpScript.elements[\’lblftppasswd\’].value.length == 0) {
alert(\’Please enter a value for the "FTP User Password" field\’);
return false;
}
if (document.forms.backupFtpScript.elements[\’lblftpbakdir\’].value.length == 0) {
alert(\’Please enter a value for the "FTP Backup directory" field\’);
return false;
}
if (document.forms.backupFtpScript.elements[\’lblmysqlpassword\’].value.length == 0) {
alert(\’Please enter a value for the "MySQL User Password" field\’);
return false;
}
if (document.forms.backupFtpScript.elements[\’lblmysqluser\’].value.length == 0) {
alert(\’Please enter a value for the "MySQL User Name" field\’);
return false;
}
if (document.forms.backupFtpScript.elements[\’lblmysqlhost\’].value.length == 0) {
alert(\’Please enter a value for the "MySQL Server Host Name" field\’);
return false;
}
if (document.forms.backupFtpScript.elements[\’lblemailid\’].value.length == 0) {
alert(\’Please enter a value for the "MySQL Server Host Name" field\’);
return false;
}
return true;
}
</script>
<div class="nixcraftWizform">
<form action="wizard-ftp-script.php" method="post" onSubmit="return checkForm()" name="backupFtpScript">
<div class="nixcraftWizleft"><label for="lbldirs">Backup directory name(s): </label></div>
<div class="nixcraftWizright"><input type="text" name="dirs" id="lbldirs" size="50" maxlength="300" value="/etc /home" /> <small>(White/blank space separated directory name)</small></div>
<div class="nixcraftWizleft"><label for="lblftpservername">FTP Server name/ip address: </label></div>
<div class="nixcraftWizright"><input type="text" name="ftpservername" id="lblftpservername" size="30" maxlength="50" value="192.168.1.100" /> <small>(Example: ftp.yourdomain.com)</small></div>
<div class="nixcraftWizleft"><label for="lblftpuser">FTP User Login name: </label></div>
<div class="nixcraftWizright"><input type="text" name="ftpuser" id="lblftpuser" size="30" maxlength="50" value="" /> <small>(Remote FTP Server User Name)</small></div>
<div class="nixcraftWizleft"><label for="lblftppasswd">FTP User Password: </label></div>
<div class="nixcraftWizright"><input type="text" name="ftppasswd" id="lblftppasswd" size="30" maxlength="50" value="" /> <small>(Remote FTP Password)</small></div>
<div class="nixcraftWizleft"><label for="lblftpbakdir">FTP Path: </label></div>
<div class="nixcraftWizright"><input type="text" name="ftpbakdir" id="lblftpbakdir" size="30" maxlength="50" value="/" /> <small>(This path must already exist on your server)</small></div>
<div class="nixcraftWizleft"><label for="lblmysqlhost">MySQL Hostname/IP address Name: </label></div>
<div class="nixcraftWizright"><input type="text" name="mysqlhost" id="lblmysqlhost" size="30" maxlength="50" value="localhost" /> <small>(Default is localhost)</small></div>
<div class="nixcraftWizleft"><label for="lblmysqluser">MySQL User Name: </label></div>
<div class="nixcraftWizright"><input type="text" name="mysqluser" id="lblmysqluser" size="30" maxlength="50" value="root" /> <small>(default is root or admin)</small></div>
<div class="nixcraftWizleft"><label for="lblmysqlpassword">MySQL User Password: </label></div>
<div class="nixcraftWizright"><input type="text" name="mysqlpassword" id="lblmysqlpassword" size="30" maxlength="50" value="" /> <small>(MySQL User Password)</small></div>
<div class="nixcraftWizleft"><label for="lblfullday">Select full backup day: </label></div>
<div class="nixcraftWizright"><select name="fullbackupday">
<option value="Sun">Sunday</option>
<option value="Mon">Monday</option>
<option value="Tue">Tuesday</option>
<option value="Wed">Wednesday</option>
<option value="Thu">Thursday</option>
<option value="Fri">Friday</option>
<option value="Sat">Saturday</option>
</select> <small>(Full backup day)</small>
</div>
<div class="nixcraftWizleft"><label for="lblemailid">Your (admin) Email ID: </label></div>
<div class="nixcraftWizright"><input type="text" name="emailid" id="lblemailid" size="30" maxlength="50" value="you@yourdomain.com" /> <small>(Receive an email when FTP backup fails)</small></div>
<div class="nixcraftWizright"><input type="submit" name="Submit" value="Generate FTP backup script" id="genftpscript" />
<input type="hidden" name="showftpscript" value="process" /></div>
</form>
</div>
‘;
}
function writeHead($title,$showcss=false){
echo ‘<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> ‘ .$title. ‘</title>
<script src="/mint/?js" type="text/javascript"></script>’;
if ( $showcss ) writeCss();
echo ‘</head>
<body>’;
}
/////////////////////////
function writeFoot(){
echo "<hr>\n";
echo "<center>© 2005-2006 <a href=’http://www.cyberciti.biz/’>nixCraft</a> – View <a href=wizard-ftp-script.php.txt>php source code</a> </center>\n";
echo "</body>\n</html>";
@include_once("/apps/include.genlib.php");
yTraceMe();
}
///////////////////////
function writeCss(){
echo ‘<style type="text/css" media="screen">
.nixcraftWizform {
position: static;
overflow: hidden;
}
.nixcraftWizleft {
width: 25%;
text-align: right;
clear: both;
float: left;
display: inline;
padding: 4px;
margin: 5px 0;
}
.nixcraftWizright {
width: 70%;
text-align: left;
float: right;
display: inline;
padding: 4px;
margin: 5px 0;
}
.nixcraftWizerror {
border: 1px solid #ff0000;
}
.nixcraftWizsubmit {
}
</style>
‘;
}
?>
[/php]
Yazılımın güzel yanı yedek yüklendikten sonra size uyarı maili atabilmesi ayrıca crontab ekleyerek istediğiniz günlerde yedek aldırma özelliği mevcut.