[LinuxFocus-icon]
<--  | Ana Sayfa  | Erişimdüzeni  | İçindekiler  | Arama

Duyumlar | Belgelikler | Bağlantılar | LF Nedir
Bu makalenin farklı dillerde bulunduğu adresler: English  Castellano  ChineseGB  Deutsch  Francais  Nederlands  Russian  Turkce  Polish  

Brian Hone
Brian Hone
<bhone(at)eink.com>

Yazar hakkında:

Brian Hone E Ink firmasında sistem yöneticisi ve yazılım geliştirici olarak çalışıyor. Boş zamanlarında soğuk sularda sörf yapıyor ve kayalıklara tırmanıyor.



Türkçe'ye çeviri:
Ceyhun Elmas <ceyhun.elmas(at)linuxfocus.org>

İçerik:

 

Rsync: Tüm zamanların en iyi yedekleme sistemi.

RSYNC Backup

Özet:

Yedekleme, sistem yönetiminin en zor ve en ihmal edilen parçasıdır. Ve aynı zamanda en önemli kısmıdır. Donanım problemlerine, güvenlik açıklarına, ve en önemlisi son kullanıcı hatalarına karşı son çaredir. Pahalı teyp sürücülerine, hatalı programlara binlerce dolar harcanırken aslında çok daha iyi bir çözüm var : Rsync ve ucuz bir disk array.

_________________ _________________ _________________

 

Problem

Yedeklemenin neden sistem yöneticilerinin kabusu olduğuna dair size uzunca bir liste verebilirim. Eğer bir sistem yöneticisi iseniz biraz düşünmeniz yeterli.İşte nedenlerden bazıları : pahalı ve çabuk bozulabilen donanımlar, kullanımı bir kabus olan pahalı yazılımlar, ve geri dönmesi saatler alan büyük dosyalar. Daha da kötüsü genellikle yedekleme konusu kaçınılmaz gün gelene kadar en düşük öncelikli işler arasında yer alır. Yedeklere sahip olmanıza karşın aşağıdaki diyalogla karşılaşabilirsiniz :

User: "Dosyamı kaybettim. Bu dosya acilen gerekiyor."
SysAdmin: "Tamam, dosyanın adı ne ?"
User: "Bilmiyorum, sanırım içinde bir 'e' geçiyordu."
SysAdmin: "Ok, hangi dizin altındaydı?"
User: "Bilmiyorum, şu dizinlerden biri içinde olabilir ..."
SysAdmin: "*İç çekerek* Bu dosyayı en son ne zaman kullandığınızı biliyor musunuz ?"
User: "Hımmmmm... Sanırım bir perşembe günüydü, Şubat ya da Nisan'dı. Sorun nedir ? Bir yedekleme sistemi olduğunu ve bunların bulunabileceğini sanıyordum."

 

Rsync Alternatif

Rsync küçük bir algoritmann mükemmel bir uyarlanmasıdır. Asıl gücü dosyasisteminin başaryla aynısının oluşturmasndan(mirror) gelir. Rsync ile kolaylıkla dosyasisteminin güncel kopyasna ağ protokolleri üzerinden (nfs, smb ya da ssh gibi ) oluşturabilirsiniz. Rsync'nin dier bir özelliği de yalnızca değişen ya da silinen dosyaların da arşivlenebilmesidir. Rsync'nin bu yazda anlatlabilecek pek çok özellikleri bulunuyor. Bunları rsync.samba.org adresinden okumanızı öneririm.

 

Sistem

Sistemimiz ucuz bir Linux makina , pek çok ucuz disk ve rsync'yi kullanan küçük bir kabuk betiğinden (shell script) oluşuyor. [Fig 1] Yedekleme yaparken rsync'ye değişiklikleri yerleştirebilecei 'YY-DD-MM' isimli bir dizin oluşturmasını söylüyoruz. Sonra rsync sunucuyu çalıştırıyor ve değişimleri yedekliyoruz. Eğer dosya değişmiş ise eski sürüm bir incremental dizine kopyalanıyor, ve yeni dosya ana dizindeki eski dosyann üzerine yazılıyor. [Fig 2]

RSYNC Backup Process

Genelde günlük değişimler toplam dosyasisteminin küçük bir parçasıdır. Aldığım ortalamaya göre yaklaşık %5 ile %1 arasında değişmektedir. Dolayısıyla dosyasisteminizin iki kat bir disk kapasitesi incremental yedekleme ile 50-100 gün yetecektir. Disk tamamen dolduğunda yeni bir disk setine geçin ve eskisini kapalı duruma getirin. Pratikte incremental dosyalar 6 hafta disk üzerinde korumak olanaklıdır. Gerçekte eğer bir yerlerde boş bir alan bulursanız diskleri değiştirmeden önce incremental dosyalar bu boş alana da kopyalabilirsiniz. Bu yolla disk üzerinde büyük incremental sayıların koruyabilirsiniz.

How Incremental Files are Handled  

Önemli bir getiri : Disaster Recover ve Dosya dönüşünde sağlanan kolaylık.

Yukarıdaki anlattığımıza geri dönelim. Şimdi teyp/kartuş sistemine karşı 6 aylık incremental yedekleriniz Linux sisteminde hazır bekliyor. Dilediğiniz arama komutlarıyla (/find/grep gibi ) tüm kayıp dosyalar bulabilirsiniz. Üstelik yalnızca içinde 'e' geçtiği ya da tarih bilgisi elimizde olsa bile. Benim favori problemim ise birisinden şu şekilde geldi :

Favori senaryomuz - tam bir çökme anı. Şimdi size büyük nfs/samba sunucunuzu kaybettiğinizi söyleyelim. Eğer samba yapılandırma dosyalarının yedekleri varsa birkaçdakika içinde bunları yedekleme sunucusundan geri dönebilirisiniz. Şimdi bunu kartuşlarla deneyelim.

 

Rsync/Sabit Disk Yedekleme ile Teyp Sisteminin Karşılaştırılması

  Teyp Yedekleme Rsync
Fiyat Çok yüksek Düşük
Tam (Full) Yedekleme Hızlı Hızlı
Incremental Yedekleme Hızlı Hızlı
Tamamını dönme çok yavaş, büyük olasılıkla birden fazla kartuş. Hızlı - herşey disk üzerinde
Dosya dönme Yavaş, birden fazla kartuşta olabilir, doğru kartuşu bulmak bazen kolay olmayabilir. Oldukça hızlı - Herşey disk üzerinde ve UNIX araçlarının (find, grep ,locate) tam desteğiyle.
Tam bir çökme Tek seçenek tamamını geri dönmek. Bir parçası da geri dönülebilir.
 

Araçlar

Bu yapılandırmanın pek çok yolu var. Buradaki tüm araçlar açık-kod, standart dağıtımlarda bulunuyor ve oldukça kullanışlılar. Burada bir yaplandarma açıklayacağız ama daha pek çok farklı şekilde yapılandırılabilir.

 

Betikleyin

Bu betik temel olarak rsync görselyöresinden alınmıştır. Burada gerçekte yalnız bir komut var :

rsync --force --ignore-errors --delete --delete-excluded --exclude-from=exclude_file --backup --backup-dir=`date +%Y-%m-%d` -av

anahtar seçenekler burada:

Aşağıdaki betik her akşam Linux'un cron komutuyla çalıştırılabilir. Betik her akşam saat 23.00 'da çalıştırılıyor."crontab -e" yazın ve aşağıdaki satırı ekleyin :

0 23 * * * /path/to/your/script

 

Betik

Burada betiğimiz bulunuyor. Tekrar belirtmeliyiz ki bunun pek çok yolu olabilir. Bu yalnızca bir uyarlama.

#!/bin/sh

#########################################################
# Script to do incremental rsync backups
# Adapted from script found on the rsync.samba.org
# Brian Hone 3/24/2002
# This script is freely distributed under the GPL
#########################################################

##################################
# Configure These Options
##################################

###################################
# mail address for status updates
#  - This is used to email you a status report
###################################
MAILADDR=your_mail_address_here

###################################
# HOSTNAME
#  - This is also used for reporting
###################################
HOSTNAME=your_hostname_here

###################################
# directory to backup
# - This is the path to the directory you want to archive
###################################
BACKUPDIR=directory_you_want_to_backup

###################################
# excludes file - contains one wildcard pattern per line of files to exclude
#  - This is a rsync exclude file.  See the rsync man page and/or the
#    example_exclude_file
###################################
EXCLUDES=example_exclude_file

###################################
# root directory to for backup stuff
###################################
ARCHIVEROOT=directory_to_backup_to

#########################################
# From here on out, you probably don't  #
#   want to change anything unless you  #
#   know what you're doing.             #
#########################################

# directory which holds our current datastore
CURRENT=main

# directory which we save incremental changes to
INCREMENTDIR=`date +%Y-%m-%d`

# options to pass to rsync
OPTIONS="--force --ignore-errors --delete --delete-excluded \
 --exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$INCREMENTDIR -av"

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# make sure our backup tree exists
install -d $ARCHIVEROOT/$CURRENT

# our actual rsyncing function
do_rsync()
{
   rsync $OPTIONS $BACKUPDIR $ARCHIVEROOT/$CURRENT
}

# our post rsync accounting function
do_accounting()
{
   echo "Backup Accounting for Day $INCREMENTDIR on $HOSTNAME:">/tmp/rsync_script_tmpfile
   echo >> /tmp/rsync_script_tmpfile
   echo "################################################">>/tmp/rsync_script_tmpfile
   du -s $ARCHIVEROOT/* >> /tmp/rsync_script_tmpfile
   echo "Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile"
   Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile
   echo "rm /tmp/rsync_script_tmpfile"
   rm /tmp/rsync_script_tmpfile
}

# some error handling and/or run our backup and accounting
if [ -f $EXCLUDES ]; then
	if [ -d $BACKUPDIR ]; then
		# now the actual transfer
		do_rsync && do_accounting
	else
		echo "cant find $BACKUPDIR"; exit
	fi
	else
		echo "cant find $EXCLUDES"; exit
fi
 

Kaynaklar

 

Bu yazı için görüş bildiriminde bulunabilirsiniz

Her yazı kendi görüş bildirim sayfasına sahiptir. Bu sayfaya yorumlarınızı yazabilir ve diğer okuyucuların yorumlarına bakabilirsiniz.
 talkback page 

<--, Bu sayının ana sayfasına gider

Görselyöre sayfalarının bakımı, LinuxFocus Editörleri tarafından yapılmaktadır
© Brian Hone, FDL
LinuxFocus.org
Çeviri bilgisi:
en --> -- : Brian Hone <bhone(at)eink.com>
en --> tr: Ceyhun Elmas <ceyhun.elmas(at)linuxfocus.org>

2004-03-13, generated by lfparser version 2.43