Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: doga312 05 Března 2017, 14:34:43

Název: Skript pro zalohu pomocí rsync
Přispěvatel: doga312 05 Března 2017, 14:34:43
Ahoj,
tak jsem se přes řadu zálohovacích programů dostal až k rsync.
Tady je jeden jednoduchý skript pro tvorbu snapshotů, který mi vyhovuje ale pracuje jen s datem.
Prosím o radu , jak ho doplnit, aby pracoval i časem. Hodiny a minuty stačí.
Děkuji

Kód: [Vybrat]
    #!/bin/bash
     
    #Backup Script
     
    #Todays date in ISO-8601 format:
    DAY0=`date -I`
     
    #Yesterdays date in ISO-8601 format:
    DAY1=`date -I -d "1 day ago"`
     
    #The source directory:
    SRC="/home/doga/pokus1"
     
    #The target directory:
    TRG="/home/doga/pokus2/$DAY0"
     
    #The link destination directory:
    LNK="/home/doga/pokus2/$DAY1"
     
    #The rsync options:
    OPT="-avh --delete --link-dest=$LNK"
     
    #Execute the backup
    rsync $OPT $SRC $TRG

    #29 days ago in ISO-8601 format
    DAY29=`date -I -d "29 days ago"`
     
    #Delete the backup from 29 days ago, if it exists
    if [ -d /home/doga/pokus2/$DAY29 ]
    then
    rm /home/doga/pokus2/$DAY29
    fi
Název: Re:Skript pro zalohu pomocí rsync
Přispěvatel: GdH 05 Března 2017, 18:38:42
Kód: [Vybrat]
date -Iminutesnebo si to poskládat podle potřeby
Kód: [Vybrat]
date "+%Y-%m-%d-%H:%M"
Pokud to ale nepoběží alespoň jednou za minutu, budeš muset upravit to mazání starých záloh.
Název: Re:Skript pro zalohu pomocí rsync
Přispěvatel: doga312 06 Března 2017, 01:12:11
Dík, už jsem to poslepoval, snad se to bude někomu taky hodit.
Kód: [Vybrat]
#!/bin/bash

#Datum
DATE=`date "+%Y.%m.%d_%H:%M:%S"`

#Vytvořčení složky pro zálohu
mkdir /home/doga/pokus6/backup_$DATE/
     
#Zdroj
SRC="/home/doga/pokus1"
     
#Cíl
TRG="/home/doga/pokus6/backup_$DATE"
     
#Link pro rsync
LNK="/home/doga/pokus6/current/"
   
#Parametry rsync
OPT="-avh --delete --link-dest=$LNK"

#Provedení zálohy
rsync $OPT $SRC $TRG

#Smazaní starého a vytvoření nového symlinku pro link nadcházející zálohy
rm -rf /home/doga/pokus6/current
ln -s /home/doga/pokus6/backup_$DATE /home/doga/pokus6/current

#Když je v cíli více jak deset položek, vymaže se ta nejstarší
if [ `ls /home/doga/pokus6 -1 | wc -l` -gt 10 ]; then
  rm -rf /home/doga/pokus6/`ls /home/doga/pokus6 -t1 -r| grep backup_ | head -n 1`
fi
Název: Re:Skript pro zalohu pomocí rsync
Přispěvatel: doga312 06 Března 2017, 11:30:45
ahoj,
nasel jsem chybu při výběru zálohy ke smazání.
Skript mazal nejnovější, tak jsem přidal parametr -r.

Kód: [Vybrat]
ls /home/doga/pokus6 -t1 -r| grep backup_ | head -n 1
Ale po nějakém čase ale začal mazat z prostřed a začátku, místo na konci.
Teď to funguje bez parametru -r ale evidentně to soubory neřadí pokaždé správně.
Nějaký nápad jak upravit výběr ke smazání?
Dík
Název: Re:Skript pro zalohu pomocí rsync
Přispěvatel: Savalas 06 Března 2017, 14:56:21
No a neni mozne ze se provedl nejaky zapis do tech backup adresaru,  to by  pak ovlivnilo datum posledniho zapisu do adresare ktery pak zmenil poradi v ls ?
Název: Re:Skript pro zalohu pomocí rsync
Přispěvatel: GdH 06 Března 2017, 17:22:38
Pokud mají ty soubory jméno podle času vytvoření, stačí ti přeci výchozí řazení podle abecedy. Nemá-li být ve složce více, než 10 záloh, lze to napsat kompaktněji, bez testování na počet, prostě se vypíše seznam souborů bez posledních deseti řádků a pokud něco zbude, pošle se to  do smyčky ke smazání. Cca takto:
Kód: [Vybrat]
ls -1 /home/doga/pokus6/backup_* | head -n -10 | while read line; do  rm "$line"; done
Název: Re:Skript pro zalohu pomocí rsync
Přispěvatel: doga312 06 Března 2017, 17:46:54
Ahoj, ano bylo to parametrem -t, protože nové složky mají jiné časy změn. Abecedním řazením to jede ;)
A způsob od Gdh vyzkouším.
Dík