Как говорится существуют админы, которые еще не делают бэкап своих серверов и те, которые уже делают. Так вот я отношусь ко вторым :). Бэкап позволяет в случае падения в кратчайшие сроки восстановить рабочую конфигурацию, и самое главное способствует хорошему сну В этой статье я не буду затрагивать специфичные утилиты бэкапа, а приведу пример рабочего скрипта для архивирования нужный каталогов сервера и отсылки его на FTP-хранилище. Для этого нужно немного знать один из языков (Perl, Python, Bash) и умение пользоваться crontab.
Пример скрипта, написан на Perl, пользуйтесь на здоровье.

#!/usr/bin/perl 

#
#
#       Copyright (C) 2011 Mihail Belobrov <mihail[dot]belobrov[at]gmail.com>
#
#       Скрипт бэкапа сервера

use warnings;

use Net::FTP;

$date=`/bin/date +%a`;
#$date=`/bin/date +%d%m%Y`;
chomp($date);

$host="10.0.1.223";
$login="Server_AST";
$passwd="VurDFG56fdf43SRE";
$sys_dir="system";
$aster_dir="asterisk";
$mysql_dir="mysql";
$WORKDIR="/opt/backup";

$time=`/bin/date +%d%m%Y_%T`;

print '-' x 45;
print "\n$time";
print '-' x 45; print "\n";

#name system directory
$etc='etc_'.$date.'.tar.gz';
$home='home_'.$date.'.tar.gz';
$root='root_'.$date.'.tar.gz';
$var_www='var_www_'.$date.'.tar.gz';
$var_log='var_log_'.$date.'.tar.gz';

#name asterisk directory
$etc_asterisk='etc_asterisk_'.$date.'.tar.gz';
$var_lib_asterisk='var_lib_asterisk_'.$date.'.tar.gz';
$var_spool_asterisk='var_spool_asterisk_'.$date.'.tar.gz';

#Получаем список баз без информацонных
open(LINE, "mysql -uroot -pStars35SSS -e \'show databases;\' | grep -v information_schema | grep -v Database |");

#бэкапим
while (<LINE>)  {
    chomp();
    print "$_ \n";
    system("mysqldump -R -uroot -pStars35SSS $_ | gzip -f > $WORKDIR/$_\_$date\.sql\.gz");
}

#backup system  directory
system("tar -czvf $WORKDIR/$etc /etc --exclude \"/etc/asterisk\"");
system("tar -czvf $WORKDIR/$root /root");
system("tar -czvf $WORKDIR/$home /home");
system("tar -czvf $WORKDIR/$var_log /var/log");
system("tar -czvf $WORKDIR/$var_www /var/www");

#backup asterisk directory
system("tar -czvf $WORKDIR/$etc_asterisk /etc/asterisk");
system("tar -czvf $WORKDIR/$var_lib_asterisk /var/lib/asterisk");
system("tar -czvf $WORKDIR/$var_spool_asterisk /var/spool/asterisk");

#backup crontab root
system("/usr/bin/crontab -l > $WORKDIR/$crontab");

sleep(1);

#generate md5sum
system("/usr/bin/md5sum  $WORKDIR/* > $WORKDIR/sum.md5 ");

#Connecting to backup FTP sewers
$ftp = Net::FTP->new($host, Debug => 1) or die "Cannot connect to $host: $@";
$ftp->login("$login","$passwd") or die "Cannot login ", $ftp->message;
$ftp->binary() or die "Cannot call method\n", $ftp->message;

#Change directory and put dump
$ftp->cwd ("/$mysql_dir") or die "Cannot access to directory\n", $ftp->message;

open(LINE, "mysql -uroot -pStars35SSS -e \'show databases;\' | grep -v information_schema | grep -v Database |");

while (<LINE>)  {
    chomp();
    print "Send to FTP $_ \n";
    $ftp->put("$WORKDIR/$_\_$date\.sql\.gz") or die "Cannot put file\n",$ftp->message;
}

$ftp->cwd ("/$sys_dir") or die "Cannot access to directory\n", $ftp->message;
$ftp->put("$WORKDIR/$etc") or die "Cannot put file\n",$ftp->message;
$ftp->put("$WORKDIR/$root") or die "Cannot put file\n",$ftp->message;
$ftp->put("$WORKDIR/$home") or die "Cannot put file\n",$ftp->message;
$ftp->put("$WORKDIR/$var_log") or die "Cannot put file\n",$ftp->message;
$ftp->put("$WORKDIR/$var_www") or die "Cannot put file\n",$ftp->message;
$ftp->put("$WORKDIR/$crontab") or die "Cannot put file\n",$ftp->message;

$ftp->cwd ("/$aster_dir") or die "Cannot access to directory\n", $ftp->message;
$ftp->put("$WORKDIR/$etc_asterisk") or die "Cannot put file\n",$ftp->message;
$ftp->put("$WORKDIR/$var_lib_asterisk") or die "Cannot put file\n",$ftp->message;
$ftp->put("$WORKDIR/$var_spool_asterisk") or die "Cannot put file\n",$ftp->message;

$ftp->quit;

#удаляем временные файлы
system("rm $WORKDIR/$crontab  $WORKDIR/$var_lib_asterisk $WORKDIR/$var_spool_asterisk  $WORKDIR/$etc $WORKDIR/$home $WORKDIR/$root $WORKDIR/$var_log $WORKDIR/$var_www $WORKDIR/$etc_asterisk");

#удаляем временные файлы баз
open(LINE, "mysql -uroot -pStars35SSS -e \'show databases;\' | grep -v information_schema | grep -v Database |");

while (<LINE>)  {
    chomp();
    print "Remove $_ \n";
    system("/bin/rm $WORKDIR/$_\_$date\.sql\.gz");
}

print '-' x 50; print "\n";

Осталось добавить скрипт в крон

#Make backup
0 5 * * * /usr/bin/perl /root/scripts/ftp_backup.pl > /var/log/ftp_backup.log 2>&1