Nincs vele semmi bajom, de azért kiraktam ide - lehet cincálni, stílust igazítani. Ez most nem rosszindulatú megjegyzés.
szerk. 2009. november 15., vasárnap - 02.56
Maradtak benne hülyén elkövetett vagy felesleges dolgok.
Ha le van sikálva - beleértve a javasolt változtatásokat - akkor a végső formában lesz kirakva.
(és akkor nem látszik majd, hogy mit - csak az, hogy mire javítottam)
#!/bin/sh
# raid1 lemeztükör generálása
# nem általános, hanem a kialakult gyakorlatomhoz írva
# a másolandó rendszer ismeretében
if ! [ "$1" = "execute" ]; then
echo 'Simon nem mondta, hogy "execute"'; exit; fi
d_parts='1 2 3 5 6 7 8 9 10'
d_src='/dev/sda'
d_tgt='/dev/sdb'
log_name='raid1_gen.log'
log_f='./'$log_name
dir_s='/mnt/sd_rx'
dir_d='/mnt/md_rx'
echo $DATE | tee $log_f
echo "---------------------------------------------" | tee -a $log_f
echo "Raid1 féllábú tömb létrehozása "$d_tgt"-n" | tee -a $log_f
echo "---------------------------------------------" | tee -a $log_f
sfdisk -d $d_tgt | tee $log_f
echo "---------------------------------------------" | tee -a $log_f
echo -n "A "$d_tgt" összes adata elvész. Folytatjuk? (nem/igen) " | tee -a $log_f
read persze
if ! [ "$persze" = "igen" ]; then exit; fi
echo " " | tee -a $log_f
echo "---------------------------------------------" | tee -a $log_f
function fs_md () {
echo -n "md$1 " | tee -a $log_f
mdadm -C /dev/md$1 -f -l 1 -n 2 $2$1 missing | tee -a $log_f
mdadm --detail /dev/md$1 | tee -a $log_f
}
function fs_ext3 () {
fs_md $1 $3
echo -n "($2""$1): " | tee -a $log_f
mkfs.ext3 /dev/md$1 | tee -a $log_f
}
function fs_swap () {
fs_md $1 $3
echo -n "($2""$1): " | tee -a $log_f
mkfswap /dev/md$1 | tee -a $log_f
}
function fs_reiser () {
fs_md $1 $3
echo -n "($2""$1): " | tee -a $log_f
mkreiserfs -f /dev/md$1 | tee -a $log_f
}
# start
# partíciós tábla másolása
sfdisk -d $d_src > /boot/grub/sd.part | tee -a $log_f
sfdisk $d_tgt < /boot/grub/sd.part | tee -a $log_f
# mbr másolása
dd if=$d_src of=/boot/grub/sd.mbr bs=512 count=1 | tee -a $log_f
dd if=$d_src of=$d_tgt bs=512 count=1 | tee -a $log_f
# munkakönyvtárak létrehozása
mkdir $dir_s
mkdir $dir_d
echo "===================================" | tee -a $log_f
for part in $d_parts ; do
# partíció beállítása: autolinux-raid
sfdisk --change-id $d_tgt $part fd | tee -a $log_f
# formázás, raid1-félláb
case $part in
1) fs_ext3 $part $d_src $d_tgt $dir_s $dir_d ;;
2) fs_swap $part $d_src $d_tgt ;;
3) fs_ext3 $part $d_src $d_tgt $dir_s $dir_d ;;
*) fs_reiser $part $d_src $d_tgt $dir_s $dir_d ;;
esac
echo "--------------------------------" | tee -a $log_f
# lemeztartalom másolása
case $part in
2) ;;
*)
mount -v -a $d_src$part $dir_s | tee -a $log_f
mount -v -a /dev/md$part $dir_d | tee -a $log_f
# dd-vel, cat-tal előbb elfogy a hely,
# mert md lefoglal plusz területet a pertícióból
# cp nem úgy működik, ahogy nekem kéne, tehát meg kellett írni
cd $dir_s
ls -a >> $log_f
lista=`ls -a` # ezt hrgy84 nem szeresse :-)
for lst_ in $lista; do
case "$lst_" in
".") ;;
"..") ;;
*) cp -a $dir_s'/'$lst_ $dir_d'/'$lst_ | tee -a $log_f ;;
esac
done
cd ~
umount -v $dir_s | tee -a $log_f
umount -v $dir_d | tee -a $log_f
;;
esac
done
# a /boot könyvtár nálam mindig az 1-es partíción van
mount -a /dev/md1 $dir_d | tee -a $log_f
dir_g=$dir_d'/boot/grub'
sfdisk -d $d_tgt > $dir_g'/sd.part' | tee -a $log_f
dd if=$d_tgt of=$dir_g'/sd.mbr' bs=512 count=1 | tee -a $log_f
# a menu.lst-ben átírni sda-t md-re
cd $dir_g
mv ./menu.lst menu.tmp
sed -e 's/sda/md/g' ./menu.tmp > ./menu.lst
rm ./menu.tmp
umount $dir_d | tee -a $log_f
# done
echo -n 'Done: ' | tee -a $log_f
date | tee -a $log_f
mount -a /dev/md3 $dir_d
# fstab sdax -> mdx
cd $dir_d'/etc'
mv ./fstab fstab.tmp
sed -e 's/sda/md/g' ./fstab.tmp > ./fstab
rm ./fstab.tmp
# a raid1_gen.log-ot is rútul átmásolom
cd ~
cat $log_f > $dir_d'/root/'$log_name
# ha benn maradok foglalt lesz a dev, és nincs umount
cd ~
umount $dir_d
# munkakönyvtárak törlése
rmdir $dir_s
rmdir $dir_d
# csakugyan done.
- bitvadasz blogja
- A hozzászóláshoz be kell jelentkezni
- 922 megtekintés
Hozzászólások
Szerintem cd-zes helyett egyszerubb abszolut utvonalakat megadni. Foleg hogy valtozokban tarolod a konyvtarneveket...
- A hozzászóláshoz be kell jelentkezni
Ez a "cp"-vel történt birkózás maradéka. Aztán "így működik - így hagyom" rész következett, mert már annyira akartam látni "ennek az egésznek" az eredményét.
- A hozzászóláshoz be kell jelentkezni
1) Szeretnem tudni, hogy ez micsoda:
echo -n "($2""$1): "
mikor ez egyszerubb helyette:
echo -n "($2 $1): "
de egyaltalan, minek adsz at valami parametert, amit utana lenyegeben fel sem hasznalsz? Ez igy total illogikus. Foleg, hogy a main szekcioban deklaralt valtozok siman elerhetok a fuggvenyekbol is, raadasul ugy, hogy nem kell elore definialni oket.
2) Miert nincs user ellenorzes? En siman kilepnek !root futtataskor, mert csak hibakkal szornam tele a kepernyot. Sajnos a shell scriptek nem lepnek ki az elso hibanal.
Holnap meg biztos ranezek a scriptre, igy elso blikkre ennyi.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
1)
- valamit itt még kiírtam az alkotás elején, aztán megszüntetvén a szófosást így hagytam.
mit'tomén minek meghagyom így:
echo -n "($2$1): "
- ez még onnan maradhatott benne mikor az alatta levő sor még nem volt végrehajtási szinten csak echo-zva volt, hogy lássam mit-mikor akarok elkövetni (aztán így maradt) - erre használtam a "$2"-t
2) nem kellett mert (és nem is jutott eszembe):
- a script még nem hagyta el a root home könyvtárt
- nincs benne a path-ban
A rend kedvéért persze belerakom egészen az elejére.
- A hozzászóláshoz be kell jelentkezni
ja,ja
echo -n "($2 $1): "
nincsen space
echo -n "($2$1): "
Magyarázat meg megjött, de hát ott volt az is, hogy lehet egyszerűsíteni...
- A hozzászóláshoz be kell jelentkezni
rsync, es az atvisz minden szuksegest.
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Így jár az (meg én) aki nem jut el a man-ban idáig:
You can also use rsync in local-only mode, where both the source and destination don't have a ':' in the name. In this case it behaves like an improved copy command.
szerk.
Aztán sajnos eljut egy ilyen eredményhez is:
a 'cp -r /a /b' /a-t /b/a-ba másolja és
a /a/x-et /b/a/x-be akkor, ha a /b létezik,
de /a-t /b-be és /a/x-et /b/x-be helyezi,
ha korábban nem volt /b könyvtár.
Nekem viszont van, mert ide mountoltam /dev/mdx-et :-(
- A hozzászóláshoz be kell jelentkezni
"--exclude /mountpoint/*"
Ezzel a kapcsolóval kihagyja az adott elérést illetve mintát pl.: "--exclude */temp/*" mindegy, hogy hol van a temp könyvtár
- A hozzászóláshoz be kell jelentkezni
Annyit meg, hogy ha a forras es a cel konyvtart / jellel lezarod, akkor nem subdirectoryt csinal.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
rsync -av ./a/ ./b/ | grep es/se >> logfile
Így teljesen jó, és még az írási sebesség is bekerül a log-ba
köszönöm
- A hozzászóláshoz be kell jelentkezni