Uygulama

Gickup ile git depolarınızı nasıl yedekleyebilirsiniz?

Git, açık ara en çok kullanılan sürüm kontrol sistemidir. Aslen Linus Torvalds tarafından oluşturulmuş, ücretsiz ve açık kaynaklı bir yazılımdır ve GPLv2 lisansı altında yayınlanmıştır. Github veya Gitlab gibi birçok çevrimiçi platform, geliştiricilerin git’i arka uç olarak kullanarak genel veya özel depolardaki kodlarındaki değişiklikleri kolayca depolamasına ve izlemesine olanak tanır.

Bu yazıda, git depolarımızın yedeklerini oluşturmamıza ve bunları yerel olarak veya bir platformdan diğerine yansıtmamıza izin veren, Go’da yazılmış güzel bir araç olan gickup hakkında konuşuyoruz.

Kurulum

Gickup açık kaynaklı bir yazılımdır: kodu Github’da barındırılır. Yazma anında, araç henüz herhangi bir Linux dağıtım deposunda mevcut değildir, bu nedenle, onu derlemek istemiyorsak, temelde onu kullanmanın iki yolu vardır:

  • önceden derlenmiş dosyayı Github’dan indirerek
  • özel Docker Görüntüsünü kullanarak

Bu seçenekleri keşfedelim.

Önceden derlenmiş dosyayı kullanma

0.10.17 yazılırken, gickup’ın mevcut en son sürümüdür; önceden derlenmiş dosyayı projenin Github’daki yayınlar sayfasından indirebiliriz. Tüm büyük işletim sistemleri ve en yaygın mimariler için önceden derlenmiş dosyalar mevcuttur. Verilerin bütünlüğünü doğrulamak için Linux sürümünü, *checksum.txt dosyasıyla birlikte indirmek istiyoruz. Gickup’ı makinemde çalıştırmak için “amd64” sürümünü indirmem gerekiyor:

$ curl --location --remote-name-all https://github.com/cooperspencer/gickup/releases/download/v0.10.17/{gickup_0.10.17_linux_amd64.tar.gz,gickup_0.10.17_checksums.txt}

Tarball sağlama toplamını doğrulamak için, iki dosyanın aynı dizinde olduğunu varsayarak (yukarıdaki komutu çalıştırmanın sonucu olarak), şunu çalıştırabiliriz:

$ sha256sum -c gickup_0.10.17_checksums.txt

Tarball’ın sağlama toplamı dosyada yazılana karşılık gelirse, aşağıdakine benzer bir mesaj görmemiz gerekir:

gickup_0.10.17_linux_amd64.tar.gz: OK

Çalıştırdığımız tarball’ı çıkarmak için:

$ tar -xvzf gickup_0.10.17_linux_amd64.tar.gz

Uygulamayı kullanmak için, çıkarılmış dosyayı tıpkı diğer yürütülebilir dosyalar gibi başlatmamız ve yapılandırma dosyasının yolunu (birazdan daha fazlası) ilk argüman olarak geçirmemiz yeterlidir:

$ ./gickup /path/to/conf.yml

Özelleştirilmiş Docker görüntüsünü kullanma

Önceden derlenmiş ikiliyi kullanmak istemiyorsak, alternatif olarak docker-compose.yml dosyasını indirebilir ve docker veya podman kullanarak aracı bir kapta çalıştırabiliriz. Dosyayı doğrudan komut satırından indirebiliriz:

$ curl --remote-name https://raw.githubusercontent.com/cooperspencer/gickup/main/docker-compose.yml

Bir sonraki adım, bu durumda conf.yml olarak adlandırılması gereken yapılandırma dosyasını az önce indirdiğimiz dosyanın aynı dizinine yerleştirmektir. Yedeklemeyi başlatmak için aşağıdakileri çalıştırmamız yeterlidir:

$ sudo docker-compose up

Veya docker yerine podman kullanılıyorsa:

$ podman-compose up

Docker kullanıyorsanız ve kullanıcınız “docker” grubundaysa sudo; bunun yerine podman, root ayrıcalıkları olmadan çalışabilir.

Gickup’ı çalıştırmak için kullanabileceğimiz talimatlar bunlar. Aracın ne yapması gerektiğini ve nasıl yapması gerektiğini yukarıda bahsettiğimiz konfigürasyon dosyası üzerinden belirtebiliriz. Kullanımına bir örnek görelim.

Hızlı yapılandırma dosyası

Gickup, yedeklerimizin kaynaklarını ve hedeflerini ve diğer yararlı eylemleri tanımladığımız bir YAML yapılandırma dosyasından yararlanır. Bazı örnekler verelim. Bu eğitimin hatırına tüm depolarımı Github’dan yerel makineme indireceğim:

source:
  github:
    - token: <github-token>
      username: egdoc

destination:
  local:
    - path: ~/Downloads/gitbackup
      structured: true
      zip: true
      keep: 5
      bare: true

Yukarıdaki örnekte, kaynak sözlükteki github anahtarını kullanarak Github depolarımı yedeklemek istediğimi belirttim. Hem genel hem de özel depoları yedeklemek istediğim için, belirteç anahtarının argümanı olarak bir belirteç sağlamam gerekiyordu. Bir Github belirteci oluşturmak oldukça kolaydır: Github profilinizde “Ayarlar -> Geliştirici ayarları -> Kişisel erişim belirteçleri”ne gitmeniz, ayrıntılı veya kişisel bir belirteç seçmeniz ve ona gereken minimum ayrıcalık kümesini vermeniz yeterlidir. . Bu durumda, aşağıdaki resimde gösterildiği gibi “repo” kutusunu işaretlemeniz yeterli olacaktır:

Creating a personal token with "repo" privileges on Github
Github’da “repo” ayrıcalıklarına sahip kişisel bir belirteç oluşturma

Once the token is generated, keep note of it, since you will not be able to visualize it in the future.

Yapılandırma dosyasında kullandığım bir sonraki anahtar, klonlama işlemi için kullanıcıyı belirtmek üzere kullanıcı adıdır. Bunun yerine hedef sözlüğü ile yedekleme hedefini belirledim. Bu durumda, depoların yerel olarak klonlanmasını istediğim için, yerel bir yol belirtmek için yol anahtarını ve kaynak web sitesini ve kullanıcı adını yansıtan bir dizin ağacındaki depoları gickup klonlamak için yapılandırılmış anahtarı kullandım. Bu durumda Github’da barındırılan depolar ~/Downloads/gitbackup/github.com/egdoc dizinine kopyalanacaktır.

Zip anahtarı, klonlanan her deponun sıkıştırılmasını istediğimizi belirtmek için kullanılır; bunun yerine, kaç adet “sıkıştırılmış” yedeklemenin saklanması gerektiğini belirtmek için kullanılır. Son olarak çıplak anahtarın değerini true olarak ayarlayarak depoların “bare” olarak klonlanmasını istediğimizi belirttim.

Havuzları bir platformdan diğerine yansıtma

Önceki örnekte Github’da barındırılan tüm depolarımı yerel makinemde klonladım. Bununla birlikte, gickup kullanarak depoları doğrudan bir platformdan diğerine klonlayabiliriz. Tüm depoları Gitlab’a yansıtmak istediğimi varsayalım. İşte yazabileceklerim:

source:
  github:
    - token: <github-token>
      username: egdoc

destination:
  gitlab:
    - token: <gitlab-token>
      username: egdoc

Gördüğünüz tüm örneklerde, tam platform URL’sini değil, yalnızca platform adını (ör. “github” veya “gitlab”) belirttim. Bu mümkündür çünkü gickup bu platformlar için yerleşik desteğe sahiptir. Kaynak olarak desteklenen platformlar şunlardır:

  • Github
  • Gitea
  • Gogs
  • Gitlab
  • Bitbucket
  • Onedev
  • Sourcehut

Ayrıca yukarıdaki listede yer almayan platformlar hakkında bilgi belirtmek için “Any” tuşu kullanılabilir.

Bunun yerine hedef olarak desteklenen platformlar şunlardır:

  • Gitea
  • Gogs
  • Gitlab
  • Local

Bu eğitimde, git depolarımızı yerel olarak veya bir web platformundan diğerine yansıtmak için kullanabileceğimiz, Go’da yazılmış güzel bir açık kaynak araç olan gickup hakkında konuştuk. Her iki sonucun da nasıl elde edileceğine dair iki küçük örnek verdik; proje hakkında daha fazla bilgi edinmek için resmi belgelere göz atabilirsiniz.

Yazının orijinalini buradan okuyabilirsiniz.