ADB ile yapılan TWRP yedeklerini çıkarın


10

LineageOS ve TWRP özellikli bir Samsung Galaxy S2 GT-I9100 akıllı telefonum var. Her hafta aşağıdaki komutla yedek yaparım:

adb backup -f twrp-20170322.ab --twrp boot data system

İsteğe bağlı olarak --compressseçeneği de kullanabilirim.

twrp-20170322.abYedek dosyayı stardard GNU / Linux komut satırı araçlarıyla çıkarmanın bir yolu var mı ? Ayrıca gerekirse ekstra yazılım yüklemeyi de düşüneceğim, ancak ücretsiz olmalı (özgürlükte olduğu gibi).

Bağlantılar:

Yanıtlar:


1

Bir şifre ile korumamanız şartıyla:

dd if=$1 bs=24 skip=1 | openssl zlib -d >${1%%.ab}.tar
  • dd"Disk Çoğaltıcı" dır (parametrelerini karıştırmanız durumunda "disk yok edici" olarak da bilinir ifve of;)
  • bs=23 24 baytlık bir blok kullanmasını öneriyoruz.
  • skip=1 24 baytlık 1 bloğu atla ("Yedekleme başlığı")
  • çıktı opensslişlemek ve paketten çıkarmak için boruya bağlanır
  • … Ve bunun çıktısı Tarball'a yönlendiriliyor

Oradan, yolunuzu bilmelisiniz: sadece istediğinizi "untar" (ayıklayın).

Neden kullanır $1? Eh, bu çizgiyi kopyalanan ab2tarbenim küçük aracıyla eklenen, Adebar şey kullanarak güzel bir cihaz belgelerine, yedekleme komut dosyalarını oluşturur ve daha fazlası, tüm ADB yoluyla ancak Bash 😇 Yani küçücük o çizgiyi koymak: Eğer sıra ilgilenen olabilir küçük kabuk betiği ve diyelim ki:

ab2tar twrp-20170322.ab

Sonra twrp-20170322.tarsonuç olarak bir bulun . Tabii ki, bunun opensslLinux makinenize yüklenmesi gerekir.


Aşağıdaki hata iletisini alıyorum: 140376894071512: hata: 29065064: lib (41): BIO_ZLIB_READ: zlib şişirme hatası: c_zlib.c: 548: zlib hatası: veri hatası
— Francesco Turco

Bunu hiç görmedim. TWRP standart ADB'den farklı bir sıkıştırma yöntemi kullanıyor olabilir mi (bununla ilgili ayrıntıları bulamadım)? Veya --compressyedeklemeyi oluştururken belirtmediğiniz gibi, sıkıştırılmamış yedeklemeler mi oluşturur? İkinci durumda, zlibparametreyi dışarıda bırakmayı deneyin (veya başka bir şekilde yapın ve --compressyedeklemeyi oluştururken belirtin ;).
— Izzy

Ben ile denedim: dd if = twrp-20170320.ab bs = 24 atlama = 1> twrp-20170320.tar (eklemeden openssl). Ama tar -tf twrp-20170320.tar ile tar arşivinin içeriğini listelemeye çalıştığımda: tar: Bu bir tar arşivi gibi görünmüyor; tar: Sonraki başlığa atlamak; tar: Önceki hatalar nedeniyle başarısızlık durumundan çıkma
— Francesco Turco

--compressSeçeneği aşağıdakilerle kullanmamanın bir nedeni vardır adb: yolu daha az verimli sıkıştırır xz. Mümkün olduğunca fazla yer tasarrufu yapmayı tercih ederim. Ama bu benim ilk sorunumla ilgili değil.
— Francesco Turco

Yukarıda açıkladığım şey "normal" ADB yedekleri için iyi çalışıyor (Ben onlar için sık kullanıyorum ve ben de --compressorada kullanmıyorum ). İfadenizden ( adb backup …) aynı formatı aldım. Sadece farklı bir sıkıştırma kullanıyorsanız, bunu göz önünde bulundurmalısınız. opensslyedeklemenin şifresini çözmek için gereklidir - bu olmadan, geçerli bir değer elde edemezsiniz .tar. Son yorumlarınızdan, zlibilgili parça ile değiştirmeniz gerektiğini varsayalım xz. Bunun dışında fikirlerim bitti, üzgünüm.
— Izzy

1

TWRP tarafından oluşturulan .abdosyaların normal adb backupdosyalardan farklı olduğunu gördüm , bu nedenle ofset normal .abdosyalardan farklı . Aşağıdaki komutu kullanarak (örneğin incelemek için) dosyaları incelemek ve ayıklamak mümkün:

dd if=backup.ab bs=512 skip=1 | tar ft -

Görünüşe göre, başlık daha uzun olabilir, ancak 512 bayt sınırlarıyla hizalanmalıdır, bu yüzden skip=ilk önce bulamazsa parametreyi çarpın .

Bu biçimi daha ayrıntılı incelemeniz gerekirse twadbstream.h dosyasında tanımlandığını unutmayın .


0

Naif dd tabanlı yaklaşımın sorunu, dosyada sık sık meta veriler bulunmasıdır. Bu, önemli uzunluktaki dosyalar için bozulmaya neden olur.

Büyük (~ 10GB) çoklu dosya sistemi TWRP ADB yedeklemelerini başarıyla kurtarmak için kullandığım twadbstream.h (thanks @anarcat) kullanarak bir çıkarma aracı yazdım. twrpabx

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.