Como usar o rsync com compartilhamento de samba

2

Gostaria de sincronizar todo o conteúdo do meu telefone para o meu servidor doméstico usando o compartilhamento de samba do telefone.

Minha abordagem é escrever um script que monte o compartilhamento de samba do telefone e copie todos os arquivos no telefone para o diretório especificado. Então o script é executado a cada 10 minutos com o crontab.

O primeiro problema que estou enfrentando é que gostaria que as duas pastas (telefone e servidor) tivessem uma relação "contribuir". Isso significa que: arquivos novos e atualizados são copiados do telefone para o servidor. Renominações no telefone são repetidas no servidor. Nenhuma exclusão (se um arquivo for excluído no telefone, ele permanecerá no servidor). Como posso conseguir isso? Talvez com rsync?

O segundo problema é: há uma abordagem melhor do que tentar montar o compartilhamento de samba a cada 10 minutos para descobrir se o telefone está conectado ou não à rede Wi-Fi?

    
por giovi321 24.01.2015 / 14:59

2 respostas

0

Eu escrevi um script para resolver isso. Algumas coisas estão em italiano, mas acho que você pode entender facilmente como os scripts funcionam. De qualquer forma você pode facilmente traduzir tudo.

O script basicamente verifica se o BlackBerry está conectado à rede. Se sim, verifica se existe um arquivo fictício, se isso acontecer, significa que outra instância do script já está em execução, portanto, ele sai. Se não houver outras istances em execução, ele verifica quando é a última vez que o script foi executado (para não fazer backup do BlackBerry a cada 10 minutos). Se um dummy.file.time tiver mais de 3 horas (10800 segundos), ele inicia o backup usando o rsync.

#!/bin/sh
# BlackBerry backup via SMB share
#
# Cosa fa lo script?
#
# Lo script fa il ping del blackberry
# Se il ping va a buon fine, controlla se esiste "$dummyfile"
# (per non eseguire più backup in parallelo).
# Se esiste "$dummyfile", controlla se "$dummyfiletime" è più
# vecchio di due ore (per non ripetere il backup in continuazione).
# Se "$dummyfiletime" è più vecchio di due ore, monta lo SMB share
# del blackberry e inizia il backup con rsync.
#


##### PARAMETERS START #####
logdate=$(date +"%m-%Y")
ip="192.168.1.5"
dummyfile="/media/truecrypt2/blackberry SMB Backup/dummy.file"
dummyfiletime="/media/truecrypt2/blackberry SMB Backup/dummy.file.time"
monta="mount -t cifs -o username=USER,password=PASSWORD //$ip/media/ /media/blackberrySMB/"
sincronizza="rsync -a /media/blackberrySMB /media/truecrypt2/blackberry\ SMB\ Backup"
scriptlog="/var/log/blackberrySMBbackup/script_$logdate.log"
rsynclog="/var/log/blackberrySMBbackup/rsync_$logdate.log"
dummyfiletimeage=$(( 'date +%s' - 'stat -L --format %Y "$dummyfiletime"' )) #age of the dummy.file.time
defaultage="10800" #in seconds
###### PARAMETERS END ######

echo "$(date +"%D %T") : BlackBerry SMB backup lanciato." >>$scriptlog
echo "Effettuo ping verso $ip" >>$scriptlog
if fping -c 1 -t 500 $ip >>/dev/null
then
  echo "Risposta al ping ricevuta da $ip" >>$scriptlog
  if [ -f "$dummyfile" ]
  then
    echo -e "dummy.file esistente. Forse il processo e gia in esecuzione. Esco.\n" >>$scriptlog
    exit
  else
    echo "dummy.file non esistente. Controllo se dummy.file.time e piu vecchio di 3 ore." >>$scriptlog
    if [ "$dummyfiletimeage" -gt "$defaultage" ]
    then
      echo "dummy.file.time e piu vecchio di 3 ore. Inizio il backup." >>$scriptlog
      touch "$dummyfile"
      rm "$dummyfiletime"
      touch "$dummyfiletime"
      umount //$ip/media/
      umount //$ip/media/
      $monta
      echo "$(date +"%D %T") : BlackBerry SMB rsync lanciato." >>$rsynclog
      rsync --verbose -a /media/blackberrySMB /media/truecrypt2/blackberry\ SMB\ Backup >>$rsynclog
      echo "***************************" >>$rsynclog
      umount //192.168.1.5/media/
      rm "$dummyfile"
      echo -e "Backup completato. Esco.\n" >>$scriptlog
      exit
    else
      echo -e "dummy.file.time e piu recente di 3 ore. Esco.\n" >>$scriptlog
      exit
    fi
  fi
else
  echo -e "Nessuna risposta al ping da $ip. Blackberry non connesso. Esco.\n" >>$scriptlog
  exit
fi
    
por 26.01.2015 / 22:47
0

Sim, o rsync serve. Mas renomear resultará em uma duplicação se você não tomar medidas adicionais.

Estes podem ser: Faça uma lista de arquivos transferidos e, em seguida, verifique se existe um arquivo existente do mesmo tamanho e conteúdo ...

Parte dois: Você deve verificar o ping antes de iniciar o rsync. Ou apenas use um pequeno valor de tempo limite de conexão com o rsync.

Talvez essa resposta antiga sobre uma questão de como comparar com o rsync possa ajudar você também.

    
por 24.01.2015 / 15:21