Giti jest stosunkowo prostym skryptem napisanym przy użyciu basha, który wykorzystuje GIT-a, do zarządzania kopiami zapasowymi plików, oraz katalogów. W skrócie opiszę jak działa samo giti:

Zapisujemy giti na dysk ( jeszcze nie posiada publicznego repozytorium )

wget http://labs.inventic.it/p/giti.sh -O /usr/local/bin/giti
chmod +x /usr/local/bin/giti

Przygotowujemy sobie repozytorium GIT’a w którym będziemy zapisywać dane – odsyłam również do TEJ notki. Następnie uruchamiamy giti:

(1:130)$ giti
Usage: -t target [-r -h -s]

A więc po kolei:
- opcja -t to repozytorium docelowe, wykorzystujemy tutaj nazwę kierując się zasadami tworzenia katalogów w naszym systemie ( np. -t work )
- opcja -r usuwa wskazany plik/katalog z backupu ( np. giti -t target -r ~/test – podajemy ścieżki w identyczny sposób jak podczas dodawania )
- opcja -h wyświetla pomoc
- opcja -s nie jest zaimplementowana jeszcze i nie działa

Podczas pierwszego użycia, giti sprawdza czy istnieje docelowy katalog w którym będą przechowywane kopie bezpieczeństwa – domyślnie jest to /tmp/backup:

(1:135)$ giti -t test giti.sh
Enter giti target directory [/tmp/backup]: /home/tx/.devel/backup
Target directory already exists. Exiting...

W tym momencie giti utworzył plik ~/.giti i zapisał w nim lokalizację katalogu dla backupów.
Kolejne uruchomienie, będzie skutkowało sprawdzeniem, czy docelowe repozytorium ( np. wspomniane wyżej ‘work’ istnieje ):

(1:131)$ giti -t work giti.sh
Target directory /home/tx/.devel/backup/workdir/work doesn't exists.
Do You wanna create it [y/n]? y
Enter full git clone/push repository path: ssh://git@scm.inventic.it/inventic/work-backup.git

W tym momencie, repozytorium zostanie pobrane do katalogu backupu i można zacząć pracę.

(1:137)$ giti -t work giti.sh
Copy [file] /home/tx/.devel/_projects/inventic-labs/web-app/htdocs/p/giti.sh to /home/tx/.devel/backup/workdir/work/inv0/home/tx/.devel/_projects/inventic-labs/web-app/htdocs/p/

Zwróćcie uwagę na to, gdzie plik został zapisany w naszym repozytorium. Giti kieruje się zasadą utrzymania porządku w docelowym repozytorium, a więc:

$GITI_HOME_DIR / $REPOSITORY / $HOSTNAME / $DIRECTORY_REALPATH / $TARGET_FILE

Czyli jeśli użyjemy tego samego repozytorium z wielu różnych maszyn, otrzymamy ładne drzewko z przyporządkowanymi backupami dla każdej z nich.

Myślę, że to prosty i za razem strasznie pożyteczny model backupowania wykorzystując tak potężny system kontroli wersji jakim jest GIT. Ustawiene GITI dla IDE z którego akurat Ty korzystasz, czy do innych celów również nie powinno stwarzać jakichś większych problemów.

PS. ja używam giti zamiast rsnapshot do kopiowania konfigów uruchamiając je za pomocą crontaba.

Powodzenia! ;-)