Shell script di backup – SMB di Windows / Linux Server

preparare

  • copiare tutti i file in una cartella
  • modificare backup-start.sh con il percorso e configurazioni
  • fare una partizione btrfs
  • creare un volume secondario per il percorso di backup
  • creare un cronjob

inizio

backup-start.sh quotidiano
settimanale backup-start.sh

modalità di backup

  • smb
  • SSHS
  • sshnosymlink
  • sshsudoftp

backup-start.sh

#!/bin / bash
# controllare lo script di backup se il suo funzionamento e, se sì allora CALC per un'istantanea
script_name = / home / backup / backup-script.sh
email_admin=mail1@mail.de,mail2@mail.de
backup_path = / srv / backup / fatto
snapshot_path = / srv / backup / snapshot / backup-$(date +% Y-% m-% d-% H-% M)
snapshot_script = / home / EIT / backup / services-snapshots.sh

## Avviare Script

Se [ -da "$1" ];poi
 eco "nessun insieme di destinazione"
 Uscita 1
altro
 #eco "obiettivo fissato"
 backup_mode = $ 1
fi

## Funzione per i codici errpr
check_error(){
 Se [ "$1" -dare "100" ]; poi
 eco "Inizio - Backup ancora in corso"
 Uscita 1
 fi
 Se [ "$1" -eq "10" ]; poi
 eco "Inizio - Backup fatto - nessun documento"
 MODE = $ backup_mode $ snapshot_script $ backup_local_path / $ server $ snapshot_local_path / $ server
 altro
 Se [ "$1" -eq "0" ]; poi
 eco "Inizio - Backup fatto - con i file"
 MODE = $ backup_mode $ snapshot_script $ backup_local_path / $ server $ snapshot_local_path / $ server
 fi
 fi
}

script_start(){
 Se [ ! -d "$backup_local_path / $ server" ]; poi
 eco "cartella di backup non esiste"
 btrfs sottovolume creare $ backup_local_path / $ server
 chmod 740 $backup_local_path / $ server
 eco "cartella di backup creata"
 altro
 eco "cartella di backup esiste"
 fi
}

##
# eseguire script di backup
##

server = mysvwe1
script_start
sh $ nome_script $ email_admin $ server / path / to / backup / dati $ backup_local_path la password SSH nome utente
error_now = $?
check_error $ error_now

Uscita 0

backup-script.sh

#!/bin / bash
#
# Thomas Mosandl - 2014-11-14
#
# apt-get install CIFS-utils sendmail-bin
# sendmail config
#
# definire il parametro #!/bin / sh
# definire parameterss
## variabili
## 1. mail a
## 2. backup_source_ip
## 3. backup_source_path
## 4. backup_dest_path

backup_source_ip = $ 2
backup_source_path = $ 3
backup_source_user = $ 6
backup_source_domain = 'ASD'
backup_source_pw = $ 7
backup_log_path = / var / log
backup_check_client_ping ="1"
backup_service = $ 5
backup_dest_path = $ 4 / $ backup_source_ip
backup_log_path = / var / log
backup_log_file = backup_ $ backup_source_ip
backup_email_to_config ="thomas.mosandl@mosandl.eu"
backup_email_from ="backup@mosandl.eu"

# config fine

eco "Avvia backup - $backup_source_ip"

# controllo vaiable
se [ -da "$1" ];poi
        eco "elettronica impostata su config"
        backup_email_to ="$backup_email_to_config"
altro
        eco "mail impostato al parametro"
        backup_email_to = $ 1
fi
# controllare la destinazione iSCSI


#ping -q -c $ backup_check_client_ping $ backup_iscsi_target_1 > /dev / null
#Se [ ! $? -eq 0 ]; poi
#	eco "ISCSI Ping non availible"
#	eco " "  | -s posta "di riserva - ISCSI - Ping non funziona" -un "Da parte di: $backup_email_from" $backup_email_to
#	Uscita 1
#altro
#	#Se [ $(iscsiadm sessione -m | grep -c "$backup_iscsi_target_1") -eq 0 ]; poi
	#	eco "ISCSI Monte non availible"
	#	eco " "  | -s posta "di riserva - ISCSI - Monte non funziona" -un "Da parte di: $backup_email_from" $backup_email_to
	#	Uscita 1
	#altro
#		eco "ISCSI è ok"
	#essere
#fi

#192.168.144.167
# verificare se il backup è in esecuzione
ps aux > /tmp / temp.txt
Se [ $(cat /tmp/temp.txt  | grep -c "ssh -o StrictHostKeyChecking = no -l")  -gt 0 ]; poi
	eco "backup è stato rotto o non è in esecuzione"
	Se [ -f "$backup_log_path / $ backup_log_file.lck" ]; poi
rm-rf "$backup_log_path / $ backup_log_file.lck"
	fi
fi
rm -rf /tmp/temp.txt

Se [ -f "$backup_log_path / $ backup_log_file.lck" ]; poi
		eco " "  | -s posta "di riserva - $backup_source_ip - Backup è ancora in esecuzione"  -R $ backup_email_from $ backup_email_to
		eco "copione - backup è in esecuzione"
		set -e
		Uscita 100
altro
	eco "copione - backup non è ancora in esecuzione"
	toccare "$backup_log_path / $ backup_log_file.lck"
fi

# controllare se log è in logrotate

Se [ $(grep -c "$backup_log_path / $ backup_log_file" /etc / logrotate.d / rsyslog)  -eq 1 ]; poi
	eco "copione - rsyslog è impostato"
altro
	eco "$backup_log_path / $ backup_log_file {}" >> /etc / logrotate.d / rsyslog
	eco "copione - rsyslog creato"
fi

#
Se [ ! $(montare | grep -c "/media / DATA0 tipo / srv / backup btrfs (rw)")  -eq 0 ]; poi
	eco "stoccaggio non montato"
	Uscita 11
	eco " "  | -s posta "di riserva - stoccaggio non montato"  -R $ backup_email_from $ backup_email_to
altro
	eco "stoccaggio è montato"
fi

# creare cartelle

# controllare dir di backup
Se [ ! -d "$backup_dest_path" ]; poi
      eco "cartella di backup non esiste"
      mkdir -p $ backup_dest_path
      chmod 740 $backup_dest_path
      eco "cartella di backup creata"
altro
      eco "cartella di backup esiste"
fi


Se [ ! -d "$backup_log_path" ]; poi
      eco "cartella di registro di backup non esiste"
      mkdir -p $ backup_log_path
      eco "cartella di registro di backup creato"
altro
      eco "cartella di registro di backup esiste"
fi





# controllo nslookup
nslookup $ backup_source_ip > /dev / null
Se [ ! $? -eq 0 ]; poi
	eco "DNS non funziona per $ backup_source_ip"
	eco " "  | -s posta "di riserva - $backup_source_ip - nslookup non funziona per $ backup_source_ip"  -R $ backup_email_from $ backup_email_to
rm-rf "$backup_log_path / $ backup_log_file.lck"
	set -e
	Uscita 1
altro
	eco "DNS è ok"
fi


# controllo ping
Se [ ! $backup_source_ip = "server.de" ]; poi
ping -q -c $ backup_check_client_ping $ backup_source_ip > /dev / null
		Se [ ! $? -eq 0 ]; poi
		eco "PING non funziona per $ backup_source_ip"
		eco " "  | -s posta "di riserva - $backup_source_ip - ping $ backup_source_ip non funziona"  -R $ backup_email_from $ backup_email_to
rm-rf "$backup_log_path / $ backup_log_file.lck"
		set -e
		Uscita 1
	altro
		eco "Ping è ok"
	essere
essere

# rsync
echo $ backup_service
Se [ $backup_service = SSH ]; poi
exit_code ="0"
	log_file_temp = $ backup_log_file_ $(date +% Y_% M_% d_% H_% M_% S)
	export SSHPASS = $ backup_source_pw
ionice -c 3 rsync -rptgoDvzLKh --delete --rsh ="/usr / bin / sshpass -e ssh -o StrictHostKeyChecking = no -l $ backup_source_user " $backup_source_ip:$backup_source_path $ backup_dest_path --log-file = $ backup_log_path / $ log_file_temp --stats >> $backup_log_path / $ log_file_temp
	Se [ ! $? -dare 0 ]; poi
		eco "errore di backup - $?"
		cat -v $ backup_log_path / $ backup_log_file | -s posta "di riserva - $backup_source_ip - Backup Errore - $?" -un "Da parte di: $backup_email_from" $backup_email_to
set -e
		Uscita 1
	altro
		eco "Backup è ok"
		Se [ ! $(grep -c "Numero di file creati: 0" $backup_log_path / $ log_file_temp) -eq 0 ]; poi
-s posta "di riserva - $backup_source_ip - fatto Backup - nessun documento" -R $ backup_email_from $ backup_email_to < $backup_log_path / $ log_file_temp
			 eco "copione - nessun documento"
			 exit_code ="10"
		 altro
cat -v $ backup_log_path / $ log_file_temp | -s posta "di riserva - $backup_source_ip - fatto Backup"  -R $ backup_email_from $ backup_email_to
fi
cat $ backup_log_path / $ log_file_temp >>  $backup_log_path / $ backup_log_file
rm $ backup_log_path / $ log_file_temp
fi
Elif [ $backup_service = sshnosymlink ]; poi
exit_code ="0"
	 log_file_temp = $ backup_log_file_ $(date +% Y_% M_% d_% H_% M_% S)
	 export SSHPASS = $ backup_source_pw
ionice -c 3 rsync -rptgoDvzlKh --delete --rsh ="/usr / bin / sshpass -e ssh -o StrictHostKeyChecking = no -l $ backup_source_user " $backup_source_ip:$backup_source_path $ backup_dest_path --log-file = $ backup_log_path / $ log_file_temp --stats >> $backup_log_path / $ log_file_temp
	 Se [ ! $? -dare 0 ]; poi
		 eco "errore di backup - $?"
		 cat -v $ backup_log_path / $ backup_log_file | -s posta "di riserva - $backup_source_ip - Backup Errore - $?" -un "Da parte di: $backup_email_from" $backup_email_to
set -e
		 Uscita 1
	 altro
		 eco "Backup è ok"
		 Se [ ! $(grep -c "Numero di file creati: 0" $backup_log_path / $ log_file_temp) -eq 0 ]; poi
-s posta "di riserva - $backup_source_ip - fatto Backup - nessun documento" -R $ backup_email_from $ backup_email_to < $backup_log_path / $ log_file_temp
			 eco "copione - nessun documento"
			 exit_code ="10"
		 altro
cat -v $ backup_log_path / $ log_file_temp | -s posta "di riserva - $backup_source_ip - fatto Backup"  -R $ backup_email_from $ backup_email_to
fi
cat $ backup_log_path / $ log_file_temp >>  $backup_log_path / $ backup_log_file
rm $ backup_log_path / $ log_file_temp
fi
Elif [ $backup_service = sshsudoftp ]; poi
exit_code ="0"
	 log_file_temp = $ backup_log_file_ $(date +% Y_% M_% d_% H_% M_% S)
	 export SSHPASS = $ backup_source_pw
ionice -c 3 rsync -rptgoDzLKh --delete --exclude "*gli utenti / dati *" --escludere "*gli utenti / * / dati *"  --rsync-path ="sudo rsync" --rsh ="/usr / bin / sshpass -e ssh -o StrictHostKeyChecking = no -l $ backup_source_user " $backup_source_ip:$backup_source_path $ backup_dest_path --log-file = $ backup_log_path / $ log_file_temp --stats >> $backup_log_path / $ log_file_temp
	 Se [ ! $? -dare 0 ]; poi
		 eco "errore di backup - $?"
		 cat -v $ backup_log_path / $ backup_log_file | -s posta "di riserva - $backup_source_ip - Backup Errore - $?" -un "Da parte di: $backup_email_from" $backup_email_to
set -e
		 Uscita 1
	 altro
		 eco "Backup è ok"
		 Se [ ! $(grep -c "Numero di file creati: 0" $backup_log_path / $ log_file_temp) -eq 0 ]; poi
-s posta "di riserva - $backup_source_ip - fatto Backup - nessun documento" -R $ backup_email_from $ backup_email_to < $backup_log_path / $ log_file_temp
			  eco "copione - nessun documento"
			  exit_code ="10"
		  altro
cat -v $ backup_log_path / $ log_file_temp | -s posta "di riserva - $backup_source_ip - fatto Backup"  -R $ backup_email_from $ backup_email_to
fi
cat $ backup_log_path / $ log_file_temp >>  $backup_log_path / $ backup_log_file
rm $ backup_log_path / $ log_file_temp
fi

Elif [ $backup_service = smb ]; poi
        # il backup di montaggio
        mount -t cifs // $ backup_source_ip / $ backup_source_path $ backup_mount_path -o username = $ backup_source_user,password = $ backup_source_pw,ro,sec = NTLM

        Se [ ! $? -eq 0 ]; poi
                eco "Monte non è a posto - $?"
                eco " "  | -s posta "di riserva - $backup_source_ip - mount -t cifs // $ backup_source_ip / $ backup_source_path $ backup_mount_path non funziona" -un "Da parte di: $backup_email_from" $backup_email_to
                rm-rf "$backup_log_path / $ backup_log_file.lck"
                set -e
                Uscita 1
        altro
                eco "Mount va bene"
        fi


        # rsync
        exit_code ="0"
        log_file_temp = $ backup_log_file_ $(date +% Y_% M_% d_% H_% M_% S)
        rsync -rlptDvz $ backup_mount_path $ backup_dest_path --log-file = $ backup_log_path / $ log_file_temp --stats --chmod = u = rwx,g = rx,O = rx >> $backup_log_path / $ log_file_temp
        Se [ ! $? -dare 0 ]; poi
                eco "errore di backup - $?"
                cat -v $ backup_log_path / $ backup_log_file | -s posta "di riserva - $backup_source_ip - Backup Errore - $?" -un "Da parte di: $backup_email_from" $backup_email_to
                set -e
                Uscita 1
        altro
                eco "Backup è ok"
                                                                                                                     199,2-9       92%
        altro
                eco "Backup è ok"
                Se [ ! $(grep -c "Numero di file creati: 0" $backup_log_path / $ log_file_temp) -eq 0 ]; poi
                        cat -v $ backup_log_path / $ log_file_temp | -s posta "di riserva - $backup_source_ip - fatto Backup - nessun documento" -un "Da parte di: $backup_email_from" $backup_email_to
                        eco "copione - nessun documento"
                        exit_code ="10"
                altro
                        cat -v $ backup_log_path / $ log_file_temp | -s posta "di riserva - $backup_source_ip - fatto Backup" -un "Da parte di: $backup_email_from" $backup_email_to
                fi
                cat $ backup_log_path / $ log_file_temp >>  $backup_log_path / $ backup_log_file
                rm $ backup_log_path / $ log_file_temp
        fi
fi

# smontare

rm-rf "$backup_log_path / $ backup_log_file.lck"
exit $ exit_code

services-snapshots.sh

#!/bin / bash
set -e

Se [[ -z $ MODE ]]; poi
	eco "$MODE non specificata"
	Uscita 1
fi

Se [[ $UID -non 0 ]]; poi
	eco "Deve essere eseguito come root"
	Uscita 1
fi

Se [ -da "$1" ];poi
	eco "Non fonti impostate"
	Uscita 1
altro
	eco "Imposta origine"
	BACKUP_SOURCE_DIR = $ 1

fi

Se [ -da "$2" ];poi
	eco "nessun insieme di destinazione"
	Uscita 1
altro
	eco "obiettivo fissato"
	BACKUP_BASE_DIR = $ 2
fi

BACKUP_DIR_DAILY = ${BACKUP_BASE_DIR}/quotidiano
BACKUP_DIR_WEEKLY = ${BACKUP_BASE_DIR}/settimanalmente
BACKUP_DIR_MONTHLY = ${BACKUP_BASE_DIR}/mensile
BACKUP_DIR_YEARLY = ${BACKUP_BASE_DIR}/annuale

Se [ ! -d "$BACKUP_DIR_DAILY" ]; poi
	eco "cartella di backup non esiste"
	mkdir -p $ BACKUP_DIR_DAILY
chmod 740 $BACKUP_DIR_DAILY
	eco "cartella di backup creata"
altro
	eco "cartella di backup esiste"
fi
Se [ ! -d "$BACKUP_DIR_WEEKLY" ]; poi
	eco "cartella di backup non esiste"
	mkdir -p $ BACKUP_DIR_WEEKLY
chmod 740 $BACKUP_DIR_WEEKLY
	eco "cartella di backup creata"
altro
	eco "cartella di backup esiste"
fi
Se [ ! -d "$BACKUP_DIR_MONTHLY" ]; poi
	eco "cartella di backup non esiste"
	mkdir -p $ BACKUP_DIR_MONTHLY
chmod 740 $BACKUP_DIR_MONTHLY
	eco "cartella di backup creata"
altro
	eco "cartella di backup esiste"
fi
Se [ ! -d "$BACKUP_DIR_YEARLY" ]; poi
	eco "cartella di backup non esiste"
	mkdir -p $ BACKUP_DIR_YEARLY
chmod 740 $BACKUP_DIR_YEARLY
	eco "cartella di backup creata"
altro
	eco "cartella di backup esiste"
fi




NUM_FILES_TO_KEEP_DAILY = 10
NUM_FILES_TO_KEEP_WEEKLY = 20
NUM_FILES_TO_KEEP_MONTHLY = 12
NUM_FILES_TO_KEEP_YEARLY = 10

Se [[ $MODE = "QUOTIDIANO" ]]; poi
BACKUP_DIR = $ BACKUP_DIR_DAILY
NUM_FILES_TO_KEEP = $ NUM_FILES_TO_KEEP_DAILY
Elif [[ $MODE = "SETTIMANALMENTE" ]]; poi
BACKUP_DIR = $ BACKUP_DIR_WEEKLY
NUM_FILES_TO_KEEP = $ NUM_FILES_TO_KEEP_WEEKLY
Elif [[ $MODE = "MENSILE" ]]; poi
BACKUP_DIR = $ BACKUP_DIR_MONTHLY
NUM_FILES_TO_KEEP = $ NUM_FILES_TO_KEEP_MONTHLY
Elif [[ $MODE = "ANNUALE" ]]; poi
BACKUP_DIR = $ BACKUP_DIR_YEARLY
NUM_FILES_TO_KEEP = $ NUM_FILES_TO_KEEP_YEARLY
altro
	eco "I valori disponibili $ MODE sono: QUOTIDIANO, MENSILE, SETTIMANALMENTE, ANNUALE"
	Uscita 1
fi

NUM_FILES_TO_KEEP = $(( $NUM_FILES_TO_KEEP + 1 ))

_backup () {
	/sbin / btrfs sottovolume istantanea -r $ BACKUP_SOURCE_DIR ${BACKUP_DIR}/backup-$(date +% Y-% m-% d)
}

_pulire () {
	per il file in $(ls -rt $ BACKUP_DIR | tail -n  +${NUM_FILES_TO_KEEP} ); fare
btrfs sudo sottovolume cancellare ${BACKUP_DIR}/$file
	fatto
}

_backup
_pulire

 

controller RAID Bad

IMG_26022014_084034

Se si dispone di uno chassis UCS dove le VM andare in linea e non è possibile accedere al VM con vSphere, potrebbe essere necessario riavviare il telaio tramite l'interfaccia web IMC. Ma, quando si riavvia e guardarlo attraverso la console KVM IP, questo è quello che non si vuole vedere:

LSI MegaRAID SAS-MFI BIOS
Versione 3.20.00 (Crea novembre 19, 2010)
Diritto d'autore(c) 2010 LSI Corporation
HA -0 (Autobus 14 dev 0) LSI MegaRAID SAS 9261-8i
pacchetto FW: 12.12.0-0038
 
Multibit errori ECC sono stati rilevati sul controller RAID.
Il DIMM sul controller deve essere sostituita.
Si prega di contattare il supporto tecnico per risolvere il problema.
Se si continua, il danneggiamento dei dati può verificarsi.
Premere 'X' per continuare o il potere altrimenti spegnere il sistema e sostituire il
modulo DIMM e riavviare. Se è stato sostituito il modulo DIMM premere 'X' per continuare.
ok, in modo da ottenere TAC al telefono e li hanno si invia il controller sostitutivo. Fiduciosamente, hai 4 risposta ora. Ecco il link per sostituire il controller RAID nello chassis UCS:
Dopo la sostituzione del controller RAID, si vuole fare in modo di copiare la configurazione delle unità al controller di recente sostituito. Questo non è stato documentato nella documentazione di sostituzione della carta. Ecco il link per farlo. Seguire le istruzioni ESATTAMENTE:
Verificare i dispositivi virtuali visualizzati sul controller RAID durante l'avvio. Le cose ancora potrebbero andare a sud. Il client vSphere può mostrare CUCM e UCXN come mancanti. Questo perché gli archivi di dati non ci sono. TAC sarà necessario aggiungere nuovamente i datastore per voi, possibilmente attraverso CLI. Più che probabilmente, il file system avrà errori sul VM. Può essere così male che il non si avvia, quindi sarà necessario montare il CD di ripristino, avvio ad esso, quindi scegliere l'opzione per correggere gli errori del file system. Dopo di che, prendere una birra. I server devono venire bene.
vedere -> http://iptbuzz.blogspot.de/2011/10/bad-raid-controller-on-ucs-c210-m2.html