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/
až /var/backup/2006/5/19/home/
včetně, starší smaže.
Termín odevzdání: 30. 5. 2006 19:00 CEST