maneira conveniente e fácil de fazer backup do mySQL & SVN na máquina Ubuntu

2

Eu trabalho como desenvolvedor em uma pequena empresa e estou longe de ser um linux-pro ou admin. No entanto, eu configurei um servidor Ubuntu para propósitos de documentação (LAMP com wiki) e versionamento (SVN).

Nosso outro ambiente é totalmente baseado no Windows. Eu quero fazer backup de ambos, o repositório SVN e o banco de dados mySQL. Para esse fim, nosso administrador configurou um compartilhamento em nosso servidor de backup.

O que eu quero é um conveniente & Uma maneira fácil de empacotar todo o material necessário (para restaurar o wiki e o material do SVN) e colocá-lo nesse diretório compartilhado (que é feito em uma base regular).

O que preciso fazer backup?

  • SQL-dump
  • diretório SVN
  • ???

Como faço isso?

  • Eu sei como criar um dump SQL e salvá-lo em um diretório, é claro, mas o que vem depois & o que mais?

Como eu automatizo essas tarefas?

  • Eu sei como fazer isso no Windows, mas não no Linux
por Michael Niemand 27.07.2009 / 13:10

3 respostas

1

Eu recomendaria usar o pacote backupninja - é basicamente um wrapper para alguns scripts automáticos para fazer backup de vários serviços. Eu posso usar duplicity , rdiff-backup (minha preferência), gravar ISOs de DVD, etc.

sudo apt-get install backupninja rdiff-backup

E para você começar (irá guiá-lo através da criação de várias partes):

sudo ninjahelper

Isso também permite que você adicione caminhos aleatórios ao backup, quando estiver no mesmo. De ter resgatado algumas máquinas do backup, acho útil ser capaz de copiar um arquivo conhecido / etc, / srv / http (onde eu mantenho o material da web) e despejos de banco de dados.

Uma vez feito isso, o único problema é que o ninjahelper insiste que você quer definir uma senha root na máquina remota - ou manualmente transferir uma chave SSH (SE você faz backups remotos):

Na máquina local:

sudo ssh-keygen
sudo scp /root/.ssh/id_dsa.pub [email protected]:backup_key

O Ubuntu vem com um usuário de backup por padrão, então adicionamos a chave SSH para permitir logins remotos:

sudo mkdir -p /var/backup/.ssh
sudo mv backup_key /var/backup/.ssh/authorized_keys
sudo chown backup:backup /var/backup/.ssh/authorized_keys

(Isto é da memória, então eu posso estar um pouco fora dos comandos exatos ...)

    
por 27.07.2009 / 23:13
1

Você precisará fazer backup dos arquivos do Wiki e do SVN, bem como dos bancos de dados. Eu recomendo strongmente que você mantenha mais de um backup. Se você tem apenas um backup que você sobrescreve todos os dias, você pode facilmente acabar substituindo seu único backup por dados corrompidos, caso algo aconteça com seus dados. Eu sugeriria uma estratégia de backup de sete dias, digamos, usando um backup de segunda, terça etc. Dessa forma, você tem uma semana para perceber que há um problema antes de substituir seu último backup válido por dados corrompidos.

De longe, a coisa mais simples a fazer é escrever o seu próprio script de backup que, então, é chamado todas as noites pelo cron do root. Pessoalmente eu uso o Perl para meus scripts porque essa é a minha escolha, mas você pode usar qualquer linguagem de script que desejar. o que você escolher para escrever, você vai acabar usando as mesmas ferramentas:

  1. tar - para criar um arquivo
  2. mysqldump - para exportar os bancos de dados
  3. SCP / SFTP / rsync - você precisará de uma dessas ferramentas para enviar os dados para outra máquina depois de ter compilado o que precisa usando tar e mysqldump.

Se isso ajudar, aqui está uma versão anônima de um dos meus scripts de backup:

#!/usr/bin/perl

use strict;

#
# Set up variables
#

my $dbname = 'xxxxx';
my $dbuser = 'xxxxxxx';
my $dbpass = 'xxxxxxx';
my $uploadsDir = '/xxxxxx/blog/wp-content/uploads/';
my $backupLocal = '/home/xxxxx/backup/blog/';
my $baseFolderName = 'blogBackup';
my $backupRemote = 'user@server:~/backup/blog/';


#
# Should never have to edit anything below here
#

#
# Step 1 - get the day of the week and set up the folder to use for the backup
#

my @weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
my @time = localtime();
my $dayOfWeek = $weekDays[$time[6]];
my $backupFolder = "$baseFolderName-$dayOfWeek";

# if the folder exists, delete it
my $ignore;
if(-e "$backupLocal$backupFolder"){
  $ignore = '/bin/rm -rf $backupLocal$backupFolder'; 
}
# create the folder
$ignore = '/bin/mkdir $backupLocal$backupFolder';


#
# Step 2 - do the DB backup
#
$ignore = '/usr/bin/mysqldump -u $dbuser --password=$dbpass $dbname > $backupLocal$backupF
older/database.sql';

#
# Step 3 - do the uploads dir backup
#
$ignore = '/bin/tar -pczf $backupLocal$backupFolder/uploads.tar.gz $uploadsDir';

#
# Step 4 - scp the backup to the remote location
#
$ignore = '/usr/bin/scp -r $backupLocal$backupFolder $backupRemote';
    
por 27.07.2009 / 15:41
0

É difícil dizer o que mais você precisa fazer backup. Isso depende da situação. Esta máquina Ubuntu é apenas um banco de dados e um servidor SVN ou também fornece outros serviços?

Você pode criar um dump MySQL usando o mysqldump . Como uma solução de backup, eu recomendaria a duplicidade para você. Como um fácil de configurar front-end, você pode usar ftplicidade . Essas ferramentas ajudarão a fazer backup de todos os seus dados em arquivos tar (talvez assinados e criptografados) e carregá-los em um espaço FTP ou armazená-los em qualquer outro lugar.

Para automatizar o processo de backup, você pode dar uma olhada no cron .

    
por 27.07.2009 / 13:17