Linux'ta Yedekleme
Veri Kaybını Engellemeye Yönelik
Pratik Bir Yedek Alma Uygulaması
Şubat 2001
İlker Fıçıcılar
Bu yedekleme yazısına giriş
hazırlarken farkettim, Mart 2001'de yani bu satırları yazdığım
tarihten bir ay sonra tam 15 yılı doldurmuş olacağım. 15 yıldır,
Commodore 64 ile başladığım bilgisayar dünyasının içindeyim. Ve, o
kadar yıldır veri kaybının verdiği acıları tadıyorum. En son geçen
ay evdeki Linux'u 2.4'e yükseltirken oldukça önemli bir harddisk
sorunu yaşadım. Umarım bu yazıdaki program ve yöntem,
kullanıcaklara bir felaket durumunda az da olsa yardımcı olur.
Öncelikle, yükümüzü hafifletmek
için neleri yedekleyeceğimizi belirleyelim. Eğer baştan,
dizinlerimizi düzenli tutuyorsak, örneğin kullanıcı dizinimizde
program derleme artıkları, program paketleri, gereksiz resimler, ve
internette kopyaları bulunabilecek başka dosyaları bulundurmuyorsak
yedeklediğimiz veriler yalnızca önemliler olacaktır. Bu, hem
yedekleme hem de yedek'ten kurtarmada kolaylık
sağlayacaktır.
İkinci olarak,
yedeklediklerimizle yedekleme dizinimizin ayrı disklerde veya en
azından ayrı bölmelerde bulunmasına dikkat etmeliyiz. Böylece disk
veya bölmelerden biri bozulduğunda, diğerinde az çok güncel bir
kopyanın bulunmasını garanti etmiş oluruz. Örneğin,
yedekleyeceğimiz /home, /root, ve /etc dizinleri /dev/hda2'de
bulunuyorsa, /yedekler dizinimiz ya /dev/hdcX'de ya da /dev/hda2
harici /dev/hda4 vs. gibi bir yer de bulunması iyi olur. Tek
diskimiz varsa, ve bölmelerden biri /usr/local'e bağlıysa yedeği
/usr/local/yedekler gibi bir yere alabiliriz.
Yedekleyeceklerimize karar
verelim: /etc ve /root'u en başta yedeklemekte fayda var. Mektuplar
önemliyse onları da alalım, ve seçtiğimiz kullanıcı dizinlerini de
ekleyelim. Ve bunlar haricinde önemli dosyalrı tuttuğumuz başka
dizinler varsa onları da aşağıdaki bash script'inin ilgili kısmına
ekleyelim.
Ben aşağıdaki örnek shell
script'te şu dizinleri yedeklettiriyorum:
/etc
/root
/var/spool/mail
/home/ilker
/home/berker
Kullanacağımız scripti gecenin
bir saatinde crontab yardımıyla çalıştırtacağız. O da, "yedekler"
dizinimiz yoksa oluşturacak ve seçtiğimiz dizinleri tar'layıp
gzip'leyip oraya atacak. Ertesi günse aynı "yedekler" dizinine
başka bir adla kayıt yapacak. Toplam iki kopya olacak şekilde, her
gün iki önceki isimle kayit yapacak. Böylece yedek alma sırasında
çıkabilecek sorunlara (elektrik kesilmesi vb.) de hazırlıklı olmuş
oluruz.
Evet, aşağıdaki script'i ilgili
yerlerden kesip /usr/local/bin'e "yedek-al" ismiyle kaydedip
chmod 755 /usr/local/bin/yedek-al
ile çalıştırılabilir yaptıktan sonra, favori yazı editorumuzle root
crontab'ini güncelleyelim. Bu yedek alma işini ancak root
haklariyla yapabiliriz.
Örneğin "joe" editörünü
seviyorsak,
export VISUAL=joe;crontab -e
veya
VISUAL=joe crontab -e
veya csh, tsch gibi shell kullanıyorsak:
setenv VISUAL joe ; crontab -e
ile crontab'a şunu ekleyelim:
05 02 * * * nice -n 8
/usr/local/bin/yedek-al 2> /dev/null
ve kaydedip çıkalım.
Burada, her gece 02:05'de
/usr/local/bin/yedek-al adlı komutu çalıştırtırıp yedek
aldırıyoruz. (nice -n 8 kısmı bu işi düşük öncelikli olarak
yaptırmaya yarıyor.)
Aşağıdaki scripti http://www.KlavyeMonitor.com/dosya/yedekal.zip
adresinden de çekebilirsiniz.
--Buradan aşağısı yedek-al scripti--
#!/bin/sh
#
# yedek-al
# duzenli olarak yedek alIr.
#
# ilker Ficicilar
# ilkerf [AT] geocities.com
# Ocak 2001
#
# yedegi alInacaklar:
#
# /root
# /home/ilker
# /home/berker
# /var/spool/mail
# /etc
#
if [ "`whoami`" != "root" ];then
echo "Yedek-alma yalnizca root tarafindan yapilabilir"
exit
fi
mkdir /usr/local/yedekler 2>/dev/null
/bin/chmod -R go= /usr/local/yedekler 2>/dev/null
/bin/chown -R root.root /usr/local/yedekler 2>/dev/null
i=0
if [ -f /usr/local/yedekler/yedek-sira ];then
i=`cat /usr/local/yedekler/yedek-sira`
fi
echo "Yedek Aliniyor"
echo
echo "Yedek sIra no: "$i
echo "Yedeklenenler:"
if [ ! -f /usr/local/yedekler/yedek-liste ];then
cat <<EOF1 > /usr/local/yedekler/yedek-liste
/root
/home/ilker
/home/berker
/var/spool/mail
/etc
EOF1
fi
date >> /usr/local/yedekler/errors
cat /usr/local/yedekler/yedek-liste | while read qw
do
nm=`echo $qw | sed "s///_/g"`
nm="/usr/local/yedekler/yedek$nm-$i.tgz"
echo $nm
tar -czf $nm $qw
done 2>> /usr/local/yedekler/errors
echo >> /usr/local/yedekler/errors
echo "Yedek alma bitti"
nam="/usr/local/yedekler/Son_Yedek_No=$i"
rm -f /usr/local/yedekler/Son_Yedek_No* 2>/dev/null
touch $nam
i=`expr 1 - $i`
echo $i > /usr/local/yedekler/yedek-sira
echo "Yedeklerin kapladIgI bellek miktarI:"
du /usr/local/yedekler
# yedeklerin guvenligini saglayalim:
/bin/chmod -R go= /usr/local/yedekler 2>/dev/null
/bin/chown -R root.root /usr/local/yedekler 2>/dev/null
--Buradan yukarısı yedek-al scripti--
Evet, bu kadar. Ilk denemeyi
yapmak için gece 02:05'i beklemenize gerek yok. "yedekler"
dizininiz için yeterli disk alanınız olduğuna emin olduktan sonra,
"yedek-al" komutunu çalıştırabilirsiniz:
bash# su
Password: önce_root_olmalı
bash# nice -n 5 yedek-al
Programın çalışması bitince
"yedekler dizinize bir göz atabilirsiniz:
bash# ls -s1 /usr/local/yedekler
total 199996
0 Son_Yedek_No=0
1 errors
1 yedek-liste
1 yedek-sira
820 yedek_etc-0.tgz
9055 yedek_home_berker-0.tgz
156661 yedek_home_ilker-0.tgz
24361 yedek_root-0.tgz
7373 yedek_var_spool_mail-0.tgz
bash#
"yedek-al" her çalıştığında dosya
adlarının sonlarındaki "-0"'lar ve "-1"'ler değişecek. En güncel
yedeklerin hangi son eke sahip olduğunu en yukarıdaki
"Son_Yedek_No=0" satırından öğrenebilirsiniz.
Yedeklenmesini istediğiniz diğer
dizin adlarını da artık "yedek-liste" dosyasına ekleyebilirsiniz.
Bu dosya normalde, "yedek-al" ilk kez çalıştırıldığında
oluşturulur, bir daha içeriği program tarafından değiştirilmez.
İstenildiği gibi yeni dizin ekleme çıkarma yapabilmek
olası.
Sanırım bu konu bu kadar. Umarım
bir harddisk arızasıyla karşılaşmazsınız, ama eğer olursa ve bu
programı sürekli kullanıyorsanız. Tek yapmanız gereken, yeni
linuz'unuzu kurduktan, oluşturduktan sonra "tar" komutuyla
yedekleri açmak. Kolay gelsin.
İlker FIÇICILAR
19 Şubat 2001
Arama önerileri:
yedek,
yedekleme,
backup,
yedek alma,
raid,
sata raid,
linux,
kurtarma,
harddisc crash,
harddisk arızası,
Kaynak gösterecekler için referans:
"Linux'ta Yedekleme",
İlker Fıçıcılar,
http://www.KlavyeMonitor.com/yedekleme.html
, Şubat 2001
İlgili Benzer Yazılar:
|