Rsync (Remote Sync) to narzędzie służące do synchronizacji plików i katalogów między lokalnym systemem a zdalnym systemem lub między dwoma zdalnymi systemami. W poniższej instrukcji przedstawiony został sposób wykorzystania Rsync do tworzenia automatycznych kopii zapasowych poprzez utworzenie skryptu i cykliczne uruchomienie go w zadaniu CRON.
Aby skorzystać z RSYNC i cyber_Storage:
1. Upewnij się, że znasz hasło ustawione w opcji RSYNC Secret w danych technicznych Twojej usługi cyber_Storage: https://cyberfolks.pl/pomoc/zarzadzanie-usluga-cyber_storage-zmiana-hasla-konfiguracja/
2. Zaloguj się do SSH serwera, z którego chcesz zgrać dane – przykładowe polecenie:ssh -p PORT USER@HOST
gdzie: PORT
to port do połączenia SSH, USER
to login użytkownika, a HOST
to nazwa serwera lub jego adres IP
Przykłady nawiązania połączenia SSH dla usług z naszą administracją znajdziesz w instrukcji: https://cyberfolks.pl/pomoc/jak-zalogowac-sie-na-ssh/
3. Ustal, w jakiej lokalizacji znajdują się pliki, które chcesz przekopiować.
4. Utwórz na serwerze katalog, w którym umieścisz pliki potrzebne do uruchomienia skryptu, np poleceniem mkdir nazwa_katalogu
i przejdź do tego katalogu cd nazwa_katalogu
5. Utwórz w tej lokalizacji plik o dowolnej nazwie np. poleceniem:nano pass.txt
Umieść w nim hasło RSYNC Secret z pierwszego punktu instrukcji i zapisz plik („ctrl”+”o” i potwierdź Enter)
Nadaj uprawnienia 600 dla pliku z hasłem: chmod 600 pass.txt
6. Utwórz w tej samej lokalizacji plik skryptu .sh: nano skrypt.sh
7. Uzupełnij plik skrypt.sh skryptem z poleceniem rsync – przykładowy skrypt, który możesz wykorzystać:
#!/bin/bash
#####EDIT HERE#####
LOGIN=""
SERVER=""
SOURCE_DIR=""
PASS_SECRET=""
###################
# Pobranie bieżącej daty, do utworzenia katalogu, do którego zostaną wgrane dane
current_date=$(date +%Y-%m-%d)
# Ustalenie daty, po której dane mają być usunięte - tutaj 28 dni wstecz od bieżącego dnia - ILOŚĆ DNI MOŻNA EDYTOWAĆ
old_date=$(date -d "28 days ago" +%Y-%m-%d)
# Lokalizacja docelowa, do ktorej zostana wgrane dane - utworzony zostanie katalog z dzisiejsza data i do niej zostana wgrane dane
target_dir="rsync://${LOGIN}@${SERVER}/${LOGIN}/$current_date/"
# Lokalizacja, z której zostana usuniete dane
target_dir_del="rsync://${LOGIN}@${SERVER}/${LOGIN}/$old_date/"
# WYKONANIE KOPII DO KATALOGU DOCELOWEGO
rsync_command="rsync -avWHs --password-file=$PASS_SECRET $SOURCE_DIR $target_dir"
eval $rsync_command
# USUNIECIE DANYCH STARSZYCH NIŻ 28dni
#utworzenie tymczasowego, nieistniejącego katalogu na serwerze źródłowym
source_dir_del="$SOURCE_DIR/non_exist/"
mkdir $source_dir_del
rsync_command_del="rsync -avWHs --delete --password-file=$PASS_SECRET $source_dir_del $target_dir_del"
eval $rsync_command_del
#usunięcie katalogu tymczasowego
rmdir $source_dir_del
Na początku skryptu znajdują się zmienne, które należy dostosować do własnych potrzeb. Znajdziesz je w Danych technicznych usługi cyber_Storage w panelu klienta.
LOGIN
– Login Twojej usługi w polu KontoSERVER
: Adres serwera cyber_Storage ADRES SERWERASOURCE_DIR
: Bezpośrednia ścieżka do katalogu, z którego będą kopiowane dane.PASS_SECRET
: Bezpośrednia ścieżka do pliku, w której utworzony jest plik z hasłem z punktu 5. instrukcji.
Uwaga!
Pełny opis działania powyższego skryptu znajdziesz na końcu instrukcji – zapoznaj się z nim, jeśli masz wątpliwości co do operacji wykonywanych przez skrypt. Skrypt ten możesz dowolnie modyfikować pod swoje potrzeby – przedstawiony skrypt to jedynie przykład.
Pamiętaj, że na cyber_Storage nie wykonujemy kopii zapasowych danych – usunięcie danych z serwera i jego częstotliwość wykonuj świadomie!
Po uzupełnieniu danych zapisz plik („ctrl”+”o” i potwierdź Enter)
8. Nadaj uprawnienia 700 dla pliku ze skryptem: chmod 700 skrypt.sh
9. Jeśli chcesz, aby skrypt wywoływany był cyklicznie, dodaj jego wywołanie w zadaniu CRON, np. raz dziennie:0 23 * * * /SCIEŻKA_DO_SKRYPTU/skrypt.sh
0 23 * * *
oznacza, że skrypt będzie uruchamiany o godzinie 23:00 każdego dnia. Jest to oczywiście przykładowa częstotliwość wywoływania CRON
Na usługach z naszą administracją możesz dodać zadanie CRON zgodnie z instrukcją: https://cyberfolks.pl/pomoc/jak-ustawic-zadania-cron/
Gotowe!
Opis skryptu
Na początku skryptu znajdują się zmienne, które należy dostosować do własnych potrzeb. Następnie skrypt pobiera bieżącą datę i datę sprzed 28 dni. Następnie tworzony jest docelowy katalog na serwerze o nazwie zawierającym bieżącą datę, do którego będą kopiowane dane oraz określona zostaje ścieżka, z której pliki mają zostać usunięte – czyli wszystkie pliki z katalogów starszych niż 28 dni od bieżącej daty. Użyte polecenie rsync korzysta z deamona rsync.
Następnie wykonywana jest kopii zapasowa danych z lokalnego katalogu do docelowego na serwerze za pomocą polecenia rsync
z następującymi opcjami:
- –
a
: Tryb archiwalny, który zachowuje właściwości plików, takie jak uprawnienia, stempel czasowy, itp. -v
: Tryb verbose, wyświetla szczegółowe informacje podczas procesu synchronizacji.-W
: Kopiowanie plików specjalnych w sposób przewodni (także w trybie archiwalnym).-H
: Zachowuje dowiązania symboliczne na plikach źródłowych.-s
: Tryb synchronizacji, który usuwa pliki na docelowym serwerze, które nie istnieją na lokalnym systemie
Następnie tworzony jest katalog tymczasowy na lokalnym komputerze (source_dir_del
), który służy do symulacji usunięcia danych starszych niż 28 dni. Katalog ten nie istnieje na serwerze źródłowym. W kolejnym kroku wykonywane jest usunięcie danych starszych niż 28 dni z docelowego katalogu na serwerze, używając opcji --delete
w poleceniu rsync
. Dane te symulowane są przez katalog tymczasowy source_dir_del
. Na końcu usuwany jest tymczasowy katalog lokalny source_dir_del
.