Oceń ten artykuł :
4,8/5 | 5 opinia
Ten artykuł był dla Ciebie przydatny ?
Tak
Nie
Vous avez noté 0 étoile(s)
Procédure
Rsync umożliwia synchronizację plików za pomocą wiersza poleceń, dzięki czemu można tworzyć kopie zapasowe plików z jednego miejsca do drugiego, synchronizując je według źródła.
Poniższy skrypt umożliwia wykonywanie pełnej kopii zapasowej raz w miesiącu i częściowej kopii zapasowej raz w tygodniu.
Poniższy skrypt umożliwia utworzenie zdalnego skryptu kopii zapasowej za pomocą Rsync. Skrypt sprawdzi obecność folderu źródłowego, przetestuje dostępność serwera i co miesiąc utworzy nowy folder, do którego wstawi pełną kopię zapasową.
#!/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 }# Jeśli katalog zawierający logi nie istnieje, zostanie utworzony.if [ ! -d $log ];then mkdir $log fi# Testujemy obecność folderu źródłowego ORAZ czy serwer odpowiada na 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 no longer exists or is inaccessible.\nServer inaccessible ($hostssh : $counter packets transmitted, $recus packets received).\nNo backup performed." >> $log/sauvegarde_$jour.log exit# Testujemy tylko obecność folderu źródłowegoelif [ ! -d $local ];then name echo -e "$jour-$heure : $local n'existe plus ou est inaccessible.\nNo backup performed." >> $log/sauvegarde_$jour.log exit# Testujemy tylko ping serweraelif [ $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 "Backup of $local from $(date +%d-%B-%Y)" >> $log/backup_day.log echo "-------------------------------------------------------------" >> $log/backup_$day.log # Transfer start time in log echo "Backup start time: $(date +%T)" >> $log/backup_$day.log echo "-------------------------------------------------------------"# transfer plikówrsync -avz --stats --protect-args --delete-after -e ssh $local $userssh@$hostssh:$distant >> $log/backup_$day.log # -a : tryb archiwizacji ( odpowiednik -rlptgoD ). # -z : kompresja danych podczas transferu.
-e : aby określić użycie ssh # -- stats : podaje informacje o transferze (liczba plików...). # --protect -args : Jeśli chcesz przesłać nazwę pliku zawierającą spacje, możesz ją określić za pomocą tej opcji. # --delete-after : usuwa pliki, które nie istnieją już w źródle po przesłaniu do folderu docelowego.
status=$? echo "" >> $log/day_backup.log# rsync return codescase $status in 0) echo Success >> $log/day_backup.log; 1) echo Syntax or usage error >> $log/day_backup.log; 2) echo Protocol incompatibility >> $log/day_backup.log;; 3) echo Błędy podczas wybierania plików i katalogów wejściowych/wyjściowych >> $log/sauvegarde_$jour.log;; 4) echo Akcja nieobsługiwana: próba manipulowania 64-bitowymi plikami na platformie, która ich nie obsługuje; lub opcja obsługiwana przez klienta, ale nie przez serwer. >> 5) echo Error starting client-server protocol >> $log/sauvegarde_$jour.log;; 6) echo daemon unable to write to log file >> $log/sauvegarde_$jour.log;; 10) echo I/O socket error >> $log/sauvegarde_$jour.log; 11) echo I/O file error >> $log/sauvegarde_$jour.log;; 12) echo Błąd w strumieniu danych protokołu rsync >> $log/save_$day.log;; 13) echo Błąd diagnostyki programu >> $log/save_$day.log;; 14) echo Error in IPC code >> $log/save_$day.log;; 20) echo SIGUSR1 or SIGINT received >> $log/save_$day.log;; 21) echo "An error returned by waitpid()" >> $log/save_$day.log;; 22) echo Error allocating main memory buffers >> $log/sauvegarde_$jour.log;; 23) echo Partial transfer due to an error >> $log/sauvegarde_$jour.log;; 24) echo Partial transfer due to disappearance of a source file >> $log/sauvegarde_$jour.log;; 25) echo The --max-delete limit has been reached >> $log/sauvegarde_$jour.log;; 30) echo Przekroczono maksymalny czas oczekiwania podczas wysyłania/odbierania danych >> $log/sauvegarde_$jour.log;; 35) echo Przekroczono czas oczekiwania podczas oczekiwania na połączenie >> $log/sauvegarde_$jour.log;; 255) echo Niewyjaśniony błąd >> $log/sauvegarde_$jour.log;; esac echo "-------------------------------------------------------------" >> Czas zakończenia w dziennikuecho "Czas zakończenia kopii zapasowej: $(data +%T)" >> $log/backup_$day.log echo "-------------------------------------------------------------"# Kopie zapasowe są usuwane zgodnie z retencją.ssh $userssh@$hostssh rm -rf "backups_$retention" exit
źródło: GitHub tuxmika
Możesz teraz utworzyć zdalny skrypt kopii zapasowej za pomocą Rsync, aby przesyłać pliki i foldery do przestrzeni kopii zapasowych online za pomocą LWS. Skrypt można uruchomić za pomocą zadania cron, aby uruchamiał się raz w tygodniu.
Nie wahaj się podzielić swoimi pytaniami i komentarzami!
Oceń ten artykuł :
4,8/5 | 5 opinia
Ten artykuł był dla Ciebie przydatny ?
Tak
Nie
2mn czytanie
Jak dodać klucz RSA do usługi dysku SCP Rsync?
1mn czytanie
Jak używać Rsync do tworzenia kopii zapasowych strony Ispconfig?
0mn czytanie
Jak wykonać kopię zapasową witryny za pomocą LWS Drive?
4mn czytanie
narzędzie do przywracania backup2l