Notlarınızı Github’da Otomatik Olarak Yedekleyin

Sizde benim gibi bilgisayarınızda not tutuyorsanız sizde notlarınızı bir yere depolamak isteyebilirsiniz. Ben not tutmak için (Ubuntu 19.04 Kullanıyorum) Boostnote uygulaması kullanıyorum ve Boostnote uygulaması notları sistemde bir dizin altıda .cson uzantılı olarak tutuyor bende bu notlarımı hem Github da paylaşmak için hemde yedeğini almak için Bash Script ile bir script yazdım bu yazımda onu anlatacağım.

Script temelde şu işlemleri yapacak sistem açıldığında ilk olarak internet bağlantısı kontrolü yapacak şayet internet bağlantısı varsa bütün Boostnote notlarınızı alıp Github a yükleyecek ve bunu sistem başlatıldığında yapacak ve siz not aldıkça otomatik olarak notlarınız Github a yüklenecek hem yedek almış olacaksınız hem de insanlarla paylaşmış olacaksınız (eğer private repositoriy oluşturmazsanız 🙂 ).

Videolu görsel ugulama da mevcut ister videodan takip edin ister blogdan 🙂

Ön Gereksinimler

  • Git

  • ssh client
  • autonote.sh script from Eredot_PK&FR (https://github.com/eredotpkfr/autonote.sh)

Ön gereksinimleri tamamladıktan sonra yapmamız gereken bir kaç işlem var.

Yapılandırma

Şimdi şöyle bir sıkıntı var Github’a dosya push ederken bize parola ve kullanıcı adı soruyor parola sormamazı için ssh ile public ve private key oluşturacağız ve private keyimizi kullanarak parolasız bir şekilde push edebileceğiz şimdi gelelim private ve public key oluşturmaya.

Ev dizinimizin altında bulunan .ssh klasörüne gidelim ve aşağıdaki komut ile private ve public key oluşturalım. Keyleri oluştururken passphrase (parola) soracak isterseniz parola koyabilirsiniz. Private key’i okuma esnasında size bu parola sorulacaktır isterseniz koyun isterseniz koymayın ben koyma taraftarıyım.

NOT: Script çalışırken de bu parolayı sorar. 1 defa girdikten sonra belli bir süre sormaz, süresini bilmiyorum sistem yeniden başlatılıncaya kadar da olabilir 🙂 .

-t parametresi ile şifreleme yapılacak algoritma belirlenir.

Screenshot from 2019 05 13 15 16 44 300x183 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

Komutu çalıştırdıktan sonra 2 farklı dosya oluşacak bunlar “id_rsa” ve “id_rsa.pub”. .pub uzantılı olan sizin public keyinizdir diğeri ise private keyinizdir şimdi .pub uzantılı olan dosyanın içeriğini kopyalıyıp Github da ayarlar kısmındaki SSH and GPG Keys bölümünden yeni bir SSH Key oluşturup oraya yapıştıralım.

Screenshot from 2019 05 13 15 22 20 300x140 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

Screenshot from 2019 05 13 15 23 08 300x141 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

SSH Keyler ile ilgili olan işimiz burayakadardı şimdi ise Github’dan bir repository oluşturalım ve gerekli git işlemlerini yapalım.

Screenshot from 2019 05 13 15 26 26 300x140 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

Şimdi ise Boostnote uygulamasının notlarımızı kaydettiği dizine gidelim ve gerekli git işlemlerini yapalım.

Dosyaları pushlamadan önce HTTPS protokolü kullanan linklerimizi SSH protokolüne çevirmemiz gerekiyor.

Screenshot from 2019 05 13 15 34 58 300x183 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

Şimdi push edebiliriz, ben private key’e parola koyduğum için benim karşıma parola ekranı çıkacaktır siz koymadıysanız parola sormaz. Bir kereliğe mahsus bağlantıya devam etmek istiyormusun (yes/no) gibi bir soru yöneltecek yes dediğimizde bundan sonraki bütün push işlemlerinde parola sormadan direkt push edecek (Bende soracaktır çünkü private keyime parola koydum 🙂 ).

Screenshot from 2019 05 13 15 36 48 300x184 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

Scriptimiz aşağıdaki gibi benim yazmış olduğum script. Kendinize göre yapılandırmak isterseniz hangi dosyaların dizinine gitmesini istiyorsanız dizin olarak orayı vermeniz yeterlidir. Script sistem her açıldığında çalışacak. Çalıştığında internet bağlantısını kontrol edecek ve internet bağlantısı varsa belirttiğiniz dizine gidip gerekli git komutlarını çalıştıracak eğer silinmiş dosya varsa github’dan da silinsinmi diye bir uyarı verecektir yes (evet) derseniz github’dan da silecektir eğer modified (değiştirilmiş) notlar varsa yada yeni oluşturulmuş notlar varsa onlarıda direkt Github’a yükleyecek. Sadece notlarınız için değil Github’a yedeklemek istediğiniz dosyalar varsa yada üzerinde sürekli aktif olarak çalıştığınız bir projeniz varsa onun için de kullanılabilir Scripti açık bir şekilde paylaşacağım gerekli işlemleri yaparak yada kendinize göre yapılandırarak kaynak belirtmek şartı ile kullanabilirsiniz.

push_files fonksiyonun içerisindeki “cd /home/eredot_pkfr/n0t3s/notes/ && git add *” satırındaki dizini değiştirip işlemleri hangi dizine uygulamasını istiyorsanız yazabilirsiniz benim notlarım “/home/eredot_pkfr/n0t3s/notes/” dizini altında ben bu dizini belirttim. Scripti kendinize göre yapılandırıp kullanabilirsiniz.

Şimdi ise gelelim sistem başlatıldığında bu sriptin çalışmasına.

Ek olarak 1 de şöyle bir özellik ekleyelim bu scriptin bulunduğu dizini kendi environment değişkelerimizdeki PATH değişkenimize de verelim ve biz hangi dizinde olursak olalım bu komutu çalıştırabilelim bunun için çalıştırmamız gereken komut aşağıdaki gibi.

Sizde script hangi dizinde bulunuyorsa orayı verin. İyi tamam bu işlemi yaptık biz nerede olursak olalım autonote.sh yazdığımızda script çalşacak fakat sistemi yeniden başlattığımızda çalışmayacaktır bu işlemi kalıcı hale getirmek için ev dizininmizdeki .bashrc dosyasını açıp en alt satıra bu kodu ekleyelim ek olarakta bir takma isim ataması yapalım daha güzel olsun 🙂 .

NOT: .bashrc dosyanızı düzenlemek istemiyorsanız scripti /bin dizini altına atın buda çözüm olacaktır.

Screenshot from 2019 05 14 13 58 35 300x183 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

Takma isim atamasınıda yaptık artık komut satırından autonote komutunu çalıştırdığımızda scriptimiz arkaplanda çalışacak ve çıktılarıda /dev/null dosyasına yönlendirecek biz arkaplanda olan işlemleri görmeyeceğiz script zaten bize bildirim gönderiyor yapılan işlemlerle ilgili :).

NOT: eredot_pkfr kullanıcısı için her bash açıldığında bu komutlar otomatik olarak çalıştırılacaktır. Eğer bütün kullanıcılar için bu komutların çalışmasını istiyorsanız /etc/bash.bashrc dosyasına aynı satırları eklemeniz yeterlidir. (Eğer öyle bir dosya yoksa /etc/bashrc dosyası arayınız.)

Şimdi ise startup command ekleyelim ve sistem ilk açıldığında scriptimiz çalışsın.

Bunun için alt + f2 tuş kombinasyonuna basıp gnome-session-properties komutunu girelim ve add butonuna tıklıyıp gerekli alanlar doldurduktan sonra kaydedip çıkalım.

Screenshot from 2019 05 14 14 21 27 300x258 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

Burada command kısmına girmemiz gereken komut direkt scriptin kök dizinden itibaren yolunu belirtmek, ben şu şekilde girdim.

Bizim oluşturduğumuz takma ad ve her yerde çalışan şu autonote.sh komutu burada işlemiyor nedenini anlamadım yaptığım denemeler sonucu gördüm 🙂 sizde bu şekilde yaparsanız sorun olmaz diye düşünüyorum.

Bu işlemide tamamladıktan sonra isterseniz autonote komutu için kısayol tuş atamasıda yapabiliriz. Biz klavyeden bir kaç tuşa basalım ve notlarımız Github’da yedeklensin :)) . Bunu için Ubuntu da Settings > Devices > Keyboard Kısmına gelip yeni bir tuş kombinasyonu ekleyelim ben ctrl + alt + a tuş kombinasyonunu kullandım.

Screenshot from 2019 05 14 14 22 36 300x224 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

Bütün işlemlerimiz bukadar ctrl + alt + a tuş kombinasyonuna bastığımızda notlarımız yedeklenecek 🙂 bundan güzel ne olabilirki 🙂

Screenshot from 2019 05 15 01 22 21 300x184 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

Screenshot from 2019 05 15 01 23 09 300x38 - Notlarınızı Github'da Otomatik Olarak Yedekleyin

SONUÇ

Yazmış olduğum bu scripti kendi sisteminize göre yapılandırıp gerek benim gibi notlarınız için gerek projeleriniz için kaynak belirtmek şartı ile kullanabilirsiniz. Bunun yanında crontab uygulaması ile çok daha etkili bir şekilde kullanılabilir. Fikrimce çok faydalı bir script oldu Github da da paylaştım scripti oradan indirebilirsiniz (yıldız atmayı unutmayın 🙂 ). Herkese iyi çalışmalar bir sonraki yazımda görüşürüz.

GitHub : https://github.com/eredotpkfr/autonote.sh