Ebben a leírásban bemutatom, hogyan lehet elkészíteni egy egyszerű archiváló bash szkriptet. Egy általam készített szkripten keresztül mutatom be a lépéseket, melyek csupán egy lehetőséget biztosítanak a végleges működés mindig rajtunk múlik. Kezdjünk is bele.
Először is nyissuk meg kedvenc szövegszerkesztőnket.
Mielőtt bármit csinálnánk adjuk meg, hogy milyen szkriptet is csinálunk:
#!/bin/bash
Én először könyvtárat váltottam, így egyszerűbben tudok későbbiekben parancsokat kiadni az adott könyvtárra. Tehát:
cd /archivalando/fajlok/eleresi/utja
Én szeretném mindig az előző hónapban létrehozott fájlokat archiválni, ezért le kell ezt is kezelni. Az aktuális hónapot egy egyszerű paranccsal le tudom kérdezni:
date +%m
Állítsuk be az előző hónapot egy változóba:
old_honap=`date --date="1 month ago" +%m`
Ezután egy változóba felveszem az előző év és hónap értékét, hogy tudjak szűrni erre a paraméterre:
ido=`date --date="1 month ago" +%Y-%m`
Majd elmentem egy segéd fájlba az archiválandó fájlok nevét, amit így később egyszerűen ki tudok nyerni:
ls -l ../arcvivalandofajlokkonyvtara | grep -v ^d | grep $ido | awk '{print $8}' > archive_$old_honap/backup.txt
Leellenőrzöm, hogy létezik-e már a könyvtár, amit szeretnék létrehozni. (Itt lehet módosítani aszerint, hogyan kezelje a szkript ha már létezik a könyvtár.)
if [ -e /archivalando/fajlok/eleresi/utja/archive_$old_honap ]; then
echo "Az archive_$old_honap konyvtar letezik"
else
mkdir archive_$old_honap
echo "Az archive_$old_honap konyvtarat letrehoztam"
fi
Majd létrehozunk egy könyvtárat az archív fájljaink számára:
if [ -e /archiv/fajlok/eleresi/utja/backup ]; then
echo "A backup konyvtar letezik"
else
mkdir /archiv/fajlok/eleresi/utja/backup
echo "A backup konyvtarat letrehoztam"
fi
Ezután átmozgathatjuk az elmentendő fájlokat a könyvtárba:
cat archive_$old_honap/backup.txt | while read sor; do
mv $sor archive_$old_honap
done
Ezután törölhetjük a segéd fájlt, mivel ezt nem szeretnénk elmenteni:
rm archive_$old_honap/backup.txt
Beállítjuk, hogy melyik könyvtár legyen tömörítve és milyen fájlként mentse el, illetve hova a program. Ezt változókban tároljuk:
OUTPUT=./backup/archive_$(date +%Y)-$old_honap.tgz
BUDIR="./archive_$old_honap"
Majd elvégezzük az archiválást:
tar -czf $OUTPUT $BUDIR
Utolsó előtti műveletként törölhetjük a létrehozott könyvtárat tartalmával együtt:
rm -R ./archive_$old_honap
Végül üzenetet küldhetünk magunknak a program sikerességéről, vagy esetleges hibájáról:
if [ $? == 0 ]; then
#Display confirmation message
echo "A $OUTPUT fajl letrejott a $BUDIR konyvtarbol."
else
#Display error message message
echo "Hiba tortent a $OUTPUT fajl $BUDIR konyvtarbol valo letrehozasa kozben."
fi
Mielőtt használnák a szkriptünket ne felejtsünk el futtatási jogot adni rá:
chmod +x archive_szkript.sh
Készen is volnánk. Remélhetőleg érthető a magyarázat, használjátok egészséggel.
A teljes kód és magyarázat a letölthető állománnyal elérhető ezen az oldalon:
http://linuxegyszeruen.homelinux.org/e107_plugins/content/content.php?content.66
Köszönet iKL-nek a segítségért!