Shell skrypt do backupu – Okna SMB / Linux Server

przygotować

  • skopiować wszystkie pliki w jednym folderze
  • modyfikować backup-start.sh ze swojej drogi i configs
  • zrobić partycję Btrfs
  • tworzyć podwolumen dla ścieżki kopii zapasowej
  • stworzyć cronjob

początek

backup-start.sh codziennie
backup-start.sh tygodniowo

tryby zapasowe

  • SMB
  • sshs
  • sshnosymlink
  • sshsudoftp

backup-start.sh

#!/bin / bash
# sprawdzić skrypt kopii zapasowej, jeżeli jego prowadzenie, a jeśli tak, to obliczony dla migawka
nazwa_skryptu = / home / backup / backup-script.sh
email_admin=mail1@mail.de,mail2@mail.de
BACKUP_PATH = / srv / backup / zrobić
snapshot_path = / srv / backup / Migawki / Backup $(Termin +% Y% m-% d% H% M)
snapshot_script = / home / eit / backup / services-snapshots.sh

## początek skrypt

gdyby [ -z "$1" ];następnie
 Echo "Zestaw nie cel"
 wyjście 1
jeszcze
 #Echo "Ustal cel"
 backup_mode = $ 1
fi

## Funkcja dla kodów errpr
check_error(){
 gdyby [ "$1" -dać "100" ]; następnie
 Echo "Początek - nadal działa backup"
 wyjście 1
 fi
 jeśli [ "$1" -równoważnika "10" ]; następnie
 Echo "Początek - backup zrobić - żadnych plików"
 MODE = $ backup_mode $ snapshot_script $ backup_local_path / $ server $ snapshot_local_path / $ server
 jeszcze
 gdyby [ "$1" -równoważnika "0" ]; następnie
 Echo "Początek - backup zrobić - z plikami"
 MODE = $ backup_mode $ snapshot_script $ backup_local_path / $ server $ snapshot_local_path / $ server
 fi
 fi
}

script_start(){
 gdyby [ ! -re "$backup_local_path / $ server" ]; następnie
 Echo "Folder kopii zapasowej nie istnieje"
 Btrfs podwolumen tworzyć $ backup_local_path / $ server
 chmod 740 $backup_local_path / $ server
 Echo "Folder kopii zapasowej utworzony"
 jeszcze
 Echo "Folder kopii zapasowej istnieje"
 fi
}

##
# uruchomić skrypt do backupu
##

server = mysvwe1
script_start
sh $ nazwa_skryptu $ email_admin $ server / path / to / backup / dane $ backup_local_path hasło ssh nazwa_użytkownika
error_now = $?
check_error $ error_now

wyjście 0

backup-script.sh

#!/bin / bash
#
# Thomas Mosandl - 2014-11-14
#
# apt-get install CIFS-utils sendmail-bin
# sendmail config
#
# zdefiniowanie parametru #!/bin / sh
# określić parameterss
## zmienne
## 1. mail
## 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 = 'USA'
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"

# koniec config

Echo "Rozpocznij tworzenie kopii zapasowej - $backup_source_ip"

# vaiable check
gdyby [ -z "$1" ];następnie
        Echo "Email ustawić config"
        backup_email_to ="$backup_email_to_config"
jeszcze
        Echo "poczty ustawiony parametrem"
        backup_email_to = $ 1
fi
# sprawdzić iSCSI Target


#ping -q -c $ backup_check_client_ping $ backup_iscsi_target_1 > /dev / null
#gdyby [ ! $? -równoważnika 0 ]; następnie
#	Echo "ISCSI Ping nie availible"
#	Echo " "  | -s poczty "Utworzyć kopię zapasową - iSCSI - Ping nie działa" -za "Od: $backup_email_from" $backup_email_to
#	wyjście 1
#jeszcze
#	#gdyby [ $(iscsiadm sesja -m | grep -c "$backup_iscsi_target_1") -równoważnika 0 ]; następnie
	#	Echo "ISCSI Góra nie availible"
	#	Echo " "  | -s poczty "Utworzyć kopię zapasową - iSCSI - Góra nie działa" -za "Od: $backup_email_from" $backup_email_to
	#	wyjście 1
	#jeszcze
#		Echo "ISCSI jest w porządku"
	#fi
#fi

#192.168.144.167
# sprawdzić, czy kopia zapasowa jest uruchomiony
ps aux > /tmp / temp.txt
gdyby [ $(kot /tmp/temp.txt  | grep -c "ssh -o StrictHostKeyChecking = brak -l")  -GT 0 ]; następnie
Echo "backup został uszkodzony lub nie działa"
	gdyby [ -fa "$backup_log_path / $ backup_log_file.lck" ]; następnie
rm -rf "$backup_log_path / $ backup_log_file.lck"
	fi
fi
rm -rf /tmp/temp.txt

jeśli [ -fa "$backup_log_path / $ backup_log_file.lck" ]; następnie
Echo " "  | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - Kopia zapasowa jest nadal działa"  -R $ backup_email_from $ backup_email_to
Echo "Scenariusz - kopia zapasowa jest uruchomiony"
		ustawić -e
wyjście 100
jeszcze
Echo "Scenariusz - kopia zapasowa nie jest jeszcze uruchomiony"
	dotknąć "$backup_log_path / $ backup_log_file.lck"
fi

# sprawdzić, czy rejestr jest w logrotate

gdyby [ $(grep -c "$backup_log_path / $ backup_log_file" /etc / logrotate.d / rsyslog)  -równoważnika 1 ]; następnie
Echo "Scenariusz - rsyslog jest ustawiony"
jeszcze
Echo "$backup_log_path / $ backup_log_file {}" >> /etc / logrotate.d / rsyslog
Echo "Scenariusz - rsyslog stworzony"
fi

#
gdyby [ ! $(uchwyt | grep -c "/media / data0 / srv / backup typu Btrfs (RW)")  -równoważnika 0 ]; następnie
Echo "przechowywania nie montowane"
	wyjście 11
	Echo " "  | -s poczty "Utworzyć kopię zapasową - przechowywania nie montowane"  -R $ backup_email_from $ backup_email_to
jeszcze
Echo "przechowywanie jest zamontowany"
fi

# tworzyć foldery

# sprawdzić zapasowej dir
gdyby [ ! -re "$backup_dest_path" ]; następnie
      Echo "Folder kopii zapasowej nie istnieje"
      mkdir -p $ backup_dest_path
      chmod 740 $backup_dest_path
      Echo "Folder kopii zapasowej utworzony"
jeszcze
      Echo "Folder kopii zapasowej istnieje"
fi


jeśli [ ! -re "$backup_log_path" ]; następnie
      Echo "Folder dziennika kopia zapasowa nie istnieje"
      mkdir -p $ backup_log_path
      Echo "Folder dziennika kopia zapasowa utworzona"
jeszcze
      Echo "Folder kopii zapasowej dziennika istnieje"
fi





# check nslookup
nslookup $ backup_source_ip > /dev / null
gdyby [ ! $? -równoważnika 0 ]; następnie
Echo "DNS nie działa dla $ backup_source_ip"
	Echo " "  | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - nslookup nie pracuje dla $ backup_source_ip"  -R $ backup_email_from $ backup_email_to
rm -rf "$backup_log_path / $ backup_log_file.lck"
	ustawić -e
wyjście 1
jeszcze
Echo "DNS jest w porządku"
fi


# check ping
gdyby [ ! $backup_source_ip = "server.de" ]; następnie
ping -q -c $ backup_check_client_ping $ backup_source_ip > /dev / null
gdyby [ ! $? -równoważnika 0 ]; następnie
Echo "Ping nie działa dla $ backup_source_ip"
		Echo " "  | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - ping $ backup_source_ip nie działa"  -R $ backup_email_from $ backup_email_to
rm -rf "$backup_log_path / $ backup_log_file.lck"
		ustawić -e
wyjście 1
	jeszcze
Echo "Ping jest w porządku"
	fi
fi

# rsync
echo $ backup_service
gdyby [ $backup_service = ssh ]; następnie
exit_code ="0"
	log_file_temp = $ backup_log_file_ $(Termin +% Y_% M_% d_% h_% M_% S)
	eksport SSHPASS = $ backup_source_pw
ionice -c 3 rsync -rptgoDvzLKh --delete --rsh ="/usr / bin / sshpass -e ssh -o StrictHostKeyChecking = brak -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
gdyby [ ! $? -dać 0 ]; następnie
Echo "błąd backup - $?"
		kot v $ backup_log_path / $ backup_log_file | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - błąd backup - $?" -za "Od: $backup_email_from" $backup_email_to
ustawić -e
wyjście 1
	jeszcze
Echo "Backup jest w porządku"
		gdyby [ ! $(grep -c "Liczba utworzonych plików: 0" $backup_log_path / $ log_file_temp) -równoważnika 0 ]; następnie
-s poczty "Utworzyć kopię zapasową - $backup_source_ip - Sporządzono zapasowa - żadnych plików" -R $ backup_email_from $ backup_email_to < $backup_log_path / $ log_file_temp
Echo "Scenariusz - żadnych plików"
			 exit_code ="10"
		 jeszcze
kot v $ backup_log_path / $ log_file_temp | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - Sporządzono zapasowa"  -R $ backup_email_from $ backup_email_to
fi
kot $ backup_log_path / $ log_file_temp >>  $backup_log_path / $ backup_log_file
rm $ backup_log_path / $ log_file_temp
fi
Elif [ $backup_service = sshnosymlink ]; następnie
exit_code ="0"
	 log_file_temp = $ backup_log_file_ $(Termin +% Y_% M_% d_% h_% M_% S)
	 eksport SSHPASS = $ backup_source_pw
ionice -c 3 rsync -rptgoDvzlKh --delete --rsh ="/usr / bin / sshpass -e ssh -o StrictHostKeyChecking = brak -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
gdyby [ ! $? -dać 0 ]; następnie
Echo "błąd backup - $?"
		 kot v $ backup_log_path / $ backup_log_file | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - błąd backup - $?" -za "Od: $backup_email_from" $backup_email_to
ustawić -e
wyjście 1
	 jeszcze
Echo "Backup jest w porządku"
		 gdyby [ ! $(grep -c "Liczba utworzonych plików: 0" $backup_log_path / $ log_file_temp) -równoważnika 0 ]; następnie
-s poczty "Utworzyć kopię zapasową - $backup_source_ip - Sporządzono zapasowa - żadnych plików" -R $ backup_email_from $ backup_email_to < $backup_log_path / $ log_file_temp
Echo "Scenariusz - żadnych plików"
			 exit_code ="10"
		 jeszcze
kot v $ backup_log_path / $ log_file_temp | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - Sporządzono zapasowa"  -R $ backup_email_from $ backup_email_to
fi
kot $ backup_log_path / $ log_file_temp >>  $backup_log_path / $ backup_log_file
rm $ backup_log_path / $ log_file_temp
fi
Elif [ $backup_service = sshsudoftp ]; następnie
exit_code ="0"
	 log_file_temp = $ backup_log_file_ $(Termin +% Y_% M_% d_% h_% M_% S)
	 eksport SSHPASS = $ backup_source_pw
ionice -c 3 rsync -rptgoDzLKh --delete --exclude "*użytkowników / data *" --wykluczać "*Użytkownicy / * / * dane"  --= droga rsync"sudo rsync" --rsh ="/usr / bin / sshpass -e ssh -o StrictHostKeyChecking = brak -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
gdyby [ ! $? -dać 0 ]; następnie
Echo "błąd backup - $?"
		 kot v $ backup_log_path / $ backup_log_file | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - błąd backup - $?" -za "Od: $backup_email_from" $backup_email_to
ustawić -e
wyjście 1
	 jeszcze
Echo "Backup jest w porządku"
		 gdyby [ ! $(grep -c "Liczba utworzonych plików: 0" $backup_log_path / $ log_file_temp) -równoważnika 0 ]; następnie
-s poczty "Utworzyć kopię zapasową - $backup_source_ip - Sporządzono zapasowa - żadnych plików" -R $ backup_email_from $ backup_email_to < $backup_log_path / $ log_file_temp
Echo "Scenariusz - żadnych plików"
			  exit_code ="10"
		  jeszcze
kot v $ backup_log_path / $ log_file_temp | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - Sporządzono zapasowa"  -R $ backup_email_from $ backup_email_to
fi
kot $ backup_log_path / $ log_file_temp >>  $backup_log_path / $ backup_log_file
rm $ backup_log_path / $ log_file_temp
fi

Elif [ $backup_service = SMB ]; następnie
        # backup mocowanie
        mount -t CIFS // $ backup_source_ip / $ backup_source_path $ backup_mount_path -o username = $ backup_source_user,password = $ backup_source_pw,ro,s = ntlm

        gdyby [ ! $? -równoważnika 0 ]; następnie
                Echo "Góra nie jest w porządku - $?"
                Echo " "  | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - mount -t CIFS // $ backup_source_ip / $ backup_source_path $ backup_mount_path nie działa" -za "Od: $backup_email_from" $backup_email_to
                rm -rf "$backup_log_path / $ backup_log_file.lck"
                ustawić -e
                wyjście 1
        jeszcze
                Echo "Góra jest w porządku"
        fi


        # rsync
        exit_code ="0"
        log_file_temp = $ backup_log_file_ $(Termin +% 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
        gdyby [ ! $? -dać 0 ]; następnie
                Echo "błąd backup - $?"
                kot v $ backup_log_path / $ backup_log_file | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - błąd backup - $?" -za "Od: $backup_email_from" $backup_email_to
                ustawić -e
                wyjście 1
        jeszcze
                Echo "Backup jest w porządku"
                                                                                                                     199,2-9       92%
        jeszcze
                Echo "Backup jest w porządku"
                gdyby [ ! $(grep -c "Liczba utworzonych plików: 0" $backup_log_path / $ log_file_temp) -równoważnika 0 ]; następnie
                        kot v $ backup_log_path / $ log_file_temp | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - Sporządzono zapasowa - żadnych plików" -za "Od: $backup_email_from" $backup_email_to
                        Echo "Scenariusz - żadnych plików"
                        exit_code ="10"
                jeszcze
                        kot v $ backup_log_path / $ log_file_temp | -s poczty "Utworzyć kopię zapasową - $backup_source_ip - Sporządzono zapasowa" -za "Od: $backup_email_from" $backup_email_to
                fi
                kot $ backup_log_path / $ log_file_temp >>  $backup_log_path / $ backup_log_file
                rm $ backup_log_path / $ log_file_temp
        fi
fi

# odmontować

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

services-snapshots.sh

#!/bin / bash
ustawić -e

gdyby [[ -od $ TRYBIE ]]; następnie
Echo "$TRYB nie podano"
	wyjście 1
fi

jeśli [[ $UID -ne 0 ]]; następnie
Echo "Musi być uruchamiany jako root"
	wyjście 1
fi

jeśli [ -z "$1" ];następnie
Echo "nie ustawiono źródła"
	wyjście 1
jeszcze
Echo "zestaw Źródło"
	BACKUP_SOURCE_DIR = $ 1

fi

gdyby [ -z "$2" ];następnie
Echo "Zestaw nie cel"
	wyjście 1
jeszcze
Echo "Ustal cel"
	BACKUP_BASE_DIR = $ 2
fi

BACKUP_DIR_DAILY = ${BACKUP_BASE_DIR}/codziennie
BACKUP_DIR_WEEKLY = ${BACKUP_BASE_DIR}/co tydzień
BACKUP_DIR_MONTHLY = ${BACKUP_BASE_DIR}/miesięczny
BACKUP_DIR_YEARLY = ${BACKUP_BASE_DIR}/rocznie

gdyby [ ! -re "$BACKUP_DIR_DAILY" ]; następnie
Echo "Folder kopii zapasowej nie istnieje"
	mkdir -p $ BACKUP_DIR_DAILY
chmod 740 $BACKUP_DIR_DAILY
Echo "Folder kopii zapasowej utworzony"
jeszcze
Echo "Folder kopii zapasowej istnieje"
fi
jeśli [ ! -re "$BACKUP_DIR_WEEKLY" ]; następnie
Echo "Folder kopii zapasowej nie istnieje"
	mkdir -p $ BACKUP_DIR_WEEKLY
chmod 740 $BACKUP_DIR_WEEKLY
Echo "Folder kopii zapasowej utworzony"
jeszcze
Echo "Folder kopii zapasowej istnieje"
fi
jeśli [ ! -re "$BACKUP_DIR_MONTHLY" ]; następnie
Echo "Folder kopii zapasowej nie istnieje"
	mkdir -p $ BACKUP_DIR_MONTHLY
chmod 740 $BACKUP_DIR_MONTHLY
Echo "Folder kopii zapasowej utworzony"
jeszcze
Echo "Folder kopii zapasowej istnieje"
fi
jeśli [ ! -re "$BACKUP_DIR_YEARLY" ]; następnie
Echo "Folder kopii zapasowej nie istnieje"
	mkdir -p $ BACKUP_DIR_YEARLY
chmod 740 $BACKUP_DIR_YEARLY
Echo "Folder kopii zapasowej utworzony"
jeszcze
Echo "Folder kopii zapasowej istnieje"
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

gdyby [[ $Tryb = "CODZIENNIE" ]]; następnie
Backup_dir = $ BACKUP_DIR_DAILY
NUM_FILES_TO_KEEP = $ NUM_FILES_TO_KEEP_DAILY
Elif [[ $Tryb = "CO TYDZIEŃ" ]]; następnie
Backup_dir = $ BACKUP_DIR_WEEKLY
NUM_FILES_TO_KEEP = $ NUM_FILES_TO_KEEP_WEEKLY
Elif [[ $Tryb = "MIESIĘCZNY" ]]; następnie
Backup_dir = $ BACKUP_DIR_MONTHLY
NUM_FILES_TO_KEEP = $ NUM_FILES_TO_KEEP_MONTHLY
Elif [[ $Tryb = "ROCZNIE" ]]; następnie
Backup_dir = $ BACKUP_DIR_YEARLY
NUM_FILES_TO_KEEP = $ NUM_FILES_TO_KEEP_YEARLY
jeszcze
Echo "TRYB dostępne są wartości $: CODZIENNIE, MIESIĘCZNY, CO TYDZIEŃ, ROCZNIE"
	wyjście 1
fi

NUM_FILES_TO_KEEP = $(( $NUM_FILES_TO_KEEP + 1 ))

_utworzyć kopię zapasową () {
	/sbin / Btrfs podwolumen migawka -r $ BACKUP_SOURCE_DIR ${backup_dir}/Backup $(Termin +% Y% m-% d)
}

_sprzątać () {
	do pliku w $($ Ls -rt backup_dir | ogon -n  +${NUM_FILES_TO_KEEP} ); zrobić
Btrfs sudo podwolumen usuwać ${backup_dir}/$plik
Gotowe
}

_utworzyć kopię zapasową
_sprzątać

 

Bad kontroler RAID

IMG_26022014_084034

Jeśli masz podwozie UCS gdzie VM przejść do trybu offline i nie można uzyskać dostęp do maszyn wirtualnych z vSphere, być może trzeba będzie ponownie uruchomić podwozie poprzez interfejs WWW IMC. Ale, po ponownym uruchomieniu go i oglądać je za pośrednictwem konsoli KVM IP, to jest to, czego nie chcą widzieć:

BIOS LSI MegaRAID SAS-MFI
Wersja 3.20.00 (Budowanie listopad 19, 2010)
Prawo autorskie(do) 2010 LSI Corporation
HA -0 (Autobus 14 dev 0) LSI MegaRAID SAS 9261-8i
pakiet FW: 12.12.0-0038
 
Błędy multibit ECC wykryto na kontrolerze RAID.
DIMM na kontrolerze wymaga wymiany.
Proszę skontaktować się z pomocą techniczną, aby rozwiązać ten problem.
Jeśli nadal, może nastąpić uszkodzenie danych.
Naciśnij „X”, aby kontynuować albo wyłączyć zasilanie systemu i zastąpienie
Moduł DIMM i restart. Jeśli zastąpiły prasie DIMM „X”, aby kontynuować.
ok, więc się TAC na telefon i wysłać je kontroler zastępczą. Ufnie, ty masz 4 odpowiedź godzin. Oto link do zastąpienia kontrolera RAID w obudowie LUW:
Po wymianie kontrolera RAID, będziemy chcieli, aby upewnić się, skopiować konfigurację napędu do nowo zastąpiona kontrolera. To nie zostało udokumentowane w dokumentacji karty zastępczej. Oto link, aby to zrobić. Postępuj zgodnie z instrukcjami dokładnie:
Sprawdź, czy urządzenia wirtualne pokazać się na kontrolerze RAID podczas rozruchu. Rzeczy wciąż może iść na południe. Klient vSphere mogą wykazywać CUCM i UCXN jako brakujące. To dlatego, że nie są tam magazynów danych. TAC będzie trzeba ponownie dodać magazynów danych dla Ciebie, ewentualnie poprzez CLI. Więcej niż prawdopodobne, system plików będzie mieć błędów na maszynach wirtualnych. To może być tak źle, że nie chce się uruchomić, więc trzeba będzie zamontować CD odzyskiwania, rozruchu do niego, następnie wybierz opcję, aby naprawić błędy systemu plików. Po tym, na piwo. Serwery powinny pochodzić tylko grzywna.
widzieć -> http://iptbuzz.blogspot.de/2011/10/bad-raid-controller-on-ucs-c210-m2.html