Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Barbarian_pol

[bash] linux backup folderu

Rekomendowane odpowiedzi

Prosiłbym o pomoc, sam nie potrafię znaleźć błędu.

Skrypt ma backupować katalog na drugi dysk twardy. Jeżeli są już 2 kopie zapasowe, ma najpierw skasować najstarszą i dopiero potem zrobić backup (to ze względu na wielkość kopii zapasowej i wielkość dysku).

A jak jest 1 lub 0 katalogów kopii zapasowej to ma po prostu zrobić kolejną.

Przed uruchomieniem skryptu były w lokalizacji docelowej takie katalogi:

2017-10-05

2017-10-06

lost+found

 

Po uruchomieniu w nocy:

2017-10-05

2017-10-06

2017-10-08

lost+found

 

Czyli nie skasował katalogu 2017-10-05

Skrypt wygląda tak:

#!/usr/bin/env bash
subdircount=`find /disk2/ -mindepth 1 -maxdepth 1 -type d -regex '.*[0-9\-]+' | wc -l`
if [ $subdircount -eq 2 ]
then
   IFS= read -r -d $'\0' line < <(find . -maxdepth 1 -mindepth 1 -type d -regex '.*[0-9\-]+' -printf '%T@ %p\0' \
   2>/dev/null | sort -z -n)
       file="${line#* }"
       rm -rf "$file"
       mkdir $(date +\%F)
       cp -r /home/samba/ /disk2/$(date +\%F)/
else
               mkdir $(date +\%F)
               cp -r /home/samba/ /disk2/$(date +\%F)/
fi

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

zrób kopię skryptu, wywal z niego cp i zamiast rm daj echo "$file"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

./ na początku może być, nie powinno przeszkadzać, tylko popraw znajdowanie nazwy, żeby brało ten katalog co trzeba

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie potrafię sobie poradzić. Chyba to znajdowanie jest zupełnie źle bo katalogów nie zmieniałem a teraz echo daje 2017-10-11 czyli daje dzisiejszą datę a nie najstarszy katalog.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie potrafię sobie poradzić. Chyba to znajdowanie jest zupełnie źle bo katalogów nie zmieniałem a teraz echo daje 2017-10-11 czyli daje dzisiejszą datę a nie najstarszy katalog.

 

Przesunąłem katalogi backupu 1 poziom niżej więc już nie mam na tym poziomie folderu lost+found.

Działa (zwraca najstarszy katalog) polecenie ls -t1 | tail -n 1. W jaki sposób zmienić mój oryginalny skrypt aby zadziałał z tym ls -t1 | tail -n 1 ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość Nareszcie

Osobiście zrobiłem to w dużo prymitywniejszy sposób i działa już kilka lat. Jest to wersja z tygodniowa rotacją oraz potwierdzeniem na e-mail.

 

#!/bin/bash

cd /mnt/BACKUP_MASZYN

RESULT=$?

if [ $RESULT == 0 ]; then

dzis=`date "+%Y-%m-%d"`

tydzien=`date "+%Y-%m-%d" -d"week ago"`

cp /mnt/kopia/$dzis.7z /mnt/BACKUP_MASZYN

rm -f /mnt/kopia/$tydzien.7z

rm -f /mnt/BACKUP_MASZYN/$tydzien.7z

temat=`ls -lts $dzis.7z | awk '{print "Kopia z dnia: "$7" godz: "$8". Rozmiar:"$1"K""\n"}'`

mail -s "$temat" adres@ema.il < .

cd /

else

temat="Kopia - BLAD!"

mail -s "$temat" adres@ema.il < .

fi

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

dzięki, działa :)

#!/bin/bash
dzis=`date "+%Y-%m-%d"`
tydzien=`date "+%Y-%m-%d" -d"7 day ago"`
rm -rf /disk2/backup/$tydzien
mkdir /disk2/backup/$dzis
cp -r /home/samba/ /disk2/backup/$dzis/

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość Nareszcie

Jak wspomniałem wcześniej, jest to rozwiązanie słabe ze względu chociażby na przerwy w pracy serwera.

Można, na przykład, za pomocą "find" wyszukać katalogi starsze niż ilosc_dni i je usunąć:

find /ścieżka/* -type d -ctime +ilosc_dni -exec rm -rf {} \;

Aczkolwiek w produkcyjnym środowisku nie zdecydowałem się na użycie "rm -rf" w połączeniu z "find". Nie żebym nie ufał, ale... ;)

 

A nie myślałeś, aby robić archiwum z kopii zapasowej?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...