Development Android Partition Yedekleme

Zenlty

Firmware Team Leader at OMIX Mobile Technology
VIP Üye
Katılım
23 Haz 2018
Mesajlar
1,118
Tepkime puanı
5,737
Puanları
113
Yaş
22
Konum
Beşiktaş , İstanbul , Türkiye
Çevrimdışı
1610656180119.png
Merhaba,
Bu konu ZENLTY tarafından GSMTURKEY üyelerine açılmıştır.
Bilgiler alıntı değildir, tecrübelerimden irdelenmiştir.
Partitionların yedeklenmesi ile ilgili bir konudan bahsedeceğim.
Yedekleme işleminin mantığından başlayalım.
Ana partition : Cihazınızın bölümlerinin tutulduğu ana dizinlerdir.
Sdcard : Çıkartılabilir hafıza kartı değil, cihazın dahili depolama birimidir.
Yedekleme işlemi yaparken linux'un 'dd' aracını kullanacağız.
Diğer konularımda da bahsettiğim gibi android, linux çekirdeği kullanıyor. Bu linux altyapısındaki araçları kısmen kullanabileceğimiz anlamına geliyor.
Ana partition belirlemesi yapmanız gerekiyor.
Ana partition belirlemesinin ardından istediğimiz yedeği alacağız.
Ana partition belirleme hakkında konularım mevcut inceleyebilirsiniz. Ana partition genel olarak şuna benzer : /dev/block/bootdevice/by-name/
'dd' aracı en basit şekliyle şu şekilde çalışıyor :
Kod:
dd if=/path/ of=/path
Path dediğimiz bölüm aslında dizin anlamına gelir.
Biz dizin yerine partition yazacağız, zaten her partition alanı bir dizinden geliyor.
if=/path yazdığımız kısım, path bölümündeki dosyayı of=/path yazdığımız kısımdaki path alanına bir nevi yazdırıyor.
Ana partitionumuzu path, yedekleme yerini de sdcard yapmalıyız.
Bu durumda if=/partition of=/sdcard olduğu durumda partition bilgisini olduğu gibi sdcard a yazacaktır.
Ancak olduğu gibi üstünkörü sdcard yazamazsınız. Yazmanız durumunda sdcard içindeki tüm veriler yok olur ve if=/path kısmındaki veriler aktarılır.
Bu durumu önlemek için şöyle yapıyoruz :
Kod:
dd if=/path of=/sdcard/filename
sdcard/dosyaadi.uzantı şeklinde bir yol izliyoruz, umarım mantığı biraz olsun anlatabilmişimdir.
Ana partitionu kullanıp istediğimiz alt partitionları şimdi yedek alabiliriz.
Örnek vermek gerekirse boot partitonunu yedek alacağız. İzleyeceğimiz yol şu şekilde olmalıdır :
Kod:
dd if=/anapartition/boot of=/sdcard/boot
Ana partition + alt partitionu kullanıp dizin + partition yapmış olacağız.
Benim ana partitionum /dev/block/bootdevice/by-name/ ve alt partitionum boot,
bunları birleştirir isek /dev/block/bootdevice/by-name/boot olacaktır. İşte bu bizim dizin + alt partitionumuz olacaktır.
Yedeklemeyi alalım.
Kod:
dd if=/dev/block/bootdevice/by-name/boot of=/sdcard/boot
İşte bu komut ile anapartition + alt partitionumuzu sdcard ın içine boot dosyasına yazdırdık.
sdcard ın içine boot adlı dosyamızı oluşturduk ve bunu cihazdan çekme istiyoruz. Bunun için şu komutu kullanacağız.
Kod:
adb pull /sdcard/boot
adb aracını kullarak "of=/path" kısmını adb pull 'un sonrasına yazdırarak çekme işlemini gerçekleştirdik.
Eğer çekme işleminde onay veriyor ve dosya gözükmüyor ise adb aracınızı masaüstünde bir klasör oluşturup onun içinde çalıştırın.
C:/ diskinde adb aracı yönetici olarak çalışmadığı durumda veri yazma izni olmadığından dolayı dosyayı sdcard'tan bilgisayara çekemeyecektir.
Sdcard'ın şifreli olduğu durumlar vardır. Crypted olan dataya veri yazma izniniz bulunmaz.
Bu durumda karşımıza iki yol çıkar, ya cihazın datasını ve sdcardını formatlayıp şifreyi kaldırırız ya da sdcard üzerinde işlem yapmayız.
Sdcard üzerinde işlem yapmamak hız artışı yaşatırken veri koruması da sağlar.
Sdcard şifreli ise /sideload partitionunu kullabiliriz. Her custom recovery'de /sideload partitionunu bulunur. Bunun sebebi adb sideload fonksiyonunda cihaza rom atılırken sdcard'da yer bulunmaması ihtimaline karşın yer açılmasıdır. Sideload bölümünde yer bulunur ve bizim partition yedeklemede işimizi fazlasıyla görür.
Yukarıda /sdcard yazdığım her yere /sideload yazabilirsiniz.
Unutmayın, sideload modunu veya adb sideload fonksiyonunu kullanmıyoruz yalnızca sideload fonksiyonu kullanımı için hazırlanan sideload bölümünü kullanıyoruz.
Ufak bir örnek :
Kod:
dd if=/dev/block/bootdevice/by-name/boot of=/sideload/boot
adb pull /sideload/boot
1610656001666.png
 
Geri
Üst Alt