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.