Avaliar este artigo :
4,8/5 | 5 opinião
Este artigo foi útil para si ?
Sim
Não
Vous avez noté 0 étoile(s)
Sommaire
Procédure
O Rsync permite-lhe sincronizar ficheiros através da linha de comandos, para que possa fazer cópias de segurança de ficheiros de um local para outro, sincronizando-os de acordo com a fonte.
O script abaixo permitir-lhe-á efetuar uma cópia de segurança completa uma vez por mês e uma cópia de segurança parcial uma vez por semana.
O seguinte script permitir-lhe-á configurar um script de backup remoto com o Rsync. O script irá testar a presença da pasta de origem, testar a acessibilidade do servidor e criar uma nova pasta todos os meses na qual irá inserir uma cópia de segurança completa.
#!/bin/sh month=`date +%B` day=`date +%d-%m-%Y` hour=`date +%T` log="/home/user/logs_backups" local="/user/folder" remote="/files/backups_$month/" hostssh="ip_server" userssh="login" counter=5 retention=`date +%B --date='1 month ago'` name() { echo "-------------------------------------------------------------" > $log/$day_backup.log echo -e "$local backup of $(date +%d-%B-%Y)" >> $log/$day_backup.log echo "-------------------------------------------------------------" >> $log/$day_backup.log }# Se o diretório que contém os logs não existir, será criado.if [ ! -d $log ];then mkdir $log fi# Nós testamos a presença da pasta de origem E que o servidor responde ao pingrecus=$(ping -c $counter $hostssh | grep 'received' | awk -F',' '{ print $2 }' | awk '{print $1 }') > /dev/null 2>&1 if [[ ! -d $local ]] && [[ $recus -eq 0 ]];then name echo -e "$day-$hour :\n" >> $log/backup_$day.log echo -e "$local já não existe ou está inacessível.\nServidor inacessível ($hostssh : pacotes $counter transmitidos, pacotes $recus recebidos).\nNão foi efectuado qualquer backup." >> $log/sauvegarde_$jour.log exit# Apenas testamos a presença da pasta de origemelif [ ! -d $local ];then name echo -e "$jour-$heure : $local n'existe plus ou est inaccessible.\nAuc aucune sauvegarde effectuée." >> $log/sauvegarde_$jour.log exit# Só testamos o ping do servidorelif [ $recus -eq 0 ];then name echo -e "$jour-$heure : Serveur inaccessible ($hostssh : $compteur paquets transmises, $recus paquets reçus).\nNo backup made." >> $log/sauvegarde_$jour.log exit fi echo "-------------------------------------------------------------" > $log/backup_day.log echo "Cópia de segurança de $local a partir de $(data +%d-%B-%Y)" >> $log/backup_day.log echo "-------------------------------------------------------------" >> $log/backup_$day.log # Transferir a hora de início no registo echo "Hora de início da cópia de segurança: $(data +%T)" >> $log/backup_$day.log echo "-------------------------------------------------------------" >> $log/backup_$day.log# Transferência de ficheirosrsync -avz --stats --protect-args --delete-after -e ssh $local $userssh@$hostssh:$distant >> $log/backup_$day.log # -a : modo de arquivo ( equivalente -rlptgoD ). # -z : compressão de dados durante a transferência. -e : para especificar o uso de ssh # -- stats : dá informação sobre a transferência (número de ficheiros...). # --protect -args : Se precisar de transferir um nome de ficheiro que contenha espaços, pode especificá-lo com esta opção. # --delete-after : apaga ficheiros que já não existem na fonte após a transferência para a pasta de destino. status=$? echo "" >> $log/day_backup.log# códigos de retorno do rsynccase $status in 0) echo Success >> $log/day_backup.log; 1) echo Erro de sintaxe ou de utilização >> $log/day_backup.log; 2) echo Incompatibilidade de protocolo >> $log/day_backup.log;; 3) echo Erros ao selecionar ficheiros e directórios de entrada/saída >> $log/sauvegarde_$jour.log;; 4) echo Ação não suportada: tentativa de manipular ficheiros de 64 bits numa plataforma que não os suporta; ou uma opção que é suportada pelo cliente mas não pelo servidor. >> 5) echo Erro ao iniciar o protocolo cliente-servidor >> $log/sauvegarde_$jour.log;; 6) echo daemon unable to write to log file >> $log/sauvegarde_$jour.log;; 10) echo Erro no socket I/O >> $log/sauvegarde_$jour.log;; 11) echo Erro no ficheiro I/O >> $log/sauvegarde_$jour.log;; 12) echo Erro no fluxo de dados do protocolo rsync >> $log/save_$day.log;; 13) echo Erro com o diagnóstico do programa >> $log/save_$day.log;; 14) echo Erro no código IPC >> $log/save_$day.log;; 20) echo SIGUSR1 ou SIGINT recebido >> $log/save_$day.log;; 21) echo "Um erro retornado por waitpid()" >> $log/save_$day.log;; 22) echo Erro ao alocar buffers de memória principal >> $log/sauvegarde_$jour.log;; 23) echo Transferência parcial devido a um erro >> $log/sauvegarde_$jour.log;; 24) echo Transferência parcial devido ao desaparecimento de um ficheiro fonte >> $log/sauvegarde_$jour.log;; 25) echo O limite --max-delete foi atingido >> $log/sauvegarde_$jour.log;; 30) echo Tempo máximo de espera excedido ao enviar/receber dados >> $log/sauvegarde_$jour.log;; 35) echo Tempo de espera excedido ao aguardar uma ligação >> $log/sauvegarde_$jour.log;; 255) echo Erro inexplicável >> $log/sauvegarde_$jour.log;; esac echo "-------------------------------------------------------------" >> Hora de fim no registoecho "Hora de fim da cópia de segurança: $(data +%T)" >> $log/backup_$day.log echo "-------------------------------------------------------------" >> $log/backup_$day.log# As cópias de segurança são apagadas de acordo com a retenção.ssh $userssh@$hostssh rm -rf "backups_$retenção" exit
fonte : GitHub tuxmika
Agora você pode criar um script de backup remoto usando o Rsync para transferir arquivos e pastas para o seu espaço de backup online usando o LWS. Pode executar o seu script através de um trabalho cron para que seja iniciado uma vez por semana.
Não hesite em partilhar as suas questões e comentários!
Avaliar este artigo :
4,8/5 | 5 opinião
Este artigo foi útil para si ?
Sim
Não
2mn leitura
Como é que adiciono uma chave RSA ao serviço de unidade SCP do Rsync?
1mn leitura
Como é que utilizo o Rsync para fazer cópias de segurança de um sítio Web do Ispconfig?
0mn leitura
Como é que faço uma cópia de segurança do meu site com o LWS Drive?
4mn leitura
utilitário de restauro backup2l