Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Skript pro zalohu pomocí rsync  (Přečteno 1487 krát)

doga312

  • Návštěvník
  • Příspěvků: 86
Skript pro zalohu pomocí rsync
« kdy: 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
Co šuplík dal s Ubuntu Mate 16.04, notebook Ubuntu Mate 16.04 a domácí server Ubuntu Mate 16.04.

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Skript pro zalohu pomocí rsync
« Odpověď #1 kdy: 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.

doga312

  • Návštěvník
  • Příspěvků: 86
Re:Skript pro zalohu pomocí rsync
« Odpověď #2 kdy: 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
Co šuplík dal s Ubuntu Mate 16.04, notebook Ubuntu Mate 16.04 a domácí server Ubuntu Mate 16.04.

doga312

  • Návštěvník
  • Příspěvků: 86
Re:Skript pro zalohu pomocí rsync
« Odpověď #3 kdy: 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
Co šuplík dal s Ubuntu Mate 16.04, notebook Ubuntu Mate 16.04 a domácí server Ubuntu Mate 16.04.

Savalas

  • Aktivní člen
  • *
  • Příspěvků: 409
Re:Skript pro zalohu pomocí rsync
« Odpověď #4 kdy: 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 ?
Kubuntu 18.04/AMD RYZEN 5 3600, Asus PRIME X370-PRO, ASUS DUAL GeForce RTX2060S O8G EVO, RAM Kingston 2x16GB DDR4 2666MHz CL16, 2xWD Caviar Blue 1TB+Seagate BarraCuda 2TB/LVM mirror, Samsung 970 EVO PLUS 250GB, Seasonic M12II-620 Evo, Evolveo Sigma T2, DVD-R/+R Asus DRW-24D5MT, APC Back-UPS ES 700, Eizo EV2450

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Skript pro zalohu pomocí rsync
« Odpověď #5 kdy: 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

doga312

  • Návštěvník
  • Příspěvků: 86
Re:Skript pro zalohu pomocí rsync
« Odpověď #6 kdy: 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
Co šuplík dal s Ubuntu Mate 16.04, notebook Ubuntu Mate 16.04 a domácí server Ubuntu Mate 16.04.

 

Provoz zaštiťuje spolek OpenAlt.