Jak utworzyć zdalny skrypt kopii zapasowej za pomocą Rsync?

Procédure

Do czego służy Rsync?

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.

Jak utworzyć zdalny skrypt kopii zapasowej za pomocą Rsync?

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

Wnioski

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 ?

Article utileTak

Article non utileNie

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Podobne artykuły

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


Zadaj pytanie zespołowi LWS i jego społeczności