Sistem yedekleme

Ubuntu Türkiye Wiki sitesinden
Gezinti kısmına atla Arama kısmına atla

Giriş

Linux'un, Windows'ta olmayan çok ilginç bir özelliği var; insanı kurcalamaya, yeni yeni şeyler denemeye teşvik ediyor. Lakin bazen bu kurcalama işini abartıp sistemi kullanılmaz hale getirebiliyoruz. İşte böyle durumlarda bir düğmeye basıp herşeyi, sistemi bozmadan önceki eski haline getirebilseydik harika olurdu. Size güzel bir haberim var: Bu mümkün!

Önce şu felaket senaryolarına bir göz atalım isterseniz:

Senaryo-1: Bütün ayarlarınızı yaptınız, ekran kartınız, ses kartınız, vb. donanımınız düzgün çalışıyor. Bir gün yaptığınız güncellemeler, program kurulumları (örn. KDE4) neticesinde bilgisayarınız sapıttı. Masaüstü açılmıyor, eskiden çalışan ses artık gelmiyor. Bütün ayarlar bir şekilde alt üst oldu ama nasıl oldu emin değilsiniz. Düzeltemiyorsunuz da...

Senaryo-2: Şu an Alpha aşamasında olan Ubuntu'nun yeni versiyonu Intrepid Ibex'i (8.10) merak edip kurdunuz, sorunlarından bıktınız ve geri dönmek istiyordunuz. Normelde Hardy'yi sıfırdan tekrar kurmanız gerekir. Ama o kadar özelleştirmeden sonra tekrar sıfırdan kurulup yapmak size zor geliyor.

Senaryo-3: Zararsız bir dosyayı root yetkileriyle sileyim derken meşhur "rm -rf" komutunun neden bu kadar tehlikeli olduğunu ilk elden görme şansınız oldu: Pek çok önemli sistem klasörünü yanlışlıkla sildiniz. Sisteminiz artık açılmıyor bile.

Senaryo-4: Çok uğraştınız, zevkinize göre özelleştirdiniz; en nihayetinde size özel çok güzel bir sistem kurdunuz. Ve bu sistemi, benzer özellikleri olan yeni bilgisayarınıza aktarmak istiyorsunuz.

Bu senaryolar ve daha fazlası için; ne yazık ki Ubuntu'da, Windows'taki Sistem Geri Yükleme'de olduğu gibi merkezi bir çözüm yok. Ancak 3. kişilerin geliştirdiği pek çok program var. Önce bu programları irdeleyelim. Yedekleme ve geri yükleme için temelde üç farklı yaklaşım söz konusu:

A- Diskin / bölümün komple kopyasını alan yazılımlar: Linux'teki klasik "dd" disk görüntüsü alma programı, Acronis True Image, Norton Ghost, PartImage, vb. (Bildiğim kadarıyla bunları dezavantajı, geri yükleme için tamamen aynı özellikte, aynı boyutta bir sabit diske / bölüme ihtiyaç olması, özellikle "dd" komutu için, bölüm boyutunda değişiklik olursa geri yükleme yapılamamasıdır.)

B- Dosya ve dizin arşivleme esasına göre çalışan uygulamalar: Linux'teki klasik "tar", "dar", "rsync", "rdiff-backup" yedekleme programları, Simple Backup Suite, Flyback, "dar" programının önyüzü olan KDar, Mondo Rescue, vb. (Grafik araçlar genelde belli bazı klasörlerin yedeklenmesinde kullanılıyor. Komple sistem yedeği almak için konsol (uçbirim) araçlarını kullanmak daha doğru bir yaklaşım olur. Bu araçlardan bazıları, eklemeli yedekleme [incremental backup] ve farka dayalı yedekleme [differential backup] olarak tabir edilen çözümleri destekliyor. Böylece her seferinde komple sistem yedeği almak yerine, mevcut yedek üzerine, sadece yapılan değişiklikleri yedek almak mümkün oluyor.)

C- Mevcut paket ve ayarları kullanarak canlı CD oluşturan uygulamalar: Remastersys, Reconstructor, bir dereceye kadar APTonCD, vb. (Bu araçları kullanarak, Ubuntu/Linux Mint tabanlı, ancak istediğiniz paketlerin kurulu olduğu canlı CD/DVD'ler oluşturabilirsiniz.)

Şimdi dilim döndüğünce yukarıdaki araçlardan, B grubuna ait olan, uzun süredir kullandığım ve beni geçmişte birçok zor durumdan kurtarmış olan "tar" ile konsoldan yedekleme yöntemini anlatacağım.

Ön hazırlıklar

Herşeyden önce "/etc/fstab" ve "/boot/grub/menu.lst" dosyalarındaki UUID referanslarını kaldırarak, yerlerine /dev/sdX# (sda1, sdb2 gibi) aygıt referanslarını yazmalıyız. Bu işlemi yedeklemeden sonra yapmaktansa önce yapmamız hayrımıza, zira geri yükleme öncesinde disk bölümlerinde boyut değişikliği, formatlama, vb. işlemler yapılmışsa ilgili bölümün UUID numarası değişiyor ve geri yükleme sonrasında sistem ya hiç açılmıyor, ya da düzgün açılmıyor.

sudo fdisk -l
sudo blkid

komutlarıyla mevcut sabit disklerin UUID numaralarını bulun.

gksu gedit /etc/fstab &

komutuyla ve yukarıdaki komutların çıktılarından faydalanarak, açılışta yüklenecek bölümlere ait "UUID=....." ifadesini (dikkat; komple satırı değil) "/dev/sdX#" şeklinde ilgili satırın aygıt ismiyle değiştirin. Buradaki & işlemi, konsolda verdiğiniz komutu arka plana atacak ve gnome editor açıldıktan sonra da konsolda yeni komutlar yazmanıza imkan verecek.

Aşağıda örnek bir fstab dosyasının değişiklikten önceki ve sonraki halleri var:


ÖNCE

Dosya İçeriği
Dosya yolu:/etc/fstab

# /etc/fstab: static file system information.

#

# <file system> <mount point> <type> <options> <dump> <pass>

proc /proc proc defaults 0 0

# /dev/sda1

UUID=9c1afbfd-73ae-4a60-8764-b8dcdd980672 / ext3 relatime,errors=remount-ro 0 1

# /dev/sda5

UUID=7dcc38cc-88d2-4eb2-bf6f-6adc03ee43a5 none swap sw 0 0

/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0

/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0


SONRA

Dosya İçeriği
Dosya yolu:/etc/fstab

# /etc/fstab: static file system information.

# <nowiki> # <file system> <mount point> <type> <options> <dump> <pass>

proc /proc proc defaults 0 0

/dev/sda1 / ext3 relatime,errors=remount-ro 0 1

/dev/sda5 none swap sw 0 0

/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0

/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0


gksu gedit /boot/grub/menu.lst &

komutuyla ve yukarıdaki komutların çıktılarından faydalanarak, Linux root bölümüne (fstab içinde / olarak yüklenen bölüme) ait "root=UUID=....." sözcüklerini "root=/dev/sdX#" olarak ilgili satırın aygıt ismiyle değiştirin. "sdX#" yerine sda3, sdb1, hda5, vb. gerçek bölüm numarasını yazmalısınız. Bu arada dikkat edin, dosyanın başlarında bir yerlerde, yorum satırı gibi görünen (# ile başlayan), ancak gerçekte sistem tarafından çekirdek güncellemelerinde GRUB menüsünün otomatik güncellenmesinde kullanılan "root=UUID=....." ifadesine rastlayacaksınız. Bu satırı da aynı şekilde "root=/dev/sdX#" olarak değiştirmelisiniz.

Aşağıda örnek bir menu.lst dosyasının değişiklikten önceki ve sonraki halleri var:


ÖNCE

Dosya İçeriği
Dosya yolu:/boot/grub/menu.lst

# menu.lst - See: grub(8), info grub, update-grub(8)

# grub-install(8), grub-floppy(8),

# grub-md5-crypt, /usr/share/doc/grub

# and /usr/share/doc/grub-doc/.

.....

.....

## If you want special options for specific kernels use kopt_x_y_z

## where x.y.z is kernel version. Minor versions can be omitted.

## e.g. kopt=root=/dev/hda1 ro

## kopt_2_6_8=root=/dev/hdc1 ro

## kopt_2_6_8_2_686=root=/dev/hdc2 ro

# kopt=root=UUID=9c1afbfd-73ae-4a60-8764-b8dcdd980672 ro

.....

.....

title Ubuntu 8.04.1, kernel 2.6.24-19-generic

root (hd0,0)

kernel /boot/vmlinuz-2.6.24-19-generic root=UUID=9c1afbfd-73ae-4a60-8764-b8dcdd980672 ro quiet splash

initrd /boot/initrd.img-2.6.24-19-generic

quiet


title Ubuntu 8.04.1, kernel 2.6.24-19-generic (recovery mode)

root (hd0,0)

kernel /boot/vmlinuz-2.6.24-19-generic root=UUID=9c1afbfd-73ae-4a60-8764-b8dcdd980672 ro single

initrd /boot/initrd.img-2.6.24-19-generic


title Ubuntu 8.04.1, memtest86+

root (hd0,0)

kernel /boot/memtest86+.bin

quiet


### END DEBIAN AUTOMAGIC KERNELS LIST


SONRA

Dosya İçeriği
Dosya yolu:/boot/grub/menu.lst

# menu.lst - See: grub(8), info grub, update-grub(8)

# grub-install(8), grub-floppy(8),

# grub-md5-crypt, /usr/share/doc/grub

# and /usr/share/doc/grub-doc/.

.....

.....

## If you want special options for specific kernels use kopt_x_y_z

## where x.y.z is kernel version. Minor versions can be omitted.

## e.g. kopt=root=/dev/hda1 ro

## kopt_2_6_8=root=/dev/hdc1 ro

## kopt_2_6_8_2_686=root=/dev/hdc2 ro

# kopt=root=/dev/sda1 ro

.....

.....

title Ubuntu 8.04.1, kernel 2.6.24-19-generic

root (hd0,0)

kernel /boot/vmlinuz-2.6.24-19-generic root=/dev/sda1 ro quiet splash

initrd /boot/initrd.img-2.6.24-19-generic

quiet


title Ubuntu 8.04.1, kernel 2.6.24-19-generic (recovery mode)

root (hd0,0)

kernel /boot/vmlinuz-2.6.24-19-generic root=/dev/sda1 ro single

initrd /boot/initrd.img-2.6.24-19-generic



title Ubuntu 8.04.1, memtest86+

root (hd0,0)

kernel /boot/memtest86+.bin

quiet


### END DEBIAN AUTOMAGIC KERNELS LIST


Her iki dosyayı da kaydedin ve kapatın. Düzgün çalıştığından emin olmak için bilgisayarınızı bir kez kapatıp açın. Ardından Mozilla Firefox'tan (ve diğer web tarayıcılarından) geçmiş dosyalar (cache) arşivini temizleyin. Bunun için:

Firefox'ta: Araçlar >> Özel verileri temizle
Opera'da  : Araçlar >> Kişisel verileri sil

yolunu izleyin.

"/var/cache/apt/archives" klasöründe tutulan, yüklediğiniz programların arşivlenen Debian paketlerini aşağıdaki komutla temizleyin:

sudo apt-get clean

Masaüstünde ve diskin diğer yerlerinde kaydedilmesini istemediğiniz dosyalar (film, müzik, vb.) olup olmadığını son bir kez kontrol edin. Artık komple sistem yedeği almaya hazırsınız.

Yedekleme

Sistem yedeğimizi toplamda üç adımda alacağız: Kök dizinini(/), ev dizinini (/home) ve "/etc/fstab" dosyasını arşivleyeceğiz. Sistem kök dizinini arşivlerken "/home" klasörünü yalnızca boş olarak, "/media" altındaki bağlı sistemlerin yalnızca ana klasör isimlerini, sistem işleyişiyle ilgili sanal dosyaları içeren /proc ve /sys klasörlerini ise boş olarak kaydedeceğiz.

Sonra "/home" klasörüne geçerek içinde bulunan kullanıcıların ev dizinlerini yedekleyeceğiz. Ev dizinini kök dizininden ayırmamız iki açıdan önemli ve gerekli: Birincisi; ev dizinindeki dosyalar ve ayarlar yanlışlıkla silinirse bütün sistemi geri yüklemeye gerek olmuyor. İkincisi; (ben dahil) bazı kullanıcılar ev dizini ayrı bir bölümde tutuyor, zira bu şekilde bir kullanım, Ubuntu dağıtım/versiyon güncellemede büyük kolaylıklar sağlıyor. Böyle bir durumda ev dizinini zaten ayrı yedeklemek durumundayız.

cat /etc/fstab

komutuyla, hangi bölümün (/dev/sdX) sisteme nasıl bağlandığını (/, /home, /boot, vb.) görebilirsiniz. Ardından uçbirimi açın ve,

sudo su
cd /
tar cvzpf /root.tgz --exclude={root.tgz,home/*,media/*/*,proc/*,sys/*} /

komutlarını yürütün. "sudo su" komutuyla yetkili kullanıcı kipine geçtik, "cd /" komutu ile kök dizinimize indik ve son komutla da ilk yedekleme işlemini başlattık.

Help-hint 48px.png Eğer sisteminiz Ubuntu türevlerinden biri değilse ve harici dosya sistemleri /media yerine /mnt dizinine bağlanıyorsa, yukarıdaki komutta media/*/* yerine mnt/*/* kullanın.
less /etc/fstab

komutu ile, harici dosya sistemlerinin, dizin ağacında nereye bağlandığını görebilirsiniz.

Enter'a bastığınız andan itibaren arşiv oluşturulmaya başlayacak ve bilgisayarınızın hızına göre yalaşık 1-2 saat sürecek. Bu sırada bilgisayarda çalışmaya devam edebilirsiniz ancak kesinlikle program yüklemeyin, kaldırmayın ve sistemdeki paketleri güncellemeyin.

Tar programına verdiğimiz cvzpf parametrelerinden c; yeni dosya oluşturur (create), v; konsolda yapılan işlemle ilgili geri bildirim yapar (verbose), z; dosyayı gzip ile sıkıştırır [*.tar.gz ya da kısaca *.tgz] (zip), p; yedeklenen dosyalarının dosya izinlerini korur (preserve veya permissions), f de "hani bana, hani bana?" der; illa cıvıtacağım Dil çıkaran Neyse, f parametresi oluşturulacak dosyanın ismini belirtir (burada "f root.tgz").

Tar komutunda dosya ve dizinleri hariç tutmak için --exclude={dizin listesi} komutunu kullanıyoruz. Hariç tutulacak liste tek bir elemandan oluşuyorsa, {} süslü parantez işaretlerini kullanmayabilirsiniz. Dilerseniz, tar komutu için birden fazla "--exclude=" parametresi de kullanabilirsiniz.

Sıra ev dizinini arşivlemeye geldi.

cd /home 
tar cvzpf /home.tgz --exclude={home.tgz} .

komutuyla /home dizinine geçerek kullanıcı klasörlerini kök dizin altında (/home.tgz) arşivleyin. Komutu vermeden önce "cd /home" ile ev dizinine gitmeniz önemli. Aksi takdirde tar, dosyaları /home/kullanıcı_ismi olarak kaydediyor ve geri yüklemede sorunlar çıkabiliyor. Bu esnada kullanıcı klasörünüzde yer kaplayan ve hariç tutulmasını istediğiniz film, müzik vb. klasörleri;

tar cvzpf /home.tgz --exclude={home.tgz,Belgeler/*,Film/*,Müzik/*,*.mp3,*.avi} .

tarzı bir gösterimle arşiv harici tutabilirsiniz. En sondaki nokta işareti (.) mevcut dizinin arşivleneceğini belirtiyor.

Dialog-warning (32px).png Bu tarz sonradan eklediğiniz belgelerinizi kaybetmek istemiyorsanız, aşağıda anlatacağım geri yükleme aşamasında ev dizinini formatlamamaya dikkat edin.

Ev dizinimizi de yedekledik. Son olarak, bağlı bölümlerin listelendiği /etc/fstab dosyasını, sonradan gerektiğinde başvurmak üzere kök dizine yedekleyelim:

cp /etc/fstab /fstab.old
exit

komutuyla fstab dosyasını da yedekleyerek, yönetici oturumunu sonlandırıyoruz.

Şimdi kök dizinde root.tgz, home.tgz ve fstab.old olmak üzere toplam 3 adet yedek dosyası oluşmuş olması lazım. Bunları sisteminizde ayrı bir bölüme, örneğin ext3 formatlı bir depo bölümüne, ya da ntfs formatlı Windows paylaşımlı bir klasöre, ya da en iyisi yazılabilir bir DVD'ye (yedekleri split vb. ek bir komutla bölmezseniz 700 MB standart bir CD'ye sığmayacaktır) kaydetmeniz gerekiyor.

Örneğin, yedek diskimiz disk1 olsun.

mkdir -p /media/disk1/backup/`date +%y%m%d`
mv /*.tgz /*.old /media/disk1/backup/`date +%y%m%d`

komutları diskimizde bugünün tarihiyle bir yedek dosyası oluşturacak ve 3 arşiv dosyamızı bu dizine taşıyacaktır. "mkdir" komutuna parametre olarak "-p" ya da "--parents" eklerseniz, verdiğiniz dizin ağacındaki aradaki eksik dizinleri otomatik oluşturacaktır.

Yedekleme işlemi tamam.

Geri yükleme

Korktuğunuz başınıza geldi: Sisteminiz açılmıyor, ya da düzeltilemeyecek kadar çok problem çıkartıyor. Bu durumda yapmanız gereken şey; en son aldığınız yedeği tekrar geri yüklemek. Geri yükleme işlemi, yedekleme işleminden bir nebze daha zor; bölümleri bağlamanız, gerekiyorsa formatlamanız, hangi arşiv dosyasını hangi bölüme açacağınıza çok dikkat etmeniz gerekecek. Ancak "bir penguenin beceremeyeceği iş yoktur". Öyleyse haydi bakalım!

Geri yükleme işlemini iki yoldan yapabilirsiniz:

Canlı sistem üzerinde geri yükleme:

Eğer sisteminizdeki bazı ayarlar bozulduysa, bazı donanımlar çalışmıyorsa, ancak eski yedeği aldıktan sonra çok fazla program, vb. yüklemediyseniz, mevcut çalışmakta olan sistem üzerinde geri yükleme yapabilirsiniz. Bunun için uçbirimi açın ve

sudo su
cd /media/sdX#/yedek_dizini

komutları ile yedek dosyaların olduğu dizine gidin. Eğer yedek dosyaları CD/DVD ortamında kayıtlı ise;

cd /media/cdrom#/yedek_dizini
Dialog-warning (32px).png Burada sdX# yerine sda1, sdb3 gibi, cdrom# yerine cdrom0, cdrom1 gibi isimler kulanacaksınız.

Bağlı bölümlerin listesini:

ls /media

komutuyla görebilirsiniz.

tar xvzpf root.tgz -C /

komutu ile kök dizini,

tar xvzpf home.tgz -C /home

ile ev dizinini geri yükleyin.

Ardından bilgisayarınızı yeniden başlatın.

Bu yöntemin avantajı geri yüklemenin çok kolay olması, dezavantajı ise genelde "/usr/share" altında bulunan yeni yüklenmiş program dosyalarının, ve varsa yeni çekirdek dosyalarının sistemde fazlalık olarak kalması ve yer işgal etmesi. Bu sorun için bazı çözümler düşündüm, yedekleme öncesi ve sonrası "find" ile yeni yüklenmiş dosyaları bulmak, yedekleme öncesi ve sonrası "dpkg get-selections" vb. komutlarla kurulu paketlerin listesini alarak bir şekilde karşılaştırmak ve yeni paketleri bulup ayıklamak, vb. Ancak henüz "budur" diyebileceğim kesin bir sonuca ulaşamadım.

Canlı sistem (DVD/USB) kullanarak geri yükleme

Eğer Ubuntu açılmıyorsa ya da son yedeklemeden sonra pek çok program kurmuşsanız, bilgisayarınızı tercihen Ubuntu canlı DVD'si ile, canlı sistemin (bazı bilgisayar donanımlarında olduğu üzere) işe yaramadığı durumlarda ise, metin tabanlı Ubuntu alternatif DVD'si ile açmanız ve geri yüklemeyi bu şekilde yapmanız gerekiyor.

Yedeğinizi bir CD/DVD'ye almışsanız ve sisteminizde tek CD/DVD sürücü varsa, yedek arşiv dosyalarını başka bir ortama (Windows sabit diski, USB hafıza çubuğu, harici disk, vb.) kopyalamalısınız. Eğer Alternatif Kurulum CD'sini kullanacaksanız, menüde Windows'taki "kurtarma konsolu"na benzer bir seçenek var, bunu seçerek bilgisayarı root yetkileriyle konsoldan açmalısınız. Bilgisayarı canlı CD ile açtığınızı varsayarsak:

Uçbirimi açın ve "Ctrl+Shift+T" kısayolu ile yeni bir sekme açın ve bu sekmede

sudo fdisk -l

ile sistemde bulunan sabit diskleri, aygıt isimlerini ve biçemlerini listeleyin. Bu ekran, her zaman başvuracağınız bir kaynak olarak bir kenarda dursun. Tekrar ilk sekmeye dönün. Sekmeler arasında gezinmek için Ctrl+PgUp/PgDown tuş kombinasyonunu kullanabilirsiniz.

Yedeğin bulunduğu yer bir sabit disk bölümü ise, yukarıdaki komut çıktısını kullanarak ilgili aygıt ismini belirleyin ve aşağıdaki komutlarla, örneğin /dev/sdb1 için;

sudo su
cd /media
mkdir yedek
mount /dev/sdb1 yedek
ls yedek
cd yedek/yedek_dizini

ile ilgili bölümü yükleyerek yedek dizinine gidin.

Eğer yedek CD/DVD'de ya da USB sürücüde bulunuyorsa, bunlar takıldığında zaten otomatik olarak yüklenecek ve ilgili dizin, sistem tarafından "/media" klasörü altında oluşturulacaktır:

cd /media
ls
cd cdrom/yedek_dizini

gibi... Bir üst dizine geçmek için "cd ..", önceki dizine dönmek için "cd -", kök dizinine çıkmak için "cd /" komutlarını kullanabilirsiniz.

Yedek dizinimizi bulduk, şimdi sıra geri yükleme yapacağımız kök ve varsa ev bölümlerini bulmaya geldi. Bu aşamada, daha önce yedeklediğimiz, "fstab.old" dosyası çok işimize yarayacak. Ctrl+Shift+T ile üçüncü bir sekme açın ve

less /media/aygıt_adı/yedek_dizini/fstab.old

komutu ile eski fstab dosyanızı görüntüleyin.

Böylece 3 sekmemiz oldu; birincide işlemleri yapıyoruz, ikincide "fdisk -l" çıktısı var, üçüncüde ise eski fstab (bağlı dosya sistemleri listesi) içeriği görüntüleniyor. Geri yükleme (özellikle formatlama) işlemlerini yaparken bir gözümüz de diğer sekmelerde olsun. İkinci ve üçüncü sekmelerdeki bilgileri kullanarak, tahmini Ubuntu bölümlerini bulun (fdisk çıktısında ilgili aygıtların dosya sistemi Linux şeklinde görünecektir). Örneğin, fstab çıktısında / (yani kök) olarak bağlanmış gözüken bölüm /dev/sdf8 olsun:

cd /media 
mkdir root
mount /dev/sdf8 root
ls root

komutlarıyla sırasıyla /media altında root isimli bir klasör oluşturuyoruz, sisteme bağlıyoruz (mount işlemi) ve doğru bölümü mü seçtik diye; içinde ne var ne yok bakıyoruz.

Eğer kök dizini geri yüklemeden önce biçimlendirmek (formatlamak) isterseniz (ki bence yapmalısınız), vermeniz gereken komutlar şu şekilde:

umount root
mkfs.ext3 /dev/sdf8

İlk komut yüklü bölümü sistemden ayırıyor (unmount işlemi, ancak komutu "umount"). İkinci komut ise örnek olarak verdiğim bölümü (sizinki farklı olabilir, aman dikkat!) ext3 biçeminde biçimlendiriyor. Biçimlendirme yapılacak bölümün bağlı olmaması gerekiyor. Bölümlerinizin mevcut biçemlerini görmek için 2. ve 3. sekmelerdeki çıktıları kontrol etmeyi unutmayın. Bu arada, "mkfs." yazıp hızlıca iki kere Tab tuşuna basarsanız, bu komutla bölüm biçimlendirmekte kullanabileceğiniz diğer dosya sistemlerini de görebilirsiniz.

Eğer sistemde ayrı bir /home bölümü varsa (fstab.old çıktısından görebilirsiniz), ve aygıt ismi örneğin /dev/sdg9 ise ve ext3 biçeminde ise, önce içeriğini görmek için;

cd /media
mkdir home
mount /dev/sdg9 home
ls home

Sonra bunu da biçimlendirmek için;

umount home
mkfs.ext3 /dev/sdg9

komutları yeterli olacaktır. Ancak ben yine de /home dizininiz ayrı ise dokunmamanızı öneririm. Aksi takdirde güncel program ayarları bir yana, arşive koymadığınız müzik, video, vb. dosyalar ile yeni oluşturduğunuz belgeleri bir çırpıda kaybedebilirsiniz.

Evet, artık geri yüklemeye hazırız. Arşiv dosyalarının bulunduğu yedek dizininde değilsek (nerede olduğumuzu görmek için "pwd"), yedek dizinine geri dönelim. Ve kök dizinini geri yükleyecek olan ilk komutumuzu verelim:

mount /dev/sdf8 /media/root
tar xvzpf root.tgz -C /media/root

Verdiğimiz tar komutunda öncekinden farklı olarak c yerine x parametresini kullanıyoruz. x; f parametresinin ardından ismini verdiğim arşiv dosyasının içindekileri çıkart demek (extract). Daha önce kullanmadığımız bir diğer parametre de -C (büyük harf). Bu da dosyanın hangi ana dizine açılacağını gösteriyor.

Ayrı bir /home disk bölümü varsa;

mount /dev/sdg9 /media/home
tar xvzpf home.tgz -C /media/home

yoksa, yani /home klasörü kök sisteminin bulunduğu disk bölümünde bulunuyorsa (ki özellikle olarak oluşturmadıysanız, büyük ihtimalle bu şekildedir);

tar xvzpf home.tgz -C /media/root/home

Burada dikkatli olun, ev dizinini yanlışlıkla doğrudan kök dizinine (/media/root) açmayın!

Yaklaşık yarım saatlik bir işlem sonucunda (geri yükleme, yedeklemeden daha kısa sürecektir) bütün dosyalar eski yerlerine yüklenmiş olacak ve bize kalan iş, bağlı bölümleri ayırarak, ardından sistemi yeniden başlatmak olacaktır:

umount -a
reboot

Bilgisayar yeniden başlamadan önce canlı CD'yi çıkarmayı unutmayın.

Şanslıysanız, açılışta eski, güzel, sorunsuz Ubuntu'nuza kavuşacaksınız.

GRUB'u geri yükleme

Normalde GRUB'u geri yüklemenize gerek yok. Disk bölümlerinde ciddi değişiklikler yapmadıysanız ve açılışta Grub menüsünü görüyorsanız, bu adımı geçebilirsiniz. Ancak, örneğin Windows'u tekrar kurduysanız, haris Windows yükleyicisi, sabit diskin ön yükleme kaydına (MBR - Master Boot Record) kendi açılış bilgilerini yazacak ve Grub kaydını silecektir. Böyle bir durumda Grub'u ön yükleme kaydına geri yüklemeniz için yapmanız gerekenler şu şekilde:

Bilgisayarınızı canlı CD ile açtıktan sonra ile ulaşabileceğiniz uçbirim benzetimcisi (terminal emülatörü) aracılığıyla, aşağıdaki komutları girin,

sudo grub
grub> find /boot/grub/stage1

NOT: Belgenin bu bölümünde, "sudo grub" komutundan sonraki gösterilen komutlarda, "grub>" bölümünü sizin yazmanıza gerek yok, bunlar uçbirimde göreceğiniz şekli temsil etmesi için yazılmıştır.

Burada (hdx,y) şeklinde bir geri bildirim alacaksınız. Burada verilen sayıları aşağıdaki komutta x ve y yerine kullanın. Örneğin (hd0,0) alırsanız aşağıda x yerine 0, y yerine 0 yazın.

grub> root (hdx,y)
grub> setup (hdx)
grub> quit

Root ile başlayan komut, önyükleyiciye Grub ayarlarının nerede olduğunu gösteriyor, setup ile başlayan komut ise önyükleyicinin sabit diskin MBR (Ana Önyükleme Kaydı)'na yazılacağını belirtiyor.

Son olarak yaptığımız değişiklikleri önyükleme bölümüne yazdıralım. Ancak öncelikle Ubuntu'nun kurulu olduğu sabit disk bölüm adını bilmemiz gerekiyor.

sudo fdisk -l

ile Ubuntu Linux'un yüklü olduğu bölümü bularak (eğer birden fazla Linux işletim sistemi kurulu değilse, son kelimesi Linux olan satırdır), ilgili bölüm (sda1, sdb2, vb.), numarasını yazmadan sabit disk adı olarak (sda, sdb şeklinde) aşağıdaki komutta sdX yerine kullanın:

sudo grub-install /dev/sdX

Eğer "sudo fdisk -l" komutu bölümleri sda, vb. yerine hda, vb. raporluyorsa, hdX kullanın, ama hdX yerine uygun sabit disk ismini aşağıdaki komutta kullanın:

sudo grub-install /dev/hdX

daha sonra sisteminizi yeniden başlatın.

Özet

Son olarak, yukarıda uzun uzadıya anlattığım işlemin kısa bir özetini aşağıda listelemek istiyorum. Bu yöntemi uygulamayı düşünen arkadaşlara tavsiyem, yedeklemenin hemen ardından arşiv dosyalarının bulunduğu klasörde, örneğin dosyaları henüz taşımadıysanız kök dizininde, "benioku.txt" gibisinden bir metin dosyası oluşturmaları:

gksu gedit /benioku.txt

ve aşağıdaki özet bilgileri seçip kopyalayarak, bu dosyanın içine yapıştırmaları. Böylece, ellerinde geri yükleme sırasında başvurabilecekleri bir referans metni olur:

(Ctrl+Shift+T)
less /benioku.txt 


Alıntı
***************
ON HAZIRLIKLAR:
***************

1. Alt+F2 >> gnome-terminal
2. sudo fdisk -l
3. sudo blkid
4. gksu gedit /etc/fstab &
   (UUID=... yerine gercek aygit isimlerini [/dev/sdX# gibi] yaz)
5. gksu gedit /boot/grub/menu.lst &
   (UUID=... yerine gercek aygit isimlerini [/dev/sdX# gibi] yaz)
6. sudo reboot
   (Yedeklemeden once son kontrol icin)
6. Firefox Opera vb. gecici dosyalari temizle
7. sudo apt-get clean
   (Debian paket arsivini silmek icin)

**********
YEDEKLEME:
**********

I. Baslangic:
-------------
1. Alt+F2 >> gnome-terminal
2. sudo su

II. Yedekleme islemi:
---------------------
1. cd /
2. tar cvzpf /root.tgz --exclude={root.tgz,home/*,media/*/*,proc/*,sys/*} /
   (Ubuntu haricindeki sistemler icin: "media/*.*" yerine "mnt/*/*")
3. cd /home
4. tar cvzpf /home.tgz --exclude={home.tgz} .
   (Gerekiyorsa --exclude={home.tgz,Belgeler/*,Film/*,Muzik/*,*.mp3,*.avi})
5. cp /etc/fstab /fstab.old 

II. Arsivleri tasimak icin:
---------------------------
1. mv /*.tgz /*.old /media/yedek_dizini
2. exit  

*************
GERI YUKLEME:
*************  

---------------------------
A. Calisan Sistem Uzerinde:
--------------------------- 

I. Baslangic:
-------------
1. Alt+F2 >> gnome-terminal
2. sudo su  

II. Geri yukleme islemi:
------------------------
1. ls /media
2. cd /media/sdX#/yedek_dizini
   (yedekler sabit disk uzerinde kayitli ise)
   cd /media/cdrom#/yedek_dizini
   (yedek CD/DVD ortaminda kayitli ise)
3. tar xvzpf root.tgz -C /
4. tar xvzpf home.tgz -C /home
5. reboot 

-------------------------
B. Ubuntu Calisan CD'den:
------------------------- 

I. Baslangic:
-------------
1. Alt+F2 >> gnome-terminal
2. sudo su

II. Yedek dizinini yuklemek/gormek icin:
----------------------------------------
1. ls /media
   (USB ve CD'ler otomatik yuklenecektir.)
2. cd /media
3. mkdir yedek
4. mount /dev/sdX# yedek
5. ls yedek
6. cd yedek/yedek_dizini 

III. Yardimci bilgiler:
-----------------------
1. Ctrl+Shift+T (yeni sekmeler icin)
2. sudo fdisk -l
3. Ctrl+Shift+T
4. less fstab.old
5. Ctrl+PgUp/PgDown
   (sekmeler arasinda gezinmek icin) 

IV. Kok bolum (/) icin:
-----------------------
1. cd /media
2. mkdir root
3. mount /dev/sdX# root
   (sdX# yerine sda1, sbd3, vb.)
4. ls root  

V. Kok bolumu formatlamak icin:
-------------------------------
1. umount root
2. mkfs.ext3 /dev/sdX#
3. mount /dev/sdX# root
4. ls root  

VI. Varsa ev (/home) bolumu icin:
---------------------------------
1. cd /media
2. mkdir home
3. mount /dev/sdX# home
   (sdX# yerine sda1, sbd3, vb.)
4. ls home

VII. Varsa ev bolumunu formatlamak icin:
----------------------------------------
1. umount home
2. mkfs.ext3 /dev/sdX#
3. mount /dev/sdX# home
4. ls home 

VIII. Geri yukleme islemi:
--------------------------
1. cd /media/yedek/yedek_dizini
2. tar xvzpf root.tgz -C /media/root
3a.tar xvzpf home.tgz -C /media/home
   (Ayri bir ev bolumu varsa [bkz. fstab.old])
3b.tar xvzpf home.tgz -C /media/root/home
   (Ayri bir ev bolumu yoksa)
4. umount -a
5. reboot 

*************************************
GRUB GERI YUKLEME (GRUB ACILMIYORSA):
*************************************   

I. Baslangic:
-------------
1. Alt+F2 >> gnome-terminal
2. sudo su  

II. GRUB ayarlari:
------------------
1. grub
2. grub> find /boot/grub/stage1
3. grub> root (hdx,y)
4. grub> setup (hdx)
5. grub> quit  

III. GRUB geri yukleme:
-----------------------
1. fdisk -l
2. grub-install /dev/sdX
3. reboot  

NOT: Dosyayı görüntülerken terminalde karakter sorunu çıkmaması için, metinde Türkçe karakter kullanılmamıştır.

Notlar

1. Bakmayın yukarıda detaylarıyla uzun uzun yazdığıma. Aslında bu yöntemle yedekleme ve geri yükleme hiç de zor bir işlem değil; sakın gözünüz korkmasın, bir alışırsanız otomatiğe bağlarsınız. Bir tek biçemleme (formatlama) esnasında hangi bölümü formatladığınıza dikkat etmelisiniz.

2. Bir ara bütün bu işlemleri Zenity Gtk+ diyalog komutları kullanarak betik haline getirmeyi düşündüm. Nasıl yapacağımın planını bile kurdum. Ancak hem böyle bir şeye kalkışmak benim için fazladan emek, efor, en önemlisi zaman demekti, hem de herkesin sistemi farklı olacağı, bazılarında Wubi, bazılarında birden fazla Linux sistemi yüklü olacağı için, bu kadar bol bilinmeyenin havalarda uçuştuğu bir ortamda böyle iddialı bir görsel betik denemesi yetersiz kalacaktı. Yetersiz kalmak bir yana, yanlış bölümü formatlamak gibi, geri dönülmez hatalara sebebiyet verme riskini taşıyacaktı. Halbuki yukarıda anlattığım, sadece Ubuntu'da değil, tar ve gzip'in yüklü olduğu bütün Linux sistemlerinde uygulanabilen, genelgeçer bir yöntemdir. Bu düşüncelerle, "armut piş ağzıma düş" türü görsel bir betiktense, bunları konsolda kullanıcının kendisinin yapmasının ve bu şekilde ne yaptığının bilincinde olarak hareket etmesinin çok daha faydalı olduğuna karar verdim.

3. İnternet'te tar ve gzip için azami dosya boyutu hakkında rastladığım çeşitli yazılardan anladığım kadarıyla, hem tar, hem de gzip için eskiden 2 GB dosya boyutu sınırı varmış, ancak her iki programın şu an kullandığımız versiyonlarında (görmek için konsolda "tar --version", "gzip --version"), bu sınır ortadan kaldırılmış. Artık tek sınır, dosyayı sakladığınız ortamın biçemiyle ilgili; örneğin dosyayı FAT32 biçemli bir sabit diske kaydederseniz maksimum dosya boyutunun 4 GB olduğunu bilmelisiniz. Arşivleme işlemi sonrasında oluşacak dosya boyutuna dair bir fikir vermesi açısından, 2.5 GB yer kaplayan sistemimi arşivlediğimde elde ettiğim dosya boyutu 750 MB civarında.

Bu konu hakkında daha fazla bilgi için: [1], [2], [3]

4. Tar komutu ile birlikte gzip yerine daha iyi sıkıştırma oranı sağlayan bzip2 programını kullanabilirsiniz. Bu durumda arşivleme için kullanacağınız komut "tar cvzpf *.tgz" yerine "tar cvjpf *.tar.bz2" olacaktır (z yerine j). Dosyayı açmak içinse; "tar xvjpf *.tar.bz2" komutu kullanılmalıdır. Ancak denemelerimde gördüğüm kadarıyla, bzip2 ile sıkıştırma gzip ile sıkıştırmadan çok daha uzun sürüyor. Öyle ki, normalde 1 saatte tamamlanan yedekleme işlemi, bzip2 kullanılırsa 2 saati bulabiliyor. Bence biraz daha küçük bir arşiv dosyası elde etmek için bu süreyi beklemeye hiç gerek yok.

5. Tar-Gzip sisteminin belki de tek dezavantajı eklemeli (incremental) yedek alabilmesine rağmen, farka dayalı (differential) yedekleme yapamaması. Yani mevcut bir yedek üzerine eklenen dosyaları bulup kayıt altına alabilirken, yedek alındıktan sonra yeri değiştirilen (bir klasörden diğerine taşınan), ya da silinen dosyaları bulup mimleyememesi. Bu durum da yedek üzerine yedek alırken, tar'ı ideal araç olmaktan çıkarıyor.

Eklemeli arşiv oluşturmak için "tar"a komut satırında "-g fark_kaydı" parametresini veriyoruz. Böylece, ilk seferinde "fark_kaydı" isimli (başka bir isim de kullanılabilir) dosya olmadığı için oluşturuluyor ve bütün dosya bilgileri içine yazılıyor. İkinci sefer, farklı bir *.tgz dosya ismi vererek ancak "-g fark_kaydı" ile aynı kayıt dosyasını göstererek ikinci yedeğinizi aldığınızda, yedeği alınan klasörler, "fark_kaydı" dosyasındaki bu bilgilerle karşılaştırılıyor, içeriği değişen ve yeni eklenen dosya ve klasörler arşivleniyor, son olarak "fark_kaydı" isimli dosya güncellenerek yeniden oluşturuluyor.

Tar'ın "incremental backup" özelliğini ve nasıl kullanılacağını merak ederseniz şu makaleyi inceleyebilirsiniz.

6. Öte yandan, yine konsolda çok başarılı bir yedekleme uygulaması olan "dar", farka dayalı yedekleme (differential backup) sistemiyle göz dolduruyor. Bu sayede, ilk yedeği aldıktan bir süre sonra, bu yedeği referans alarak, ikinci bir arşiv dosyası oluşturursanız, "dar" sadece yeni eklenen dosyaları ve silinen dosyaların bir listesini ekler. Geri yükleme esnasında önce ana yedek, sonra ikinci oluşturulan fark yedeği geri yüklemelisiniz. İkinci yedeği yüklerken, eklenecek olan dosyalar eklenir, ikinci yedeği oluştururken silinmiş dosyalar ise "dar" tarafından tekrar silinir. Bu şekilde, bütün bir sistem, istenilen tarihteki an'a geri döndürülmüş olur.

"dar" programının dezavantajı ise, Ubuntu ile birlikte yüklü gelmemesi. Dolayısıyla, "dar" ya da önyüzü olan "kdar" ile yedekleme yapmak isterseniz, önce dar programını Synaptic'ten yüklemelisiniz. Bu noktada bahsedilmesi gereken bir de "dar-static" isminde bir paket ve bu paketle gelen "dar_static" uygulama dosyası var. Programı geliştiren yazılımcı, her türlü kütüphaneden bağımsız olan derlenen "dar_static" ikili dosyasını da biz penguenlerin kullanımına sunmuş. Böylece, "dar" ile sistem yedeği almak isteyen bir kullanıcı, yedek aldığı klasöre dar_static programını da kopyalarsa, daha sonra olası bir geri yükleme sırasında "dar" paketi yüklü olmayan bir ortamda bile (örneğin canlı Ubuntu DVD'de) kolaylıkla geri yükleme yapabiliyor.

Dar'ın "differential backup" özelliğini ve nasıl kullanılacağını merak ederseniz şu makaleyi inceleyebilirsiniz.

7. Konuyla doğrudan örtüşmese de; konsolda "dpkg --get-selections" komutu sisteminizde kurulu paketleri listeliyor. "dpkg --set-selections" komutu ise kurulması planlanan paket listesini alıyor. Bu listesi geri yüklemeden önce bir dosyaya aktarırsak:

dpkg --get-selections > yeni_programlar

ve geri yüklemeden sonra:

sudo dpkg --set-selections < yeni_programlar
sudo apt-get dselect-upgrade

komutu ile zahmetsizce, yedek aldıktan sonra yükleyip kullandığımız programları yeniden yükleyebiliriz. Lakin, sizi geri yükleme yapmaya zorunlu kılan ve sistemin işleyişini bozan şeyin, bu kurulu paketlerden birisi olması da olası. Dolayısıyla seçim size kalmış.

Bu konu hakkında daha fazla bilgi için: http://www.ubuntugeek.com/clone-your-ubuntu-installation.html http://ubuntuforums.org/showthread.php?t=169062

8. Şu komut, sabit diskinizin ana yükleme kaydının (MBR) bir yedeğini alıyor:

dd if=/dev/sda of=/mbr.bin count=1 bs=512

Şu komut ise bu kaydı, bölümleme tablosunu hariç tutarak geri yüklüyor:

dd if=/mbr.bin of=/dev/sda count=1 bs=446

Bu yöntem, MBR'ın bozulması, veya üzerine veri yazılması yurumunda geri yüklemek için kağıt üzerinde güzel bir çözüm gibi görünse de, gerçekte bölümleme tablosu (partition table) da aynı yerde bulunduğu için, yazılan yanlış bir bilgi neticesinde bu tabloyu geri dönülmez biçimde bozma riski çok yüksek. Bu nedenle tavsiyem; bu komuttan uzak durun ve yukarıda verdiğim Grub geri yükleme yönteminden şaşmayın.

Bu konu hakkında daha fazla bilgi için: http://searchenterpriselinux.techtarget.com/tip/0,289483,sid39_gci1244256,00.html http://fixunix.com/slackware/508788-dd-mbr-strange-behavior.html

9. Evet, farkındayım; yukarıda verdiğim sdf8, sdg9 gibi aygıt isimleri pek mantıklı değil. Ancak sda1, sdb1 gibi bir şey yazsaydım tecrübesiz kullanıcılar komutu görünce direkt kullanıp yanlış bölümü formatlayabilirdi. Onun yerine, "naptın hoca, böyle bölüm yok" şeklinde hata uyarısı almaları daha iyi.

10. Üçüncü baskı olacak, ama geri yüklemede yanlışlıkla ev dizinini formatlamamaya dikkat edin. Ev dizini gibi /boot, vb. dizinleriniz ayrı disk bölümlerindeyse bunları da ayrı dosyalarda arşivleyin.

11. Konsolda benzer komutları yazarken (örneğin mount ile ilgili komutlar), otomatik tamamlamak için Sekme (Tab) ve komut geçmişi için Yukarı Ok tuşlarını kullanırsanız, işlemleri daha hızlı yapabilirsiniz. Ekranda çok fazla satır varsa, "clear" komutu ya da Ctrl+L ile ekranı temizleyebilirsiniz.

12. Hepsi bu kadar arkadaşlar. Çenem düştü, yazıyı fazla uzun tuttum. Ancak hem yedek alırken, hem de geri yüklerken, temelde uygulanması gereken topu topu birkaç komut var. Yani aslında bu işlem, göründüğü gibi uzun ve karmaşık değil. Umarım bu yedekleme yöntemini benimser ve belirli aralıklarla uygularsınız. Hem bu sayede, "Ubuntu'yu kurcalarken bozar mıyım?" endişeniz de olmaz, içiniz rahat eder (tıpkı şu an benim olduğum gibi).

Kaynakça

  • Ubuntu-tr Forumunda "erginemr" kullanıcısının anlatımı