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
-
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
#!/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
-
date -Iminutes
nebo si to poskládat podle potřeby
date "+%Y-%m-%d-%H:%M"
Pokud to ale nepoběží alespoň jednou za minutu, budeš muset upravit to mazání starých záloh.
-
Dík, už jsem to poslepoval, snad se to bude někomu taky hodit.
#!/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
-
ahoj,
nasel jsem chybu při výběru zálohy ke smazání.
Skript mazal nejnovější, tak jsem přidal parametr -r.
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
-
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 ?
-
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:
ls -1 /home/doga/pokus6/backup_* | head -n -10 | while read line; do rm "$line"; done
-
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