Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

1. Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

João Paulo de Vasconcelos Resende
jpvr2005

(usa Debian)

Enviado em 09/01/2013 - 17:36h

Bom dia pessoal,
Gostaria de saber se existe algum parametro ou alguma forma de fazer com que o scp copie apenas arquivos novos ou alterados de um fileserver para meu servidor de bkp.
Procurei aqui no portal e pela web e encontrei sugestões para usar o rsync, o rsync realmente é melhor?
O Scp estaria defazado para esse tipo de utilização?

Agradeço antecipadamente a todos que colaborarem.

Abçs!



  


2. MELHOR RESPOSTA

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 13/01/2013 - 19:01h

jpvr2005 escreveu:

Cara, estou testando aqui o backup, mas deixa eu ver se entendi certo.
Este script q vc me passou eu devo deixar ele na máquina onde eu quero copiar os backups e enviar pela rede, certo?
Na segunda linha de código, está assim:
DIR_BKP=DIR_BKP=/diretorio/a/ser/copiado
Está certo assim mesmo?

Vc poderia me explicar sobre essa linha:
TIME_FIND=-1440 #+xx busca arquivos criados existentes a xx minutos


E sobre o sync, aplicado dessa forma, ele irá buscar os arquivos que foram criados a mais de xx minutos?
Não entendi bem como esse sync funciona, vc poderia me explicar ou algum link com uma fácil explicação?


Valeu!



Vou lhe falar sobre o que eu sei,

LOG=/tmp/diferencial.txt #ONDE FICARÁ UM ARQUIVO CHAMADO DIFERENCIAL.TXT COM OS LOGS DO SCRIPT
DIR_BKP=DIR_BKP=/diretorio/a/ser/copiado # DIRETÓRIO O QUAL VC VAI QUERER QUE ELE BUSQUE OS ARQUIVOS
DEST_BKP=/destino/do/backup/local # DIRETÓRIO ONDE ELE FARÁ UM BKP LOCAL ANTES DE COPIA-LO PELA REDE
DEST_TAR=/tmp # DIRETÓRIO ONDE ELE DEIXA O ARQUIVO .TAR ANTES DE COMPACTA-LO
BKP_NAME="dif-`date +%d-%m-%y_%H%M`.tar.gz" # NOME DO BKP
ARQ=$DEST_TAR/dif-`date +%d-%m-%y_%H%M`.tar # ESSE VAI PRECISAR PARA COPIAR O BKP CASO DEMORE MAIS QUE 1 MINUTO
TIME_FIND=-1440 # BUSCA ARQUIVOS MODIFICADOS E CRIADOS A XX MINUTOS NO EXEMPLO O SCRIPT PODE SER EXECUTADO TODOS OS DIAS EM TAL HORARIO E BUSCAR OS ARQUIVOS EDITADOS EM MENOS DE 24 HORAS



Fonte do script.
http://www.vivaolinux.com.br/artigo/Script-de-backup-full-+-diferencial-+-compactador-+-restauracao?...

3. Re: Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 09/01/2013 - 17:57h

tu chegou a ver a manpage do comando scp ??

$man scp





4. Re: Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 10/01/2013 - 02:25h

O scp não faz cópia seletiva. Realmente é melhor você usar o rsync.


5. Re: Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

João Paulo de Vasconcelos Resende
jpvr2005

(usa Debian)

Enviado em 10/01/2013 - 08:45h

@Daniel
Cheguei a olhar sim, porém o único parametro que parece poder ser usado para isso é o -v, porém pelo que entendi, ele so printa os erros na tela para debugar e eu precisava que simplesmente esse erro fosse debugado.

@Paulo
Realmente, todos lados que procuro o pessoal indica o uso do rsync, vou dar uma estudada nele e utilizar ele para fazer isso.


Muito obrigado a todos!



6. Re: Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 10/01/2013 - 14:02h

Veja se este script lhe ajuda, pode modifica-lo.


#!/bin/bash
######################################################################
# Script de Backup diferencial
# Data: 09/01/2013
# Por: William A. de Souza
######################################################################
# Declaraçoes
LOG=/tmp/diferencial.txt
DIR_BKP="/diretorio/a/ser/copiado"
DEST_TAR=/tmp
TIME_FIND=-1440 #+xx busca arquivos criados existentes a xx minutos
ARQ=$DEST_TAR/dif-`date +%d-%m-%y_%H%M`.tar
DEST_BKP=/destino/do/backup/local
BKP_NAME="dif-`date +%d-%m-%y_%H%M`.tar.gz"
# Inicio do script
echo "--------------------------------------------------------------" >> $LOG
echo "Iniciando backup diferencial com sucesso: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
sync
find $DIR_BKP -type f -cmin $TIME_FIND -exec tar -P -rvf $ARQ {} ";" >> $LOG
if [ $? -eq 0 ] ; then
echo "Backup Diferencial concluído com sucesso: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
else
echo "ERRO! Backup Diferencial: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
echo "--------------------------------------------------------------" >> $LOG
fi
# Roda a compactação do backup
echo "Inicio da compactacao: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
gzip $ARQ
mv $DEST_TAR/dif-*.tar.gz $DEST_BKP
echo "Nome do bachup: $BKP_NAME" >> $LOG

echo "--------------------------------------------------------------" >> $LOG
sshpass -p senha scp -P 22 $DEST_BKP/$BKP_NAME usuario@ip:/local/destino/scp
if [ $? -eq 0 ] ; then
echo "Backup copiado com sucesso: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
else
echo "ERRO AO COPIAR: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
fi
echo "--------------------------------------------------------------" >> $LOG
exit 0



7. Re: Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

João Paulo de Vasconcelos Resende
jpvr2005

(usa Debian)

Enviado em 10/01/2013 - 14:55h

Opa, valeu cara, vou testar aqui essa noite e posto aqui os resultados. Muito obrigado!!!


think linux escreveu:

Veja se este script lhe ajuda, pode modifica-lo.


#!/bin/bash
######################################################################
# Script de Backup diferencial
# Data: 09/01/2013
# Por: William A. de Souza
######################################################################
# Declaraçoes
LOG=/tmp/diferencial.txt
DIR_BKP="/diretorio/a/ser/copiado"
DEST_TAR=/tmp
TIME_FIND=-1440 #+xx busca arquivos criados existentes a xx minutos
ARQ=$DEST_TAR/dif-`date +%d-%m-%y_%H%M`.tar
DEST_BKP=/destino/do/backup/local
BKP_NAME="dif-`date +%d-%m-%y_%H%M`.tar.gz"
# Inicio do script
echo "--------------------------------------------------------------" >> $LOG
echo "Iniciando backup diferencial com sucesso: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
sync
find $DIR_BKP -type f -cmin $TIME_FIND -exec tar -P -rvf $ARQ {} ";" >> $LOG
if [ $? -eq 0 ] ; then
echo "Backup Diferencial concluído com sucesso: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
else
echo "ERRO! Backup Diferencial: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
echo "--------------------------------------------------------------" >> $LOG
fi
# Roda a compactação do backup
echo "Inicio da compactacao: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
gzip $ARQ
mv $DEST_TAR/dif-*.tar.gz $DEST_BKP
echo "Nome do bachup: $BKP_NAME" >> $LOG

echo "--------------------------------------------------------------" >> $LOG
sshpass -p senha scp -P 22 $DEST_BKP/$BKP_NAME usuario@ip:/local/destino/scp
if [ $? -eq 0 ] ; then
echo "Backup copiado com sucesso: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
else
echo "ERRO AO COPIAR: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
fi
echo "--------------------------------------------------------------" >> $LOG
exit 0





8. Re: Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 10/01/2013 - 15:57h

Certifique-se do sshpass estar instalado onde o script vai ser executado.


9. Re: Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 10/01/2013 - 16:54h

Cara fiz uma pequena alteração, pois quando não tinha nenhum arquivo modificado estava dando erro, segue o correto... testa la


#!/bin/bash
######################################################################
# Script de Backup diferencial
# Data: 09/01/2013
# Por: William A. de Souza
######################################################################
# Declaraçoes
LOG=/tmp/diferencial.txt
DIR_BKP=DIR_BKP=/diretorio/a/ser/copiado
DEST_BKP=/destino/do/backup/local
DEST_TAR=/tmp
BKP_NAME="dif-`date +%d-%m-%y_%H%M`.tar.gz"
ARQ=$DEST_TAR/dif-`date +%d-%m-%y_%H%M`.tar
TIME_FIND=-1440 #+xx busca arquivos criados existentes a xx minutos
# Inicio do script
echo "----------------------------------------------------------------" >> $LOG
echo "*** Iniciando backup diferencial: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
echo "Verificando arquivos modificados: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
sync
find $DIR_BKP -type f -cmin $TIME_FIND -exec tar -P -rvf $ARQ {} ";" >> $LOG
if [ $? -eq 0 ] ; then
echo "Verificando arquivos a compactar: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
else
echo "ERRO AO BUSCAR ARQUIVOS MODIFICADOS !!!: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
echo "----------------------------------------------------------------" >> $LOG
fi
if [ -e $ARQ ]; then
# Roda a compactação do backup
echo "Compactando arquivos modificados: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
gzip $ARQ && mv $DEST_TAR/dif-*.tar.gz $DEST_BKP
echo "Arquivos modificados compactados: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
echo "Backup diferencial criado com sucesso: $BKP_NAME" >> $LOG
echo "----------------------------------------------------------------" >> $LOG
echo "Preparando para copiar backup diferencial: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
sshpass -p senha scp -P 22 $DEST_BKP/$BKP_NAME usuario@ip:/local/destino/scp
if [ $? -eq 0 ] ; then
echo "Backup diferencial copiado com sucesso: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
else
echo "ERRO AO COPIAR BACKUP DIFERENCIAL !!!: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
fi
echo "----------------------------------------------------------------" >> $LOG
else
echo "Nenhum arquivo modificado: `date +%d-%m-%y_%H:%M:%S`" >> $LOG
echo "----------------------------------------------------------------" >> $LOG
exit 0
fi
exit 0



10. Re: Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 10/01/2013 - 17:13h

Não quero ser chato, mas por que usar um script complicado, que requer a instalação de uma ferramenta que não faz parte da instalação padrão (sshpass) e que ainda por cima é insegura (porque o sshpass tem de ter a senha em texto aberto no meio do script), em lugar de usar um simples comando rsync e ssh com autenticação/autorização por chave pública?


11. Re: Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 10/01/2013 - 18:52h

paulo1205 escreveu:

Não quero ser chato, mas por que usar um script complicado, que requer a instalação de uma ferramenta que não faz parte da instalação padrão (sshpass) e que ainda por cima é insegura (porque o sshpass tem de ter a senha em texto aberto no meio do script), em lugar de usar um simples comando rsync e ssh com autenticação/autorização por chave pública?


Não é ser chato nao Paulo, apenas dei uma solução rápida para nosso amigo, mas claro que outras opções tanto mais seguras, como menos complicadas, pois se fosse o caso poderíamos até indicar o bacula, mas estamos ai, sempre aprendendo, nunca é demais uma dica. É que eu passei pelo mesmo problema, e tive que buscar uma solução rapida e eficaz, eu uso com ssh e nao com sshpass, adicionei minha chave as exceções do ssh, assim do meu host ele nao pede senha para copiar.


12. Re: Dúvida sobre comando scp copiando apenas arquivos novos. [RESOLVIDO]

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 12/01/2013 - 22:33h

Funcionou?



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts