Bloğu nasıl sunucuya yüklüyorum?
Bu bloğu barındırdığım sunucumda, rsync kullanma ihtimalim yok, çünkü sadece html dosyaları upload edebildiğim bir paket kullanıyorum. SSH erişimi gibi bir şansım yok. Bundan önce dosyaları sunucuya atmak için, filezilla kullanıyordum. Filezilla ile upload yaparken, boyutu farklı ise veya kaynak daha yeniyse upload et gibi bir seçeneği var. Bu az çok işimi görüyordu. Ancak bunun da kendine göre bir takım sıkıntıları var. Bazen output klasörünü silip baştan oluşturma ihtiyacı duyuyorum. Bu gibi durumlarda, çoğu dosyanın içereği aslında değişmemiş olsa bile, tüm dosyaları baştan upload ediyor. Bir de bazen dosyaları yanlış yere atma gibi bir problem yaşıyorum. Geçenlerde anasayfa'nın index sayfası üzerine, başka bir klasörün index sayfasını atmışım mesela, biraz geç farkettim. Ayrıca, önceden attığım ama sonradan sildiğim içeriğin takibi yapmam da mümkün olmuyordu bu şekilde.
Ben de şöyle birşey düşündüm, bütün dosyaların sha256 digest'lerini bir dosyada tutuyorum. Yükleme yapacağım zaman, eski digest'leri yenileriyle karşılaştırıyorum. Böylece, hangi dosyalar güncellenmiş, hangileri silinmiş, hangi dosyalar eklenmiş görebiliyorum. Dosyaları yüklemek için de, başta Python'un ftplib modülünü denedim, ama benim amaçlarım için fazla low-level bir modül olduğunu anladım. Daha sonra ftputil modülünü buldum. Bu Python'un kütüphanesine göre daha high-level bir kütüphane. İşimi bir hayli rahatlattı. Kodları da göstereyim:
Bu hash_utils.py dosyası. 3 tane fonksiyonu var. create_hashes
o anki durumun hash'lerini oluşturuyor. write_hashes
kendisine verilen hash'leri dosyaya yazıyor. get_hashes
ise dosyadaki hashleri okuyup döndürüyor.
Bu da deploy.py dosyam:
Bu dosya, yeni ve güncellenmiş dosyaları sunucuma yazıyor, eğer silinmiş bir dosya varsa, sunucumdan siliyor.