Úvod do UNIXu – Úloha č. 9

Zadání

Napište shellový skript pro jednoduché inkrementální zálohování. Skript bude pracovat ve dvou režimech podle prvního povinného parametru:

(1) Je-li první parametr -b, považuje se druhý parametr za cílový adresář a třetí parametr za kořen podstromu, který se má zálohovat. V cílovém adresáři se vytvoří adresářová struktura ve tvaru rok/měsíc/den/, přičemž do posledního podadresáře se zkopíruje celý zálohovaný podstrom (případný původní obsah se smaže). Pro každý soubor se navíc zkontroluje, zda v adresářové struktuře s datem z předchozího dne se již soubor nenachází. Pokud se aktuální soubor od včerejší zálohy nezměnil, nebude se kopírovat, ale jen se vytvoří hardlink na včerejší zálohu.

Příklad (nechť je 23. 5. 2006):

backup.sh -b /var/backup /home

vytvoří adresář /var/backup/2006/5/23/home/, ve kterém bude kopie adresářové struktury a souborů z /home. Ty soubory, které se oproti záloze ve /var/backup/2006/5/22/home/ nezměnily, se vytvoří jen jako hardlink na jejich zálohu z /var/backup/2006/5/22/home/.

(2) Je-li první parametr -p, považuje se druhý parametr za cílový adresář a třetí parametr n udává počet posledních záloh (dnů), které má skript ponechat. Zálohy (tj. adresářové struktury rok/měsíc/den/) starší než n dnů skript vymaže.

Příklad (nechť je 23. 5. 2006):

backup.sh -p /var/backup 5

Ponechá zálohy /var/backup/2006/5/23/home//var/backup/2006/5/19/home/ včetně, starší smaže.

Termín odevzdání: 30. 5. 2006 19:00 CEST