Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum, zapoznaj się z kilkoma zasadami savoir-vivre'u w dziale Administracja.
Wiadomości z problemami zamieszczone w wątku "Przywitaj się" oraz wszelkie reklamy na naszym forum będą usuwane.

Budowanie NAS

Zaczęty przez sebekoo, Luty 03, 2019, 02:02:52 PM

Poprzedni wątek - Następny wątek

TataPingu

Och Jezu...!
- przecież piszę "zapisz ten plik dodatkowo jako", no więc, gdzie tu zmiana nazwy !?

SKOPIOWAć, tak, że będziesz mieć DWA TE SAME PLIKI (wylaczenie.sh i wylaczenie.sh.DZIENNE) !!!

A crontab zostaw już w spokoju

sebekoo

Też z tak zrobiłem. Ale tam są jeszcze inne wpisy zostawić je czy usunąć ?

TataPingu

Cytat: sebekoo w Marzec 29, 2019, 08:24:18 PM
Też z tak zrobiłem. Ale tam są jeszcze inne wpisy zostawić je czy usunąć ?

A co i po co chcesz "usuwać" ?
- przy piątku przemęczony jesteś, czy co ?

Może mieszkam już 30 lat poza Krajem, ale znaczenie "DWA TE SAME PLIKI" jest chyba jasne ;)

sebekoo

#288
Rozumiem Cię dobrze. Ja czasami takie" ciężkie" pytania mam. Przepraszam.

Zgadza się tylko czy crontab czy wylaczenie.sh mam powielić na wylaczenie.sh.DZIENNE ?

TataPingu

Cytat: sebekoo w Marzec 29, 2019, 08:30:15 PM
Zgadza się tylko czy crontab czy wylaczenie.sh mam powielić na wylaczenie.sh.DZIENNE ?

O MATKOBOSKA a co ja przed chwilą napisałem ?
"A crontab zostaw już w spokoju"

Nie rób nic innego, tylko to co piszę, to będzie OK

TataPingu

#290
W następnej kolejności stwórz NOWY PLIK:

/usr/local/bin/wylaczenie.sh.NEUTRAL

i nanieść do niego (możesz copy) poniższy tekst:

#!/bin/bash
#
# po wylogowaniu klientow wymazana STATUSFILE
# i rozpoczety RSYNC_BACKUP_SERVER
# wylaczenie.sh.NEUTRAL

# Czeka, az rsync wykona do konca operacje backupa.
if [ $(ps -A | grep -c /usr/bin/rsync) = 0 ];
#if [ $(ps -A | grep -c rsync) = 0 ];
then
exit
fi


Nie zapomnij o zmianie praw (chown)

sebekoo

#291
Utworzyłem dodatkowy plik wylaczenie.sh.NEUTRAL i nadałem prawa 755 i chown root

TataPingu

Teraz tworzysz plik /usr/local/bin/wylaczenie.sh.PO_BACKUPIE i nanosisz do niego:


#!/bin/bash
#
#/usr/local/bin/wylaczenie.sh.PO_BACKUPIE
# Po wykonaniu backupa dziennego zainicjowanie poweroff serwera
#

# Filename of the statusfile
STATUSFILE="/tmp/wylaczenie-status"


#--W TYM MIEJSCU NANOSISZ TO SAMO CO MASZ W /bin/wylaczenie.sh.DZIENNE----
#
# which ip range should be checked?
# this example looks in "192.168.1.10 to 192.168.1.30"
# and "192.168.178.10 to 192.168.178.30"
#RANGE="192.168.1,178.10-30"
#MOJE
RANGE="192.168.0.1-9"
#RANGE="192.168.0.1"
#
#--W TYM MIEJSCU NANOSISZ TO SAMO CO MASZ W /bin/wylaczenie.sh.DZIENNE----


# how many clients are always on (other servers, routers, etc)
MINCLIENTS=0

# shutdown after how many retries?
RETRIES=2

###
# END CONFIG
###

NUMCLIENTS=`nmap -sP $RANGE -oG - | grep "^Host" | wc -l`

if [ $NUMCLIENTS -le $MINCLIENTS ]; then
    if [ ! -f "$STATUSFILE" ]; then
        echo "COUNT=$RETRIES" > $STATUSFILE
    fi
    . $STATUSFILE
    if [ $COUNT -le $MINCLIENTS ]; then
#
cp /usr/local/bin/wylaczenie.sh.DZIENNE /usr/local/bin/wylaczenie.sh
sleep 1s
echo "Spadamy...."
shutdown -h now;
#
    else
        let COUNT=$COUNT-1
        echo "COUNT=$COUNT" > $STATUSFILE
    fi;
else
    if [ -f "$STATUSFILE" ]; then
        rm $STATUSFILE
    fi
fi


Nie zapomnij odpowiednio dopasować sieci i znowóż o prawach

sebekoo

#293
Zrobione. Utworzyłem i naniosłem zmiany w pliku.
Sprawdziłem prawa pliku

TataPingu

#294
To teraz nanieść jeszcze to do /etc/rc.local (przed exit 0)


#----AUTO-do prawidlowego wylaczenie.sh (np przy zawieszeniu serwera, wylaczeniu pradu itp)----
cp /usr/local/bin/wylaczenie.sh.DZIENNE /usr/local/bin/wylaczenie.sh
sleep 1s

sebekoo

#295
Cytat: TataPingu w Marzec 29, 2019, 10:01:52 PM
To teraz nanieść jeszcze to do /etc/rc.local (przed exit 0)
Naniesione zmiany

cp /usr/local/bin/wylaczenie.sh.DZIENNE /usr/local/bin/wylaczenie.sh
A ta komenda to kopiowanie  - prawda.
Co ona tak naprawdę robi w skrypcie?

TataPingu

Cytat: sebekoo w Marzec 29, 2019, 10:08:01 PM
A ta komenda to kopiowanie  - prawda.
Co ona tak naprawdę robi w skrypcie?

Kopiuje, ale my tworzymy cały proces i tutaj to tylko mała cząstka całości.
Można by to wszystko "umieścić" w jednym skrypcie, tylko, by wszystko to prawidłowo funkcjonowało, skrypt rozrósłby się do sporego programu...
- łatwiej i prędzej (i niezawodniej!) w ten sposób...

Teraz czas na skrypt backupa. Stwórz nowy plik /usr/local/bin/rsync_backup_server_DZIENNY i nanieść do niego:


#!/bin/bash
#
# po wylogowaniu clientow wymazana STATUSFILE
# i rozpoczety RSYNC_BACKUP_SERVER
#/usr/local/bin/rsync_backup_server_DZIENNY
#
###-CONFIG - RSYNC_BACKUP_SERVER (DZIENNY)
#
######---ZyxelNAS STARTEN i MOUNTEN
/usr/local/bin/./ZyxelSTART.sh &
######---ZyxelNAS STARTEN i MOUNTEN
#
#----KONFIGURACJA---
#
######----Server-Backup-Dzienny (odpowiednio dopasowac)
QUELLE_DAT=/
ZIEL_COPY=/Backup/BackupZYXEL
DIR_TEMP=/Backup/RsyncTMP
LOGFILE=/var/log/Rsync_Backup_Server.log
######----Server-Backup-Dzienny (odpowiednio dopasowac)
#
#----KONFIGURACJA---
#
DISTRO=$(/usr/bin/lsb_release -d -s)
#DISTRO_FILE=/var/log/Distro.INFO
#
cp /usr/local/bin/wylaczenie.sh.NEUTRAL /usr/local/bin/wylaczenie.sh
#---------------------------------------------------------------------------------
sleep 1s
#
#########----SERVER-BACKUP-DZIENNY_Poczatek
#
#echo "Backup wykonano pod: "${DISTRO}"" > "${DISTRO_FILE}"
echo "W dniu $(date) pod systemem "${DISTRO}" dzienny backup serwera rozpoczety" >> "${LOGFILE}"
sleep 1s
#
#---tutaj dopasowac (to, co Ci prawidlowo zadzialalo)
rsync --no-perms --no-owner --no-group -u -r -t -v --temp-dir="${DIR_TEMP}" -- progress --delete --modify-window=1 --exclude=/Backup/ --exclude=/proc/ --exclude=/sys/ "${QUELLE_DAT}" "${ZIEL_COPY}"
#---tutaj dopasowac (to, co Ci prawidlowo zadzialalo)
#
echo "W dniu $(date) pod systemem "${DISTRO}" dzienny backup serwera pomyslnie zakonczony" >> "${LOGFILE}"
sleep 1s
cp -a "${LOGFILE}" "${ZIEL_COPY}"
#cp -a "${DISTRO_FILE}" "${ZIEL_COPY}"
sleep 1s
#
#########----SERVER-BACKUP-DZIENNY_Koniec
#
#
cp  /usr/local/bin/wylaczenie.sh.PO_BACKUPIE /usr/local/bin/wylaczenie.sh
sleep 1s
#
exit 0


Ew. odpowiednio dopasuj

sebekoo

LOGFILE=/var/log/Rsync_Backup_Server.log

Nie mam takiego pliku. Wiem że to log, ale już backup wykonywałem, więc plik powinien być. Chyba że jest ten plik kasowany po całkowitym wykonaniu Backup-a
Być może nie mam pliku bo Backup przerwałem  CTRL+C , gdy zatrzymał się na katalogu /proc

Reszta OK. Dopasowane.


TataPingu

#298
Cytat: sebekoo w Marzec 29, 2019, 10:46:09 PM
Reszta OK. Dopasowane.

Log się pojawi, a o starym skrypcie, który próbowaliśmy wcześniej zapomnij...
- to co podałem przed chwilą jest prawidłowe.
Jedyne drobiazgi, które powinieneś dopasować, to ścieżki katalogów (również do RsyncTMP) i prawidłowy string (syntax) rsynca...

I czas na "ostatnią" część całości.
Otwórz plik /usr/local/bin/wylaczenie.sh.DZIENNE i zmień tę część:


#----- w tym miejscu dojdzie RSYNC_BACKUP_SERVER
##################/usr/local/bin/./rsync_backup_server_DZIENNY
##################exit 0
#----- w tym miejscu dojdzie RSYNC_BACKUP_SERVER
#
#----- gdy dojdzie RSYNC_BACKUP_SERVER -> DO ZAMKNIECIA
        echo "Shutdown, kolego (my dear)..."
        shutdown -h now;
        #----- gdy dojdzie RSYNC_BACKUP_SERVER -> DO ZAMKNIECIA


na


#----- w tym miejscu dojdzie RSYNC_BACKUP_SERVER
/usr/local/bin/./rsync_backup_server_DZIENNY
exit 0
#----- w tym miejscu dojdzie RSYNC_BACKUP_SERVER
#
#----- gdy dojdzie RSYNC_BACKUP_SERVER -> DO ZAMKNIECIA
        #############echo "Shutdown, kolego (my dear)..."
        #############shutdown -h now;
        #----- gdy dojdzie RSYNC_BACKUP_SERVER -> DO ZAMKNIECIA


GOTOWE!
- teraz wystarczy wystartować serwer na nowo i po wyłączeniu się ostatniego klienta z sieci powinien wykonać się backup i po tym serwer się wyłączy.

Przetestuj i daj znać

sebekoo

Co do wykonywania kolejnego backup-a.
Bedzie się wykonywał cały, tak długo jak poprzedni, czy tylko "chwile" - sprawdzi co jest do zsynchronizowania i tylko to zsynchronizuje?

Zobacz najnowsze wiadomości na forum