S3, EC2, CloudFront vb. hizmetleriyle bilinen ve kullanılan Amazon’un Cloud Drive (ACD olarak kısaltacağım) adında yeni sayılabilecek bir projesi var. Google Drive, Yandex.Disk, Microsoft OneDrive ve tabii ki Dropbox’a rakip. Rekabetçi mi peki? Limitsiz depolama = $60/yıl desem? Amazon Prime iseniz ilk 3 ay ücretsiz hem de.

Yazının yazılış tarihi itibariyle en rekabetçi (ucuz ve AWS’den kaynaklı repütasyonu olan, güvenilir) bulut depolama çözümü bu.

Yazının devamında FreeBSD (FreeNAS) üzerinde ACD’a nasıl encrypted yedek alındığını paylaşacağım. Tüm *NIX’ler için aşamalar takip edilebilir. Ayrıca Windows kullanıcıları için de yanıtlar mevcut.

Önceki yazılarda bahsettiğim NAS’ı yapınca yedekleme konusunda da bir çözüm bulmam gerekti. Açıkçası bu konuya ilk girdiğimde aklımda Backblaze vardı, operasyonel sebeplerle sabit disk marka modelleri arasında güvenilirlik/ömür analizi yapıp bunu ücretsiz olarak paylaşmaları açıkçası benim çok hoşuma gitmişti, ayrıca kullanacağım sınırsız backup hizmetinin fiyatı da $5/ay şeklinde fiyatlandırılmıştı. Bu firmanın bu hizmetinin rakibi CrashPlan (bu hizmeti diyorum çünkü Backblaze’ın B2 adında Amazon S3 rakibi cloud storage çözümü de var, onunla karıştırılmasın).

Yazının konusu bu olmadığı için kısa geçiyorum; bu iki alternatif arasından CrashPlan’ı seçtim önce. 1 ay civarı yedekleme yaptıktan sonra ~1TB uploadı çöpe atarak hizmeti iptal ettim.

Potansiyel müşterilere iki hizmet için de mini-inceleme;

  • >100m dosyaya sahipseniz ve dert sahibi olmak istemiyorsanız CrashPlan’ı denemeyin bile. Client’ı native olarak tekrar yazarlarsa test edin, onun haricinde aman diyeyim. Backblaze clientı native, onda performans daha iyi olacaktır, fakat:
  • İkisi de “kesinlikle, vallahi billahi throttling uygulamıyoruz” deseler de babalar gibi throttle ediyorlar uploadınızı. 5TB upload’ı geçerek deneyin, görün. Burada not düşeyim, klasik 5MBit upload’a sahip bir bağlantı ile kullanacaksanız ~5’in altına inmiyor, yani her halükarda satüre eder linkinizi. Ama ev kullanıcısı dahi olsanız, ISS’ler artık değişik isimler altında upload hızı artırıcı hizmetler (turbolu butonlu isimlere sahip oluyorlar) sunuyor. Hızlı bir başlangıç yapmanız için bu paketleri birkaç günlüğüne öneririm. Fakat backup sağlayıcınız trafiği kısarsa siz de hız artırımı için para verdiğinizle kalırsınız.
  • Hayır, makina CrashPlan’ın dedup, encryption ve compressing işkencesine dayanacak kapasitede. Resource starvation yüzünden düşük upload almıyorum yani (acd ekran görüntüsüne bakın, starvation orada var, açıkladım).
  • ACD 50GB üzeri dosyaları desteklemiyor. Toplam yüklenecek dosya sayısı/boyutunda limit yok. Tek dosya limiti 50GB. Buna dikkat edin.

Throttle yok diyen CrashPlan:

sp1

Amazon Cloud Drive (encrypted remote kullandığım için sisteme yüklenince upload yavaşlıyor, grafikteki dalgalanma ondan; ayrıca rclone istatistiğindeki mb/s değeri session geneli, anlık değil):

sp2

 

Amazon Cloud Drive’ı almak için https://www.amazon.com/clouddrive adresinden Amazon hesabınızla girmeniz yeterli. Prime varsa 3 ay ücretsiz veriyor, yoksa 1 ay veriyor (diye biliyorum, kontrol etmedim; bakıverin).

FreeNAS için kurulum işlemi detayı aşağıda. Siz farklı bir *NIX’e kuracaksanız FreeNAS için olan adımları basitçe atlayın, gerisi aynı çünkü.

  • ACD hesabınızı alın
  • FreeNAS yönetim ekranından yeni bir jail oluşturun, adına rclone deyin. Mahmut da diyebilirsiniz.
  • Yedeğini alacağınız datasetleri jail’inize tanıtın. Jails>Storage altından Add Storage; Jail olarak rclone, Source olarak kaynak klasör, Destination için /mnt/istediğinizbirisim. (Kaynak dataset jail içinde seçtiğiniz destination’a mapleniyor, yani jail içi /mnt/istediğinizbirisim diyerek source’a erişiyorsunuz)
    Read-only seçin, garanti olsun. Yedek dediğiniz sadece okumalı.
  • FreeNAS makinanıza SSH ile girin, sonra:
  • jexec rclone
    curl -O http://downloads.rclone.org/rclone-current-freebsd-amd64.zip
    unzip rclone-current-freebsd-amd64.zip
    
    • rclone diyerek her yerden ulaşabilmek için binaryi /usr/sbin içine atabilirsiniz, bunun için indirdiğiniz rclone klasörünün içine girmeniz lazım. Versiyon değişebileceğinden buraya yazmam mümkün değil; şu şekilde yapacaksınız.
      cp rclone-v[tab tuşu]/rclone /usr/sbin
      chmod 755 /usr/sbin/rclone
      
  • rclone hazır, şimdi konfigürasyona geçiyoruz.
    rclone config

    çalıştıralım. Birkaç soru soracak, sırasıyla yanıtları:

    • n (yeni remote kurulumu)
    • acd (yeni kuracağınız remote’a isim veriyorsunuz, ben acd dedim, siz Mahm.. neyse)
    • 1 (remote tipi olarak Amazon Cloud Drive seçiyoruz)
    • n (auto config kullanmayalım)
  • Şimdi FreeNAS gibi headless bir makina kullanıyorsanız bütün sürecin en gerizekalı bölümüne geldik. Authentication key alabilmek için içinde web tarayıcısı barındıran bir sistem gerekiyor. Çünkü OAuth token alabilmek için rclone dahili bir webserver çalıştırıyor, OAuth token callbackı olarak onu veriyor. Eğer desktop bir Linux makinaya kuruyorsanız bu adımları atlayın, sizde zaten tarayıcı var.
    • Farklı bir (sanal?) makinada live linux çalıştırın, Ubuntu mesela. Ona da rclone kurun, config’i çalıştırdığınız adıma kadar gelin, bunu çalıştırın:
      rclone authorize "amazon cloud drive"
    • Açılan sayfada Amazon hesabınızla giriş yapın, rclone’a izin verilsin mi diyecek, tamam deyin. Konsola geri dönüp —> ile <—- arasında kalan access token’ı kopyalayın. (birden çok satır olacak)
    • Bu sanal makinayla işimiz bitti.
  • FreeNAS’a geri dönüp kopyaladığınız token’ı yapıştırın.
  • y’a basın.  İşlem tamam.
  • Çalışıyor mu kontrolü yapın:
    rclone lsd acd:/

    Bu komutun sonrasında Cloud Drive’ınızdaki klasörlerin listesi gelmeli. Daha bir şey yüklemediğiniz için Photos vs. default klasörler gelecektir.

Tebrikler. Buraya kadar hatasız geldiyseniz Türkiye’nin büyük bir kısmından bilgisayar okur-yazarlığı konusunda üstünsünüz. Aynen devam, çoğalmanız ve gelişmeniz dileğiyle.

Opsiyonel: Encrypted remote kurulumu

Buraya kadar yapılanlarla ACD’a yüklemek için hazırsınız. Yüklediğiniz dosyalar Amazon güvencesinde duracaklar. Herhangi bir cloud provider’a güvenmiyorsanız yüklediğiniz dosyaları lokalde encrypt ederek upload etmeniz mümkün. Bu sayede cloud provider’ınız (bu örnekte Amazon) patlar ve dosyalarınız yayılırsa koyduğunuz encryption katmanı yüzünden dosyalar kimsenin işine yaramayacaktır, tabii encryption key’i çaldırmazsanız.

rclone’da encryption katmanını da bir remote gibi düşünmüşler, dolayısıyla yeni bir remote kurar gibi yapacağız.

rclone config
  • n (yeni remote kurulumu)
  • acde (encrypted manasında e koydum sonuna)
  • 5 (remote tipi olarak crypt seçiyoruz)
  • Burası karar noktası; tüm Drive’ınızı encrypt etmek istiyor musunuz, istemiyor musunuz karar vermelisiniz. Tamamı şifrelensin derseniz
    acd:

    yazarak geçebilirsiniz. acd burada şifresiz remote’ınızın adı, ne verdiyseniz isim olarak onu yazmanız lazım.

  • Filename encryption soracak. Şu anki rcrypt implementasyonu filename uzunluğu limiti enforce ediyor, benim çok uzun dosya isimlerim var, bu yüzden OFF seçtim. OFF derseniz dosya adlarınız aynen kalıyor, sonuna .bin uzantısı ekleniyor. ON derseniz dosya ve klasör adları bakarak anlayabileceğiniz şekilde olmuyor, ancak rclone kullanarak görebiliyorsunuz.
  • Şifre oluşturma aşaması; iki adet oluşacak. Kriptografik olarak güçlü iki adet şifre belirleyin ve kullanın.

Eğer encrypted remote kullanacaksanız remote adı olarak acde kullanacaksınız, acd encrypt edilmemiş remote. acde ile yedek alıp acd ile erişmenize (ya da tam tersine) herhangi bir engel koymuyor rclone, fakat böyle bir şey yaparsanız saçma bir iş yapmış olursunuz, dosyalarınızı bozabilirsiniz. Yapmayın.

Yedek alma senaryoları ve önerileri

Amazon Cloud Drive, throttling uygulamıyor demiştik. Fakat API’si rate limiting uyguluyor. Detaylarını rclone.org adresinden öğrenebilirsiniz, uzun hikaye olduğu için girmiyorum. Bilmeniz gereken, rclone rate limit aware bir yazılım, dolayısıyla limite takılınca işlem fail olmuyor, düzgün bir failsafe implementasyonu var. -v (verbose) çalıştırmadığınız sürece zaten görmüyorsunuz bile bu anlattığım mevzuyu. Yine de bilin.

Yedek konusu iki aşamalı. Önce bir “initial” backup, sonra da bunun üzerine düzenli backup. Initial dediğimiz, yedeğinizin ilk defa aktarılması. Bu çok dosyanız varsa Internet bağlantınız oranıyla yavaş olacak bir süreç. Sonraki yedeklemeler buna nazaran daha hızlı gerçekleşecek (çünkü önceden yüklenmiş dosyalar tekrar yüklenmiyor).

Bu yüzden normal ev kullanıcıları için initial upload planı şu şekilde:

  • Initial upload için ISS’nizin buton, düğme, turbo vs. isimdeki günlük upload booster hizmetini alacaksınız, yoksa çok beklersiniz. Bu hizmetten maksimum faydalanabilmeniz için optimizasyon yapmaya çalıştım.
  • Dosyalarınızı analiz edin. ACD API bazlı olduğu için küçük dosyalarda bir overheadı var. Küçük küçük milyon tane dosya yüklemek ne yaparsanız yapın büyük tek parça dosyalar yüklemekten uzun sürüyor. Aynı bilgisayarınızdaki gibi.
  • Atıyorum 1TB yedek alınacak dosyanız var. >100MB olan dosyaları inceleyin, yedeğinizin yüzde kaçını oluşturuyor. Eğer %20 altı ise >10MB dosyaları inceleyin. Totali %10 altında ise upload hızlandırıcı almanızın avantajı pek yok.
  • Burada büyük dosyaların yüklenmesini hızlandırmaya, küçük küçük olan dosyaları da sonraya bırakmaya çalışıyorum. Yani turbonuz aktifken >100MB (ya da yukarıdaki maddede yazılan analiz sonucu ne elde ediyorsanız) dosyaların uploadını yapacaksınız. Turbonuz bitince de küçükler dahil yüklemeyi tekrar çalıştıracaksınız.
  • rclone sync zaten yüklenmiş dosyaları geçtiği için yavaş internet, küçük dosyaların yavaş uploadı ile beraber devam edecek.

 

Yedek alma komutunuz rclone sync:

rclone sync /mnt/lokalKlasor acde:hedefKlasor --checksum --max-size 50G

>100MB üzeri dosyalar yüklensin isterseniz:

rclone sync /mnt/lokalKlasor acde:hedefKlasor --checksum --max-size 50G --min-size 100M

Geri yükleme (kopyalama) komutunuz rclone copy:

rclone copy acde:geriYuklenecekKlasor/GeriYuklenecekdosya.zip /lokalKlasor --checksum

Aynı işi klasör bazında yapacaksanız rclone sync öneririm, yukarıdaki örnekte kaynak ile hedefin yerini değiştirin. Önce remote sonra local olsun yani. Bu sayede işlem yarım kalırsa devam edebilir (senkronizasyon).

Kolay gelsin.