Saya ingin menyahmampat fail .ab yang disandarkan oleh adb dan menulisnya ke dalam pakej tar

WBOY
Lepaskan: 2024-02-10 08:15:17
ke hadapan
1079 orang telah melayarinya

Saya ingin menyahmampat fail .ab yang disandarkan oleh adb dan menulisnya ke dalam pakej tar

Editor PHP Zimo boleh membantu anda menjawab soalan tentang menyahmampat fail .ab yang disandarkan oleh adb dan menulisnya ke dalam pakej tar. adb backup ialah kaedah sandaran dalam sistem Android dan fail sandaran yang dijana mempunyai nama akhiran .ab. Jika anda ingin menyahmampat dan menulis bola tar, anda boleh melakukannya dengan menggunakan alat ADB dan arahan tar. Mula-mula, gunakan arahan ADB untuk menukar fail .ab kepada pakej tar, dan kemudian gunakan arahan tar untuk menyahmampat pakej tar. Dengan cara ini anda boleh memulihkan fail sandaran ke tarball. Harap jawapan ini membantu anda!

Kandungan soalan

Saya akan mengendalikannya seperti berikut

bf, err := os.Open(backupFilePath)
if err != nil {
    fmt.Println("os.Open: ", err)
    return
}
defer bf.Close()
rd := bufio.NewReader(bf)

tarFile, err := os.Create(tarFilePath)
if err != nil {
    fmt.Println("os.Create: ", err)
    return
}
defer tarFile.Close()

zf, zerr := zlib.NewReader(rd)
if zerr != nil {
    return "", zerr
}
_, err = io.Copy(tarFile, zf)
if err != nil {
    fmt.Println("io.Copy backup.ab -> backup.ab.tar failed:  ", err)
}
zf.Close()
Salin selepas log masuk

Ralat berlaku: io.copy backup.ab -> backup.ab.tar failed: unexpected eof

Adakah ini berlaku kerana fail .ab rosak atau kaedah pemprosesan salah?

Penyelesaian

Kemungkinan besar fail .ab rosak.

Tetapi terdapat masalah dengan kod anda juga. 24 bait pertama harus dilangkau apabila membaca daripada fail .ab. Jika tidak, anda sepatutnya melihat ralat ini: zlib:无效的标头. Memandangkan anda melihat sesuatu yang lain, saya akan menganggap fail .ab anda rosak.

By the way, tiada rd := bufio.newreader(bf) diperlukan.

Ini adalah demo yang sesuai untuk saya:

package main

import (
    "compress/zlib"
    "io"
    "os"
)

func main() {
    bf, err := os.open("temp.ab")
    if err != nil {
        panic(err)
    }
    defer bf.close()
    if _, err := bf.seek(24, 0); err != nil {
        panic(err)
    }

    zf, err := zlib.newreader(bf)
    if err != nil {
        panic(err)
    }
    defer zf.close()

    tarfile, err := os.create("temp.tar")
    if err != nil {
        panic(err)
    }
    defer tarfile.close()

    _, err = io.copy(tarfile, zf)
    if err != nil {
        panic(err)
    }
}
Salin selepas log masuk

Kemas kini:

Menguji demo menggunakan backup.ab dan tiada ralat dilaporkan. Tetapi fail tar yang dijana tidak sah:

$ tar tvf backup.tar
<...list of files truncated...>
tar: unexpected eof in archive
tar: error is not recoverable: exiting now
Salin selepas log masuk

Cuba guna zlib-flate dan mendapat hasil yang sama:

$ dd if=backup.ab ibs=24 skip=1 | zlib-flate -uncompress > backup2.tar
$ md5sum backup*.tar
3eff01578dec035367688e03b6ec7a72  backup2.tar
3eff01578dec035367688e03b6ec7a72  backup.tar
Salin selepas log masuk

Mencuba https://www.php.cn/link/6e67691b60ed3e4a55935261314dd534 dan mendapat hasil yang sama. Oleh itu backup.ab fail harus rosak.

$ java -jar ~/Downloads/abe.jar unpack backup.ab backup3.tar
$ md5sum backup*.tar
3eff01578dec035367688e03b6ec7a72  backup2.tar
3eff01578dec035367688e03b6ec7a72  backup3.tar
3eff01578dec035367688e03b6ec7a72  backup.tar
Salin selepas log masuk

Atas ialah kandungan terperinci Saya ingin menyahmampat fail .ab yang disandarkan oleh adb dan menulisnya ke dalam pakej tar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!