Boas práticas de segurança da informação ditam que não se deve manter os backups somente na mesma máquina onde os dados principais estão.
Para ajudar a resolver este ponto específico, manter cópias dos backups em ambiente externo à empresa, vamos exemplificar como utilizar a
Amazon S3 como storage para seus dados.
Criando o repositório de dados na Amazon S3 (bucket)
Se não estiver cadastrado ainda, entre no site abaixo e crie sua conta:
Na guia: Services → S3
Clique em: Create Bucket
Agora, anote as chaves de acesso da sua conta para que seu script possa efetuar login automaticamente e gravar os arquivos:
AWS → Security Credentials: E anote o seu
Access Key ID e o
Secret Key ID.
Obs.:
Buckets são os repositórios que irão conter os arquivos. Coloque o nome e a região onde você quer criá-la e clique em:
Create
* Importante: Lembre-se de manter esses dados guardados em um lugar seguro, pois dão acesso à sua conta no AWS.
Instalando o AWS SDK for PHP (AWSSDKforPHP)
Formas de obter o SDK:
1. Faça download do arquivo em:
2. Instalar usando
Git:
sudo git clone git://github.com/amazonwebservices/aws-sdk-for-php.git AWSSDKforPHP
Existem outras formas, como SVN, PEAR ou Composer, Phar; mas utilizei o Git porque é simples e rápido.
Configurar o SDK com suas credenciais de acesso
1. No diretório do SDK já há o arquivo
config-sampe.inc.php. Copie-o para:
~/.aws/sdk/config.inc.php
2. Edite-o e insira sua
Access Key ID no campo 'key' e
Secret Key ID no campo 'secret'
3. Vá na pasta "_samples", dentro do SDK, e execute:
# php cli-s3_get_urls_for_uploads.php
Se você voltar em: AWS → S3, verá que foi criado um novo
bucket e este contém alguns arquivos de mídia. Com isto feito, o SDK está instalado e pronto para funcionar.
Script de backup (s3-send.php)
Este script deve ser executado da seguinte forma:
# php s3-send.php --bucket=<bucket> --file=<fullpath_filename>
#!/usr/bin/php
<?php
/*
* Script: s3-send.php
* Author: Edilson Osorio Junior
* Contact: ml: osorio.edilson at eddieoz dot com | twttr: eddieoz
* Date: 2013-01-04
* Description: This script backups a file to some amazonS3 bucket
* Requisites: - An AWS Amazon account
* - S3 bucket
* - Functional AWS SDK for PHP installed
* Usage: s3-send.php --bucket= --file=<fullpath_filename>
*
* More information on http://www.eddieoz.com/us/articles/cloud-computing/43-backup-de-arquivos-na-aws-amazon-s3
*/
error_reporting(-1);
header("Content-type: text/plain; charset=utf-8");
# SDK AWS for PHP
require_once '/installed/binaries/AWSSDKforPHP/sdk.class.php';
# Get and test parameters
$shortopts = "";
$longopts = array(
"bucket:",
"file:",
);
$param = getopt($shortopts,$longopts);
if ( count($param) < 2 ){
print("Params: --bucket= --file=\n");
exit(1);
}
$fullpath_filename = $param['file'];
$bucket = $param['bucket'];
# Initialize AmazonS3
$s3 = new AmazonS3();
# Get just the filename, without path
$filename = explode(DIRECTORY_SEPARATOR, $fullpath_filename);
$filename = array_pop($filename);
# Prepare to send the file
$s3->batch()->create_object($bucket, $filename, array('fileUpload' => $fullpath_filename));
# send the file and get response, thats an array
$file_upload_response = $s3->batch()->send();
# Consists the return
if ($file_upload_response->areOK())
{
# Show the full URL to access the file.
echo $s3->get_object_url($bucket, $filename, '5 minutes') . PHP_EOL . PHP_EOL;
}
else
{
# On error, show the xml
print_r( $file_upload_response );
}
?>
Links de apoio
Instalando o AWS SDK for PHP:
AWS SDK for PHP Git repository:
Dica também publicada em:
Se você analisar bem, é muito mais barato que o Dropbox! A única coisa é que ele não tem a interface do Dropbox para sincronizar todos seus gadgets e computadores. Eu mesmo utilizo a mais de ano como backup de fotos e arquivos antigos (depois de perder vários hds com o tempo)
Se você marcar a opção de redundância reduzida para arquivos que não tem essa necessidade, o armazenamento fica ainda mais barato.
Eu aconselharia você a fazer um teste: Crie uma conta lá, não esqueça de setar a região para São Paulo (senão há custo de transferência entre regiões/países), vá em Serviços -> S3 e crie um bucket (é como se fosse uma pasta) para guardar alguns arquivos. Então suba alguns arquivos para se ambientar.
Aguarde um mês e veja seu extrato do cartão :D
É a melhor forma de pegar confiança no serviço!
Além disso, você ainda tem a opção de transformar um bucket em um website de páginas estáticas...
Se você testar, depois me dá um feedback do que achou ok!
Grande abraço!