Skript pro zálohu pomocí rsync

Skript pro zálohu pomocí rsync
« kdy: 05. 03. 2017, 15:26:00 »
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
« Poslední změna: 06. 03. 2017, 08:39:11 od Petr Krčmář »


#

Re:Skript pro zalohu pomocí rsync
« Odpověď #1 kdy: 05. 03. 2017, 15:51:53 »
Co myslis pod pojmem "aby pracoval i s casem"?

Toto?

Kód: [Vybrat]
$ date +%F-%k-%M
2017-03-05-15-50

Franta <xkucf03/>

Re:Skript pro zalohu pomocí rsync
« Odpověď #2 kdy: 05. 03. 2017, 16:10:29 »
tak jsem se přes řadu zálohovacích programů dostal až k rsync.

Gratuluji :-) taky jsem došel k tomu, že je lepší si napsat skript na pár řádek než používat nějaké složité zálohovací nástroje. Takže používám buď rsync nebo Btrfs snapshoty.

Prosím o radu , jak ho doplnit, aby pracoval i časem. Hodiny a minuty stačí.

Tohle je spíš otázka na date než rsync. Stačí kouknout do manuálové stránky (man date) a jen připsat jedno slovo:

Kód: [Vybrat]
$ date -Iminutes
2017-03-05T16:08+01:00

# případně:
$ date --iso-8601=minutes
2017-03-05T16:08+01:00


Re:Skript pro zalohu pomocí rsync
« Odpověď #3 kdy: 05. 03. 2017, 19:02:07 »
Ahoj,
se samotným datem ani časem problém není.
Kód: [Vybrat]
DAY0=`date +%F-%k-%M-%S`
Jde mi o nastavení linku. Když použiji jiný formát času,z důvodu více záloh za den, třeba i ručně spuštěné, jak vytvořím link na poslední zálohu?
Dík



Franta <xkucf03/>

Re:Skript pro zalohu pomocí rsync
« Odpověď #4 kdy: 05. 03. 2017, 19:33:09 »
Můžeš ho vytvořit během zálohování, když ho máš ještě v té proměnné, ne? Odkaz vždycky smažeš a vytvoříš aktuální. To bude nejjednodušší – jinak bys musel seřadit soubory (sort) a vzít ten poslední (tail), kdybys chtěl odkaz vytvářet až dodatečně.


Re:Skript pro zalohu pomocí rsync
« Odpověď #5 kdy: 05. 03. 2017, 20:06:45 »
Dík, asi tuším jak to myslíš, teď to jen vymyslet, přece jsem jenom skriptí vykradač :D

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Skript pro zalohu pomocí rsync
« Odpověď #6 kdy: 05. 03. 2017, 20:19:01 »
Tedy jestli to spravne pochopuju, tak delate pro kazdy backup adresar a do nej rsync vsechno nasypete. Jste si jist, ze by vam vic nevyhovoval rdiff-backup, ktery by udelal totez, ale zabralo by to mene mista?

rsnapshot

Re:Skript pro zalohu pomocí rsync
« Odpověď #7 kdy: 05. 03. 2017, 20:23:17 »
Použij rsnapshot, Luku...  :-)

Re:Skript pro zalohu pomocí rsync
« Odpověď #8 kdy: 05. 03. 2017, 20:34:03 »
Chci aby záloha byla jednoduše "viditelná" a přehledná dle mé struktury. Tím padá rdiff-backup. To co nabízí rsnapshot jsem si už podobně udělal přes unison ale to jsem opustil, protože má vlastní strukturu verzování souborů. Chci jednoduché a čisté řešení s rsyncem, jen poladit ten skriptík :D

Franta <xkucf03/>

Re:Skript pro zalohu pomocí rsync
« Odpověď #9 kdy: 05. 03. 2017, 20:35:56 »
Tedy jestli to spravne pochopuju, tak delate pro kazdy backup adresar a do nej rsync vsechno nasypete. Jste si jist, ze by vam vic nevyhovoval rdiff-backup, ktery by udelal totez, ale zabralo by to mene mista?

rdiff-backup je dobrý, používal jsem ho, ale pro větší objemy dat (stovky GB a spousty souborů) už to bylo pomalé – oproti tomu Btrfs má minimální režii. Nicméně rdiff-backup má svoje využití, pracuje nad obyčejnými adresáři a nepotřebuje roota ani zvláštní FS.

#

Re:Skript pro zalohu pomocí rsync
« Odpověď #10 kdy: 05. 03. 2017, 20:38:54 »
Jak tu jiz zaznelo, proste na konci skriptu updatni link na aktualni zalohu a mas to :)

Re:Skript pro zalohu pomocí rsync
« Odpověď #11 kdy: 05. 03. 2017, 20:44:23 »
A ten link musím schovat někam do souboru, do příštího spuštění skriptu? Jsem v tomhle opravdu nováček. Potřeboval bych nějaký reálný příklad. Dík

#

Re:Skript pro zalohu pomocí rsync
« Odpověď #12 kdy: 05. 03. 2017, 21:39:56 »
Pokud chapu co hledas, tak te zajima

ln -s teda vytvoreni symbolickyho linku, proste udelas vzdy link posledni zalohy ukazujici na backup/latest

viz
Kód: [Vybrat]
man ls

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Skript pro zalohu pomocí rsync
« Odpověď #13 kdy: 05. 03. 2017, 21:57:25 »
Nejak nechapu, k cemu je link na posledni zalohu. To ma byt pro blbe, kteri neumi vybrat podle datumu?

Re:Skript pro zalohu pomocí rsync
« Odpověď #14 kdy: 05. 03. 2017, 23:49:10 »
Pokud chapu co hledas, tak te zajima

ln -s teda vytvoreni symbolickyho linku, proste udelas vzdy link posledni zalohy ukazujici na backup/latest

viz
Kód: [Vybrat]
man ls
Ahoj, díky, to jsem potřeboval pro další skriptí vykrádaní ;)
Můžete mi pomoct, k čemu je ve skriptu ta poslední podmínka, tipuji k promazávání starých záloh .... že to vypíše počet položek v cíli a dál?
Kód: [Vybrat]
#!/bin/bash

#Datum
DATE=`date +%F-%k-%M-%S`

mkdir /home/doga/pokus6/backup_$DATE/
     
#The source directory:
SRC="/home/doga/pokus1"
     
#The target directory:
TRG="/home/doga/pokus6/backup_$DATE"
     
#The link destination directory:
LNK="/home/doga/pokus6/current/"
   
#The rsync options:
OPT="-avh --delete --link-dest=$LNK"

#Execute the backup
rsync $OPT $SRC $TRG


rm -rf /home/doga/pokus6/current
ln -s /home/doga/pokus6/backup_$DATE /home/doga/pokus6/current

if [ `ls /home/doga/pokus6 -1 | wc -l` -gt 180 ]; then
  rm -rf /home/doga/pokus6/`ls /home/doga/pokus6 -t1 | grep backup_ | head -n 1`
fi