Ubuntu 12.04 VPS Üzerinde Bacula ile Uzak Yedeklemelerin Yapılandırılması
Giriş
Dijital çağda veri, bir kurumun veya bireyin en değerli varlıklarından biridir. Sunucular, özellikle de bir VPS (Sanal Özel Sunucu) üzerinde çalışanlar, çeşitli risklere açıktır: donanım arızaları, yazılım hataları, siber saldırılar veya insan hataları. Bu tür olaylar veri kaybına yol açabilir ve iş sürekliliğini ciddi şekilde etkileyebilir. Bu nedenle, düzenli ve güvenilir yedekleme stratejileri uygulamak kritik öneme sahiptir. Uzak yedeklemeler, birincil sunucunuzun başına bir şey gelmesi durumunda verilerinizin fiziksel olarak farklı bir konumda güvende olmasını sağlayarak ekstra bir güvenlik katmanı sunar.
Bu makale, açık kaynaklı, güçlü ve esnek bir yedekleme çözümü olan Bacula’yı kullanarak Ubuntu 12.04 işletim sistemine sahip bir VPS üzerinde uzak yedeklemelerin nasıl yapılandırılacağını ayrıntılı olarak açıklamaktadır. Ubuntu 12.04’ün artık uzun süreli desteğinin (LTS) sona ermiş ve güncel olmayan bir sürüm olduğunu kabul etmekle birlikte, bu makale özel olarak bu ortamda çalışan sistemler için pratik bir rehber sunmaktadır. Bacula’nın modüler yapısı ve kapsamlı özellikleri, küçük ölçekli kişisel VPS’lerden büyük kurumsal altyapılara kadar geniş bir yelpazede yedekleme ihtiyaçlarını karşılamasını sağlar. Amacımız, Bacula’nın temel mimarisini anlamaktan, kurulumuna, yapılandırmasına ve yedekleme/geri yükleme işlemlerine kadar adım adım bir yol haritası sunmaktır.
Bacula Mimarisi ve Temel Bileşenleri
Bacula, dağıtık bir yedekleme sistemidir ve birden fazla bileşenin uyumlu bir şekilde çalışmasıyla işlev görür. Bu modüler yapı, Bacula’yı son derece esnek ve ölçeklenebilir kılar. Temel bileşenleri şunlardır:
Director (DIR)
Bacula Director, tüm yedekleme operasyonlarının beynidir. Yedekleme ve geri yükleme işlerini yönetir, zamanlamaları belirler, hangi istemcilerin yedekleneceğini, hangi dosyaların yedekleneceğini ve verilerin nereye depolanacağını kontrol eder. Director, aynı zamanda tüm Bacula bileşenleri arasındaki iletişimi koordine eder. Director’ın yapılandırma dosyası bacula-dir.conf‘tur.
Storage Daemon (SD)
Storage Daemon, yedekleme verilerini depolama aygıtlarına (disk, teyp, bulut depolama vb.) yazar ve geri yükleme sırasında bu verileri okur. Director’dan gelen komutları alır ve File Daemon’dan gelen verileri depolar. Bir Bacula ortamında birden fazla Storage Daemon bulunabilir, bu da depolama kapasitesi ve performansı açısından esneklik sağlar. Storage Daemon’ın yapılandırma dosyası bacula-sd.conf‘tur.
File Daemon (FD) / Client
File Daemon, yedeklenecek veya geri yüklenecek dosyaların bulunduğu istemci makine üzerinde çalışır. Director’dan gelen komutları alır, belirtilen dosyaları okur ve Storage Daemon’a gönderir veya Storage Daemon’dan gelen verileri alıp geri yükleme işlemini gerçekleştirir. Her yedeklenecek sunucu (bu durumda Ubuntu 12.04 VPS’iniz) bir File Daemon çalıştırır. File Daemon’ın yapılandırma dosyası bacula-fd.conf‘tur.
Console
Bacula Console, yöneticilerin Director ile etkileşim kurmasını sağlayan bir arayüzdür. Yedekleme işlerini başlatmak, durdurmak, izlemek, geri yükleme yapmak ve Bacula ortamının genel durumunu yönetmek için kullanılır. Hem komut satırı tabanlı (bconsole) hem de grafiksel kullanıcı arayüzü (Bacula Web GUI – Baculum veya BWeb) sürümleri mevcuttur.
Catalog (Veritabanı)
Catalog, Bacula’nın yedeklediği tüm veriler hakkında meta verileri depolayan bir veritabanıdır. Hangi dosyaların ne zaman, hangi iş kapsamında ve hangi depolama birimine yedeklendiği gibi bilgileri içerir. Geri yükleme işlemleri için kritik öneme sahiptir, çünkü Bacula’nın belirli bir dosyanın nerede bulunduğunu hızlıca bulmasını sağlar. PostgreSQL veya MySQL gibi ilişkisel veritabanları kullanılabilir.
Uzak yedekleme senaryosunda, genellikle Director, Storage Daemon ve Catalog aynı sunucuda (yedekleme sunucusu) bulunurken, File Daemon uzak VPS üzerinde çalışır.
Hazırlık Aşaması
Uzak yedekleme sistemini kurmaya başlamadan önce bazı ön hazırlıkların yapılması gerekmektedir. Bu adımlar, kurulumun sorunsuz ilerlemesini sağlayacaktır.
Sistem Gereksinimleri
Ubuntu 12.04 VPS’inizde Bacula File Daemon’ı çalıştırmak için çok yüksek sistem kaynaklarına ihtiyaç duyulmaz. Ancak, yedeklenecek veri miktarı ve yedekleme sıklığına bağlı olarak CPU ve RAM kullanımı artabilir. Minimum 512 MB RAM ve 1 CPU çekirdeği genellikle yeterlidir. Yedekleme sunucusu (Director, Storage Daemon, Catalog) için ise daha fazla kaynak (özellikle depolama ve RAM) önerilir.
Ağ Yapılandırması ve Güvenlik Duvarı
Bacula bileşenleri arasındaki iletişim belirli TCP portları üzerinden gerçekleşir. Bu portların güvenlik duvarında açık olması gerekmektedir.
* Director (DIR): Genellikle 9101 (istemciler ve depolama ile iletişim için)
* Storage Daemon (SD): Genellikle 9103 (istemcilerden veri almak için)
* File Daemon (FD): Genellikle 9102 (Director’dan komut almak için)
Ubuntu 12.04 üzerinde UFW (Uncomplicated Firewall) yüklü ise, bu portları açmanız gerekecektir.
Yedekleme Sunucusu (Director, Storage Daemon):
sudo ufw allow 9101/tcp
sudo ufw allow 9103/tcp
sudo ufw enable
Uzak VPS (File Daemon):
sudo ufw allow 9102/tcp
sudo ufw enable
Bu komutlar, ilgili portlara gelen bağlantılara izin verir. Güvenliği artırmak için, bu portlara yalnızca bilinen IP adreslerinden (yedekleme sunucunuzun IP’si gibi) erişime izin verebilirsiniz.
Sistem Güncellemesi
Kuruluma başlamadan önce sistemin güncel olduğundan emin olun:
sudo apt-get update
sudo apt-get upgrade
Gerekli Paketlerin Kurulumu
Bacula’yı iki farklı sunucuya kuracağız:
1. Yedekleme Sunucusu (Director, Storage Daemon, Console, Catalog): Bu sunucu, yedekleme işlerini yönetecek ve yedeklenen verileri depolayacaktır.
2. Uzak VPS (File Daemon): Bu sunucu, yedeklenecek dosyaların bulunduğu istemci makinedir.
Yedekleme Sunucusu Üzerinde Kurulum:
sudo apt-get install bacula-director bacula-sd bacula-console postgresql bacula-client
Bu komut, Bacula Director, Storage Daemon, Console, PostgreSQL veritabanı sunucusu ve istemci araçlarını (genellikle Director sunucusunda da bir File Daemon bulunur) kuracaktır. Kurulum sırasında size veritabanı seçimi ve yapılandırma ile ilgili sorular sorulacaktır. PostgreSQL’i seçmeniz önerilir ve Bacula’nın veritabanını otomatik olarak oluşturmasına izin verebilirsiniz.
Uzak VPS Üzerinde Kurulum:
sudo apt-get install bacula-client
Bu komut, uzak VPS üzerinde yalnızca Bacula File Daemon’ı (bacula-client paketi içerisinde gelir) kuracaktır.
Veritabanı Yapılandırması
Bacula’nın katalog verilerini depolamak için bir veritabanına ihtiyacı vardır. Kurulum sırasında PostgreSQL’i seçtiyseniz, Bacula kurulum betikleri genellikle veritabanını ve kullanıcıyı sizin için oluşturur. Ancak, manuel olarak kontrol etmek veya yeniden yapılandırmak isteyebilirsiniz.
PostgreSQL Kontrolü:
Bacula kurulumu sırasında otomatik oluşturulan veritabanı ve kullanıcı genellikle bacula adını taşır.
PostgreSQL’e bağlanarak kontrol edebilirsiniz:
sudo -u postgres psql
\l komutu ile veritabanlarını, \du komutu ile kullanıcıları listeleyebilirsiniz. bacula veritabanının ve kullanıcısının mevcut olduğunu görmelisiniz.
Eğer otomatik yapılandırma sırasında bir sorun oluşursa veya manuel yapılandırmak isterseniz:
# PostgreSQL kullanıcısı oluştur
sudo -u postgres createuser -P bacula
Şifre girmeniz istenecek (örn: mysecurepassword)
Veritabanı oluştur
sudo -u postgres createdb -O bacula bacula
Şimdi Bacula şemalarını oluşturmanız gerekecek. Bu şemalar, Bacula’nın katalog verilerini depolamak için ihtiyaç duyduğu tabloları içerir. Bacula paketleriyle birlikte gelen SQL betiklerini kullanın:
cd /usr/share/bacula-director
sudo -u postgres psql -U bacula -d bacula -f bacula.sql
sudo -u postgres psql -U bacula -d bacula -f grant_privileges.sql
sudo -u postgres psql -U bacula -d bacula -f make_bacula_tables.sql
Bu adımlar, Bacula’nın PostgreSQL veritabanını düzgün bir şekilde kullanabilmesi için gerekli tüm tabloları ve izinleri oluşturur.
Bacula Director (DIR) Yapılandırması
Bacula Director’ın ana yapılandırma dosyası /etc/bacula/bacula-dir.conf‘tur. Bu dosya, Bacula’nın nasıl çalışacağını tanımlayan bir dizi “kaynak” içerir. Temel kaynaklar şunlardır:
* Director: Director’ın kendisi için tanımlamalar.
* Catalog: Veritabanı bağlantı bilgileri.
* Client: Yedeklenecek her bir istemci (File Daemon) için tanımlamalar.
* Storage: Yedekleme verilerinin depolanacağı Storage Daemon’lar için tanımlamalar.
* Job: Yedekleme veya geri yükleme işlerinin tanımları.
* Schedule: İşlerin ne zaman çalışacağını belirten zamanlamalar.
* FileSet: Hangi dosyaların yedekleneceğini veya hariç tutulacağını belirten kurallar.
* Pool: Yedekleme ortamlarının (disk birimleri) yönetimi.
* Messages: Olay günlüklerinin nereye gönderileceğini belirten tanımlar.
bacula-dir.conf dosyasını düzenlemek için bir metin düzenleyici kullanın:
sudo nano /etc/bacula/bacula-dir.conf
Aşağıda önemli bölümlerin ve uzak yedekleme senaryosu için gerekli değişikliklerin bir özeti bulunmaktadır:
Director Kaynağı
Director {
Name = bacula-dir
DIRport = 9101
QueryFile = "/etc/bacula/query.sql"
Password = "your_director_password" # Güçlü bir şifre belirleyin
Messages = Daemon
}
Password alanı, konsolun Director’a bağlanmak için kullanacağı şifredir.
Catalog Kaynağı
Veritabanı bağlantı bilgilerini içerir. PostgreSQL için:
Catalog {
Name = MyCatalog
dbdriver = "postgresql"
dbaddress = 127.0.0.1
dbport = 5432
dbuser = bacula
dbpassword = "mysecurepassword" # Veritabanı kullanıcısının şifresi
dbname = bacula
}
dbaddress genellikle 127.0.0.1 (localhost) olur, çünkü Director ve veritabanı aynı sunucudadır.
Client Kaynağı (Uzak VPS için)
Bu, uzak Ubuntu 12.04 VPS’inizi temsil eder. Her bir uzak istemci için bir Client kaynağı tanımlamanız gerekir.
Client {
Name = ubuntu-vps-fd
Address = YOUR_VPS_IP_ADDRESS # Uzak VPS'inizin IP adresi
FDPort = 9102
Catalog = MyCatalog
Password = "your_vps_fd_password" # Uzak VPS'teki File Daemon için güçlü bir şifre
FileRetention = 30 days # Yedeklenen dosyaların katalogda ne kadar kalacağı
JobRetention = 6 months # Yedekleme işlerinin katalogda ne kadar kalacağı
AutoPrune = yes
}
Name benzersiz olmalıdır. Address alanına uzak VPS’inizin genel IP adresini girin. Password alanındaki şifre, uzak File Daemon’ın yapılandırma dosyasındaki şifre ile eşleşmelidir.
Storage Kaynağı
Bu, yedekleme verilerini depolayacak Storage Daemon’ı tanımlar. Eğer Director ve Storage Daemon aynı sunucudaysa Address 127.0.0.1 olabilir.
Storage {
Name = FileStorage
Address = 127.0.0.1 # Storage Daemon'ın çalıştığı sunucunun IP adresi
SDPort = 9103
Password = "your_sd_password" # Storage Daemon için güçlü bir şifre
Device = FileStorageDevice
MediaRetention = 30 days # Depolama birimlerinin ne kadar süreyle saklanacağı
}
Job Kaynağı
Yedekleme işlerinin nasıl çalışacağını tanımlar.
Job {
Name = "BackupUbuntuVPS"
Type = Backup
Client = ubuntu-vps-fd
FileSet = "FullSet"
Schedule = "WeeklySchedule"
Storage = FileStorage
Pool = Default
Messages = Standard
WriteBootstrap = "/var/lib/bacula/%c%n.bsr"
RunScript = "echo 'Yedekleme tamamlandı: %n' | mail -s 'Bacula Yedekleme' admin@example.com" on Success
}
* Name: İşin adı.
* Type: Yedekleme (Backup) veya geri yükleme (Restore).
* Client: Hangi istemcinin yedekleneceği (yukarıda tanımladığımız ubuntu-vps-fd).
* FileSet: Hangi dosyaların yedekleneceği (bir sonraki bölümde tanımlayacağız).
* Schedule: İşin ne zaman çalışacağı (bir sonraki bölümde tanımlayacağız).
* Storage: Hangi depolama birimine yedekleneceği.
* Pool: Hangi depolama havuzunun kullanılacağı.
* RunScript: Başarılı bir yedeklemeden sonra çalıştırılacak bir komut (isteğe bağlı, bildirim için).
FileSet Kaynağı
Yedeklenecek dosyaları ve dizinleri tanımlar.
FileSet {
Name = "FullSet"
Include {
Options {
signature = MD5 # Dosya bütünlüğünü kontrol etmek için
compression = GZIP # Sıkıştırma kullan
}
File = /etc
File = /home
File = /var/www # Web siteleriniz varsa
}
Exclude {
File = /var/lib/bacula
File = /tmp
File = /proc
File = /sys
}
}
File direktifi ile yedeklenecek yolları, Exclude ile hariç tutulacak yolları belirtin.
Schedule Kaynağı
Yedekleme işlerinin ne zaman çalışacağını tanımlar.
Schedule {
Name = "WeeklySchedule"
Run = Full 1st sun at 03:00
Run = Incremental mon-sat at 03:00
}
Bu örnek, ayın ilk Pazar günü tam yedekleme, haftanın diğer günleri artımlı yedekleme yapar.
Pool Kaynağı
Depolama birimlerini (volumeler) yönetir.
Pool {
Name = Default
PoolType = Backup
Recycle = yes # Eski volumeleri yeniden kullan
AutoPrune = yes # Eski volumeleri otomatik sil
LabelFormat = "Default-" # Volumeler için etiket formatı
VolumeRetention = 30 days # Volumelerin ne kadar süreyle saklanacağı
MaximumVolumeBytes = 5G # Bir volume'ün maksimum boyutu
}
Bu ayarlar, disk alanınızın verimli kullanılmasını sağlar.
Tüm bu değişiklikleri yaptıktan sonra bacula-dir.conf dosyasını kaydedin ve Director servisini yeniden başlatın:
sudo service bacula-director restart
Konfigürasyonunuzu test etmek için sudo bacula-dir -t komutunu kullanabilirsiniz.
Bacula Storage Daemon (SD) Yapılandırması
Storage Daemon’ın ana yapılandırma dosyası /etc/bacula/bacula-sd.conf‘tur. Bu dosya, Storage Daemon’ın kendisini, kullanacağı depolama aygıtlarını ve hangi Director’dan komut alacağını tanımlar.
sudo nano /etc/bacula/bacula-sd.conf
Aşağıda önemli bölümlerin ve uzak yedekleme senaryosu için gerekli değişikliklerin bir özeti bulunmaktadır:
Storage Kaynağı
Storage Daemon’ın kendisi için tanımlamalar.
Storage {
Name = bacula-sd
SDPort = 9103
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
}
Device Kaynağı
Yedekleme verilerinin fiziksel olarak nereye yazılacağını tanımlar. Disk tabanlı depolama için:
Device {
Name = FileStorageDevice
Media Type = File
Archive Device = /var/lib/bacula/storage # Yedekleme verilerinin depolanacağı dizin
LabelMedia = yes
Random Access = yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
}
Archive Device alanına yedekleme verilerinin depolanacağı bir dizin yolu belirtin. Bu dizini oluşturmanız ve Bacula kullanıcısına yazma izinleri vermeniz gerekmektedir:
sudo mkdir -p /var/lib/bacula/storage
sudo chown -R bacula:bacula /var/lib/bacula/storage
sudo chmod -R 770 /var/lib/bacula/storage
Director Kaynağı (SD için)
Storage Daemon’ın hangi Director ile iletişim kuracağını tanımlar.
Director {
Name = bacula-dir
Password = "your_sd_password" # Director'ın Storage kaynağında tanımlanan şifre ile aynı olmalı
}
Bu şifrenin, Director yapılandırmasındaki Storage kaynağında tanımlanan şifre ile aynı olması gerektiğini unutmayın.
Değişiklikleri kaydettikten sonra Storage Daemon servisini yeniden başlatın:
sudo service bacula-sd restart
Konfigürasyonunuzu test etmek için sudo bacula-sd -t komutunu kullanabilirsiniz.
Bacula File Daemon (FD) Yapılandırması (Uzak VPS)
Uzak Ubuntu 12.04 VPS’inizdeki File Daemon’ın ana yapılandırma dosyası /etc/bacula/bacula-fd.conf‘tur. Bu dosya, File Daemon’ın kendisini ve hangi Director’dan komut alacağını tanımlar.
sudo nano /etc/bacula/bacula-fd.conf
Aşağıda önemli bölümlerin ve uzak yedekleme senaryosu için gerekli değişikliklerin bir özeti bulunmaktadır:
FileDaemon Kaynağı
File Daemon’ın kendisi için tanımlamalar.
FileDaemon {
Name = ubuntu-vps-fd
FDPort = 9102
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
}
Name alanının Director yapılandırmasındaki Client kaynağının Name alanı ile eşleşmesi gerektiğini unutmayın.
Director Kaynağı (FD için)
File Daemon’ın hangi Director ile iletişim kuracağını tanımlar.
Director {
Name = bacula-dir
Password = "your_vps_fd_password" # Director'ın Client kaynağında tanımlanan şifre ile aynı olmalı
}
Name alanı, Director’ın Director kaynağındaki Name alanı ile eşleşmelidir. Password alanı ise Director’ın Client kaynağında tanımlanan şifre ile aynı olmalıdır.
Değişiklikleri kaydettikten sonra File Daemon servisini yeniden başlatın:
sudo service bacula-client restart
Konfigürasyonunuzu test etmek için sudo bacula-fd -t komutunu kullanabilirsiniz.
Yedekleme ve Geri Yükleme İşlemleri
Tüm bileşenler yapılandırılıp servisler yeniden başlatıldıktan sonra, Bacula konsolu (bconsole) aracılığıyla yedekleme işlerini yönetebilir ve geri yükleme işlemleri yapabilirsiniz.
Bacula Konsoluna Bağlanma:
Yedekleme sunucunuzda, komut satırına bconsole yazarak konsola bağlanın:
bconsole
Şifre sorulursa, Director yapılandırmasındaki Director kaynağının Password alanını girin.
Yedekleme İşlemini Başlatma:
Bir yedekleme işini manuel olarak başlatmak için run komutunu kullanın:
*run
Bacula size tanımlanmış işlerin bir listesini sunacaktır. Yedeklemek istediğiniz işin numarasını seçin (örneğin, BackupUbuntuVPS işiniz).
A job name must be specified.
The defined Job resources are:
1: BackupClient1
2: BackupUbuntuVPS
Select Job resource (1-2): 2
Seçimden sonra, Bacula size işin ayarlarını gösterecek ve onay isteyecektir. yes yazarak onaylayın.
Run Backup job
Job: BackupUbuntuVPS
Level: Full
Client: ubuntu-vps-fd
...
Run Job? [yes/no]: yes
İş başlatıldıktan sonra, konsolda işin durumunu görebilirsiniz. status dir komutu ile Director’ın, status client ile istemcilerin ve status storage ile depolamanın durumunu kontrol edebilirsiniz.
Yedekleme Durumunu Kontrol Etme:
*status dir
*status client
*status storage
Bu komutlar, çalışan işleri, bağlı istemcileri ve depolama birimlerini gösterir. İşin tamamlandığını veya bir hata oluştuğunu görmek için bu komutları kullanabilirsiniz. Ayrıca /var/log/bacula/bacula.log dosyasını da kontrol edebilirsiniz.
Dosya Geri Yükleme İşlemi:
Geri yükleme işlemi de bconsole üzerinden yapılır ve oldukça esnektir. Belirli bir işten, belirli bir tarihten veya belirli bir istemciden dosya geri yükleyebilirsiniz.
*restore
Bu komut sizi interaktif bir menüye götürecektir.
1. Client Seçimi: Hangi istemciden geri yükleme yapacağınızı seçin.
You have selected the following restore job:
Client: ubuntu-vps-fd
2. Yedekleme İşini Seçme: Geri yüklemek istediğiniz dosyaların hangi yedekleme işinde olduğunu seçin. Genellikle en son yedeklemeden geri yüklenir, ancak belirli bir tarihteki yedeklemeyi de seçebilirsiniz.
Enter a period or date to restore from: (e.g. "today", "yesterday", "lastweek", "lastmonth", "lastyear", or "yyyy-mm-dd hh:mm:ss")
done yazarak sonraki adıma geçin.
3. Dosyaları İşaretleme: Bir dosya tarayıcı arayüzü açılacaktır. Burada geri yüklemek istediğiniz dosya ve dizinleri mark komutu ile işaretleyebilirsiniz. ls ile dizinleri listeleyebilir, cd ile dizin değiştirebilirsiniz. İşaretlemeyi bitirdikten sonra done yazın.
To select the files, use the "mark " command, or click on the file in the GUI.
To unselect, use the "unmark " command.
To mark all files, use the "mark *" command.
To unmark all files, use the "unmark *" command.
Files marked: 0
4. Geri Yükleme Hedefi: Dosyaları orijinal konumlarına mı yoksa farklı bir dizine mi geri yükleyeceğinizi seçin. Genellikle test amaçlı olarak farklı bir dizine (/tmp/bacula-restore) geri yüklemek daha güvenlidir.
Restore where?
1: Restore to original location
2: Restore to different client
3: Restore to a different directory
Select option (1-3): 3
Enter the full path to the restore directory: /tmp/bacula-restore
5. Geri Yüklemeyi Başlatma: Onay ekranından sonra yes yazarak geri yükleme işlemini başlatın.
Geri yükleme işlemi tamamlandığında, belirtilen dizinde dosyalarınızın geri yüklendiğini kontrol edebilirsiniz.
Güvenlik ve Performans İpuçları
Uzak yedekleme sistemi kurarken güvenlik ve performans göz önünde bulundurulması gereken önemli faktörlerdir.
Firewall Ayarları
Daha önce bahsettiğimiz gibi, Bacula bileşenleri arasındaki portları yalnızca gerekli IP adreslerine açmak güvenlik açısından kritik öneme sahiptir.
# Yedekleme Sunucusu üzerinde (Director/Storage)
sudo ufw allow from YOUR_VPS_IP_ADDRESS to any port 9101 proto tcp # Sadece VPS'ten gelen Director bağlantılarına izin ver
sudo ufw allow from YOUR_VPS_IP_ADDRESS to any port 9103 proto tcp # Sadece VPS'ten gelen Storage bağlantılarına izin ver
Uzak VPS üzerinde (File Daemon)
sudo ufw allow from YOUR_BACKUP_SERVER_IP_ADDRESS to any port 9102 proto tcp # Sadece Yedekleme Sunucusundan gelen FD bağlantılarına izin ver
Şifreler ve TLS/SSL Kullanımı
Bacula, bileşenler arası iletişimi şifrelemek için TLS (Transport Layer Security) kullanabilir. Ubuntu 12.04’te bu özellik mevcuttur. TLS, özellikle uzak yedeklemelerde, hassas verilerin ağ üzerinden güvenli bir şekilde aktarılmasını sağlar. TLS yapılandırması, her bir Bacula bileşeninin yapılandırma dosyasına (Director, Storage Daemon, File Daemon) sertifika ve anahtar yollarını eklemeyi gerektirir. Bu, makalenin kapsamının ötesine geçebilir ancak ciddi bir güvenlik önlemidir. En azından, tüm Bacula şifrelerinizin güçlü ve benzersiz olduğundan emin olun.
Yedekleme Stratejileri
* Tam (Full) Yedekleme: Her seferinde tüm verilerin yedeklenmesidir. En güvenli ancak en yavaş ve en çok yer kaplayan yöntemdir.
Artımlı (Incremental) Yedekleme: En son herhangi bir* yedeklemeden (tam veya artımlı) sonra değişen verileri yedekler. En hızlı ve en az yer kaplayan yöntemdir ancak geri yükleme karmaşıktır (bir tam yedek ve tüm sonraki artımlı yedekler gereklidir).
Farklı (Differential) Yedekleme: En son tam* yedeklemeden sonra değişen verileri yedekler. Artımlıdan daha hızlı geri yüklenir (bir tam yedek ve en son farklı yedek yeterlidir) ancak artımlıdan daha fazla yer kaplar.
Genellikle “Full” ve “Incremental” veya “Full” ve “Differential” bir kombinasyon kullanılır. Örneğin, haftalık tam yedekleme ve günlük artımlı yedeklemeler.
Performans için Disk Seçimi
Yedekleme sunucusunda, yedekleme verilerinin depolandığı disklerin performansı önemlidir. SSD’ler veya RAID yapılandırmaları, hem yedekleme hem de geri yükleme sürelerini önemli ölçüde hızlandırabilir.
Log Takibi
Bacula’nın log dosyalarını düzenli olarak kontrol edin (/var/log/bacula/bacula.log). Olası sorunları veya uyarıları erkenden tespit etmenizi sağlar. Logları merkezi bir loglama sistemine (syslog, ELK stack vb.) göndermek de faydalı olabilir.
Sorun Giderme
Bacula kurulumu ve yapılandırması sırasında bazı yaygın sorunlarla karşılaşabilirsiniz.
* Bağlantı Sorunları:
* Firewall: En yaygın sorundur. İlgili portların (9101, 9102, 9103) hem yedekleme sunucusunda hem de uzak VPS’te açık olduğundan emin olun.
* IP Adresleri: Yapılandırma dosyalarındaki IP adreslerinin doğru olduğundan emin olun. Özellikle Client kaynağındaki Address ve Storage kaynağındaki Address.
* Servislerin Çalıştığından Emin Olun: sudo service bacula-director status, sudo service bacula-sd status, sudo service bacula-client status komutlarıyla servislerin çalışıp çalışmadığını kontrol edin.
* Veritabanı Hataları:
* bacula-dir.conf dosyasındaki Catalog kaynağındaki dbuser, dbpassword, dbname ve dbaddress bilgilerinin doğru olduğundan emin olun.
* Veritabanı kullanıcısının Bacula veritabanına erişim izinleri olduğundan emin olun.
* PostgreSQL veya MySQL servisinin çalıştığından emin olun.
* Şifre Uyuşmazlıkları:
* Director’daki Client kaynağının Password‘u ile File Daemon’daki Director kaynağının Password‘u aynı olmalı.
* Director’daki Storage kaynağının Password‘u ile Storage Daemon’daki Director kaynağının Password‘u aynı olmalı.
* bconsole‘a bağlanırken kullanılan şifre, Director’daki Director kaynağının Password‘u ile aynı olmalı.
* İzin Sorunları:
* Archive Device (Storage Daemon’da) dizininin bacula kullanıcısı tarafından yazılabilir olduğundan emin olun (chown, chmod).
* Bacula’nın WorkingDirectory ve Pid Directory dizinlerinin doğru izinlere sahip olduğundan emin olun.
* Log Dosyalarını İnceleme:
* /var/log/bacula/bacula.log ve /var/log/syslog dosyaları, sorunları teşhis etmek için çok değerli bilgiler içerir. Hata mesajlarını dikkatlice okuyun.
* Bacula servislerini hata ayıklama modunda başlatarak daha ayrıntılı bilgi alabilirsiniz (örn. sudo bacula-dir -d 100 -f).
Sonuç
Bu makalede, Ubuntu 12.04 işletim sistemine sahip bir VPS üzerinde Bacula kullanarak uzak yedekleme sisteminin nasıl kurulacağını ve yapılandırılacağını ayrıntılı bir şekilde ele aldık. Bacula’nın modüler mimarisi, güçlü yapılandırma seçenekleri ve esnekliği sayesinde, sunucularınızın verilerini güvenli bir şekilde yedekleyebilir ve olası felaket durumlarında veri kaybını en aza indirebilirsiniz.
Kurulum ve yapılandırma adımları, Bacula’nın temel bileşenlerinden başlayarak Director, Storage Daemon ve File Daemon’ın ayarlanmasını, veritabanı entegrasyonunu ve yedekleme/geri yükleme işlerinin oluşturulmasını kapsadı. Ayrıca, güvenlik duvarı ayarları, şifre yönetimi, TLS kullanımı, yedekleme stratejileri ve sorun giderme ipuçları gibi önemli konulara da değindik.
Unutulmamalıdır ki, Ubuntu 12.04 LTS’nin uzun süreli desteği (EOL) sona ermiştir. Bu, sistemin artık güvenlik güncellemeleri almadığı anlamına gelir ve üretim ortamlarında kullanılması önerilmez. Ancak, bu makale belirtilen spesifik ortamda Bacula’nın nasıl yapılandırılacağına dair teknik bir rehber sunmaktadır. Modern sistemlerde Bacula’nın kurulum ve yapılandırma adımları benzer olsa da, paket isimleri, varsayılan yollar ve bazı özellikler farklılık gösterebilir.
Bacula, bir kez doğru şekilde yapılandırıldığında, veri güvenliğiniz için sağlam bir temel oluşturur. Düzenli test yedeklemeleri ve geri yüklemeleri yaparak sisteminizin çalıştığından emin olmak, herhangi bir felaket anında kritik öneme sahiptir. Verilerinizin güvende olması, dijital varlıklarınızın korunması için atılacak en önemli adımlardan biridir.