Skrypty do tworzenia kopii zapasowych plików z systemu Linux do pamięci w chmurze

Nie tak dawno temu opublikowaliśmy artykuł o podłączaniu popularnych bezpłatnych usług przechowywania w chmurze do serwera za pomocą CentOS 7. W tym artykule pokażemy, jak wykorzystać dane do tworzenia kopii zapasowych z serwera. Używam tych skryptów do dodatkowej kopii zapasowej plików witryny i bazy danych z mojego serwera Linux VPS.

Treść

  • Utwórz kopię zapasową danych w OneDrive z Linux CentOS
  • Kopia zapasowa na Dysku Google.
  • Skrypt kopii zapasowej na Yandex.Disk z Linuksa

Utwórz kopię zapasową danych w OneDrive z Linux CentOS

Wykonamy kopię zapasową witryny i bazy danych, a także sprawdzimy „wiek” kopii zapasowej (usuń kopie zapasowe tydzień temu) i wyślemy raport z pełnymi informacjami o wykonaniu skryptu na pocztę. Właściwie sam skrypt bash:

#! / bin / bash
# Skopiuj pliki witryny do katalogu tymczasowego
rsync -avzr --progress / var / www / html / / var / www / tmp / backup / >> result.txt
# Wykonaj zrzut bazy danych, umieść plik zrzutu w katalogu tymczasowym
mysqldump joomla> /var/www/tmp/backup/backup.sql
# Utwórz tymczasowe archiwum katalogowe
tar -cvzf backup - $ (data +% y% m% d) .tar.gz --absolute-names / var / www / tmp / backup / >> result.txt
# Sprawdź katalog chmury pod kątem starych kopii zapasowych, jeśli takie istnieją, usuń
znajdź / root / OneDrive / backup / -name "backup * .tar.gz" -mtime +7 -exec rm -f \; >> wynik.txt
# Skopiuj wcześniej utworzone archiwum do chmury
rsync -avzr --progress /root/bin/backup*.tar.gz / root / OneDrive / backup / >> result.txt
# Usuń archiwum z katalogu skryptów
rm -rf /root/bin/backup*.tar.gz >> wynik.txt
# Synchronizujemy się z chmurą z flagą -local-first, która pozwoli nam usunąć stare kopie zapasowe z chmury, jeśli usuniemy je lokalnie i prześlemy nowe
onedrive --local-first --synchronize >> wynik.txt
# Wysyłamy wiadomość e-mail z załączonym plikiem, w której wyświetlany jest cały proces tworzenia kopii zapasowej (zastąp skrzynką pocztową)
echo „Spójrz na plik pod kątem błędów i napraw je” | mail -a „/root/bin/result.txt” -s „Utworzono kopię zapasową” - ******@gmail.com
# Czyścimy katalogi z niepotrzebnych plików
rm -rf /root/bin/result.txt && rm -rf / var / www / tmp / backup / *

Przed napisaniem tego artykułu utworzyłem kilka kopii zapasowych, dzięki czemu mogę wykazać, że skrypt działa poprawnie (usuwa stare kopie zapasowe i przesyła nowe).

Uruchomiłem 3 razy ręcznie. Utworzono kilka kopii zapasowych, po których wszystkie zostały pomyślnie wysłane do chmury:

ls -la / root / OneDrive / backup /

razem 28260 drwxr-xr-x 2 root root 102 września 3 17:02. drwxr-xr-x 5 root root 94 września 3 11: 15 ... -rw-r - r-- 1 root root 9643081 3 września 17:00 backup-1909031700.tar.gz -rw-r - r-- 1 root root 9643082 3 września 17:01 backup-1909031701.tar.gz -rw-r - r-- 1 root root 9643083 3 września 17:02 backup-1909031702.tar.gz Inicjowanie silnika synchronizacji ... Synchronizacja zmian ze ścieżki lokalnej najpierw przed pobraniem zmian z OneDrive ... Usuwanie elementu z OneDrive: backup / backup-1909031700.tar.gz Usuwanie elementu z OneDrive: backup / backup-1909031701.tar.gz Usuwanie elementu z OneDrive: backup / backup-1909031702.tar.gz Przesyłanie nowy plik ./backup/backup-1909031704.tar.gz ... Przesyłanie 100% | oooooooooooooooooooooooooooooooooooooooooo | SPORZĄDZONO W 00:00:04 gotowe. Przetwarzanie 6 zmian

Sprawdzanie chmury, wszystkie trzy archiwa z kopiami zapasowymi tutaj:

W następnym kroku usunąłem utworzone kopie zapasowe z katalogu na serwerze i ponownie uruchomiłem skrypt. Wyświetlanie zawartości katalogu na serwerze:

ls -la / root / OneDrive / backup /

łącznie 9420 drwxr-xr-x 2 root root 38 września 3 17:04. drwxr-xr-x 5 root root 94 września 3 11: 15 ... -rw-r - r-- 1 root root 9643082 3 września 17:04 backup-1909031704.tar.gz 

Po wejściu do interfejsu internetowego OneDrive zobaczyłem, że kopie zapasowe zostały usunięte i stamtąd automatycznie.

Ponadto po uruchomieniu skryptu otrzymałem wiadomość e-mail:

To wszystko, to koniec, tworzenie kopii zapasowych w OneDrive się skończyło..

Kopia zapasowa na Dysku Google.

Tworzenie kopii zapasowej na Dysku Google w Se nie było tak łatwe jak w OneDrive, chociaż sama konfiguracja jest dość prosta. Główny problem powstał podczas usuwania starych kopii zapasowych z Dysku Google, ponieważ katalog pamięci nie jest zamontowany na serwerze. Ale po długim przestudiowaniu pomocy w prowadzeniu pomocy, udało nam się uaktualnić nasz wcześniej używany skrypt.

#! / bin / bash
# usuń pliki starsze niż 7 dni za pomocą g.drive
/ usr / sbin / drive list -q "ModifiedDate < '$(date -d '-7 day"+%Y-%m-%d')'" | cut -d" " -f1 - | xargs -L 1 drive delete -i
rsync -avzr --progress / var / www / html / / var / www / tmp / backup / >> result.txt
mysqldump joomla> /var/www/tmp/backup/backup.sql
tar -cvzf backup - $ (data +% Y% m% d) .tar.gz --absolute-names / var / www / tmp / backup / >> result.txt
# prześlij plik do g.drive
/ usr / sbin / drive upload -f /root/bin/backup*.tar.gz >> result.txt
rm -rf /root/bin/backup*.tar.gz >> wynik.txt
echo „Spójrz na plik pod kątem błędów i napraw je” | mail -a „/root/bin/result.txt” -s „Utworzono kopię zapasową” - ******@gmail.com
rm -rf /root/bin/result.txt
rm -rf / var / www / tmp / backup / *

Nie pomalowałem pozostałych kroków w skrypcie, ponieważ są one powtarzane z poprzednimi.

Uruchomiony skrypt został wykonany:

sh backup_gdrive.sh

Plik usunięty „DSC_2151.NEF” Plik usunięty „DSC_2153.NEF” Plik usunięty „DSC_2159.NEF” Plik usunięty „DSC_2226.NEF” Plik usunięty „DSC_2225.NEF”
Sprawdź dostępność pliku na Dysku Google: lista napędów
ID Tytuł Rozmiar Utworzono 1oay3-FAWBZRjHtma1cRTLrOvf3t8hRpD backup-20190904.tar.gz 9,6 MB 2019-09-04 14:43:25

Z interfejsu internetowego jest tak samo widoczny jak z konsoli:

W ten sposób otrzymujemy skrypt, który sprawdza obecność starych kopii zapasowych w chmurze Dysku Google, usuwa je, jeśli spełniają wymagania, a następnie tworzy kopię zapasową witryny i wysyła ją do tej samej chmury.

Skrypt kopii zapasowej na Yandex.Disk z Linuksa

Zostawiłem to miejsce w chmurze na przekąskę, ponieważ tworzenie kopii zapasowej na Yandex.Disk jest najłatwiejsze, ponieważ Zainstalowaliśmy pamięć masową w chmurze Yandex za pośrednictwem WebDav jako osobne urządzenie dyskowe. Metoda jest taka sama, uruchamiamy skrypt, tylko z niewielką różnicą, nie musimy synchronizować ani przesyłać plików za pomocą specjalnych poleceń, działamy jak ze zwykłym katalogiem serwera. Synchronizacja katalogów odbywa się za pomocą rsync. Skrypt będzie wyglądał następująco:

#! / bin / bash
rsync -avzr --progress / var / www / html / / var / www / tmp / backup / >> result.txt
mysqldump joomla> /var/www/tmp/backup/backup.sql
tar -cvzf backup - $ (data +% Y% m% d) .tar.gz --absolute-names / var / www / tmp / backup / >> result.txt
znajdź / mnt / yad / -name "kopia zapasowa * .tar.gz" -mtime +7 -exec rm -f \; >> wynik.txt
rsync -avzr --progress /root/bin/backup*.tar.gz / mnt / yad / >> result.txt
rm -rf /root/bin/backup*.tar.gz >> wynik.txt
echo „Spójrz na plik pod kątem błędów i napraw je” | mail -a „/root/bin/result.txt” -s „Utworzono kopię zapasową” - ****@gmail.com
rm -rf /root/bin/result.txt
rm -rf / var / www / tmp / backup / *

Tak samo, tylko bez dodatkowych poleceń. Jeśli masz inne ścieżki do magazynu w chmurze, zmień skrypt na swój.

Na końcu artykułu chciałbym dodać. Umieściłem te skrypty w osobnym katalogu i uruchomiłem je na koronie. Jeśli miejsce na dyskach w chmurze często pozwala na tworzenie kopii zapasowych, twórz je tak często, jak to możliwe, polecam co najmniej raz na 3 dni. Wykorzystaj swoje zasoby pamięci w chmurze w 100%.

Przykłady zadań w koronie:

0 0 * * 6 /root/bin/backup.sh - uruchom skrypt kopii zapasowej w każdą sobotę o 00-00
0 0 * / 3 * * /root/bin/backup.sh - uruchamiaj skrypt kopii zapasowej co 3 dni o godzinie 00-00

I tak dalej, konfiguruj kopie zapasowe według własnego uznania, gdy obciążenie serwera jest minimalne.