Miért ne lehetne a git-el egy fájlrendszer backup-ot csinálni? Csak a változásokat tárolja, helyigénye minimális, testreszabhatósága jó. Kezdjünk hát neki!
Amiket le fogunk menteni: weboldalak, etc mappa, mysql adatbázisok.
-
Szolgáltató
-
Dinamikus repo létrehozás
-
Fájlrendszer
-
Időzítés
Bitbucket - Végtelen privát repo és tárhely, web API, kell ennél több?
Nálam a weboldalak a következő struktúrában vannak létrehozva: /var/www/domain/host/htdocs/aldomain. Szeretem, ha a dolgok automatikusak, így kellett egy script, ami magától létre tud hozni repokat, ha van új oldal a fájlrendszeren.
/usr/bin/bitbucket: (Egy új repo létrehozása)
#!/bin/bash
curl -k -X POST --user $USER:$PASS \
"https://bitbucket.org/api/1.0/repositories" -d "name=$NAME&is_private=true"
/usr/bin/backup: (/1/Új oldalak megkeresése, és feltöltése, régiek frissítése) (bitbucket_user és bitbucket_jelszo értelemszerűen kicserélendő)
#/bin/bash
msg=`date`
DIR=`pwd`
cd /var/www
for DOMAIN in *
do
DDIR="/var/www/${DOMAIN}"
echo $DDIR
if [ -d $DDIR ]
then
cd $DDIR
for HOST in *
do
HDIR="${DDIR}/${HOST}"
if [ -d $HDIR ]
then
echo $HDIR
cd $HDIR
if [ -d "${HDIR}/htdocs" ]; then
cd "${HDIR}/htdocs/"
if [ -d ".git" ]; then
git add .
git commit -a -m "$msg"
git push origin master
else
USER=bitbucket_user PASS=bitbucket_jelszo NAME=${HOST}.${DOMAIN} /usr/bin/bitbucket
if [ $? -eq 0 ]; then
git init
echo '.git' > .gitignore
git add .
git commit -a -m "Initial commit"
git checkout -b master
git remote add origin ssh://bitbucket.org/bitbucket_user/${HOST}.${DOMAIN}
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
git push -u origin master
fi
fi
fi
fi
done
fi
done
Ez már egy kicsit hosszabb, de nem bonyolult. Végigmegyünk a mappákon, ha van már bennük git repo, akkor csak feltoljuk a változásokat, ha nincs, akkor létrehozunk egyet a bitbucket-hez kapcsolva.
Ha csak a weboldalakat szeretnénk lementeni, ezzel kész is vagyunk, ám ha a fájlrendszer néhány elemét, is, akkor kell egy kis módosítás a fájl végére:
/usr/bin/backup: (/2/Fájlrendszer)
cd /
git add mysql
git add etc
git commit -a -m "$msg"
git push origin master
Mielőtt még elkezdenénk örülni, természetesen létre is kell hozni azt a "gyökér" git-et.
Tehát terminálban:
cd /
git init
git add etc
echo '.git' > .gitignore
git commit -a -m "Initial commit"
git checkout -b master
USER=bitbucket_user PASS=bitbucket_jelszo NAME=server /usr/bin/bitbucket
git remote add origin ssh://bitbucket.org/bitbucket_user/server
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
git push -u origin master
Valamint hátra van még a mysql backupok elkészítése:
Ehhez én a webmin beépített napi mentés funkcióját használom. Amire figyelni kell:
1. Ne tömörítsd! Így tényleg csak a változásokat kell feltölteni, tehát az első feltöltés után gyorsabb lesz, mert nem kell egy teljesen új bináris állományt feltölteni, valamint weben is böngészhető lesz a kód.
2. A /mysql mappába mentsd az sql fájlokat. (Vagy írd át a scriptet)
Ne felejtsd el cron-ban beállítani egy neked megfelelő időzítéssel a /usr/bin/backup futtatását!
- XmIsTeR blogja
- A hozzászóláshoz be kell jelentkezni
- 1162 megtekintés
Hozzászólások
Most lehet hülyeséget írok, de a git csak a változásokat menti el. Ez szöveges fájloknál igaz, de bináris adatoknál (pl sql adatbázisok) ott a teljes egészet, ami eléggé hízlalja a .git könyvtárat.
---------------------------
Oszt jónapot!
- A hozzászóláshoz be kell jelentkezni
Épp ezért mentem az exportált SQL (szöveg) fájlokat.
------------------
My Open-Source Android "Projects"
- A hozzászóláshoz be kell jelentkezni
Bocs, ezen átsiklottam.
---------------------------
Oszt jónapot!
- A hozzászóláshoz be kell jelentkezni
http://git-annex.branchable.com/special_remotes/bup/
------------------------------------------------------------------------------
Gitify your life.
- A hozzászóláshoz be kell jelentkezni
A git pont hogy nem a változásokat menti el, hanem mindig a teljes fájlt. Minden állapot teljes fájl formájában tárolódik, a diffeket on-demand számolja ki. Ettől még működni fog, amit elgondoltál, mivel igen hatékonyan tömörít.
- A hozzászóláshoz be kell jelentkezni