archivo zip con formato gordo (en Linux)

archivo zip con formato gordo (en Linux)

Estoy intentando importar contactos desde una tarjeta micro-SD a un teléfono Nokia (sin Android). Así que primero exporté los contactos actuales en una tarjeta micro-SD con la esperanza de poder modificar el archivo exportado y luego importarlo.

El tipo de archivo exportado es un archivo de copia de seguridad de Nokia .NBF. Parece que en realidad es un ziparchivo normal.

Puedo descomprimir .NBFel archivo exportado y modificarlo (los contactos se almacenan en .vcf - vcard).

Sin embargo, cuando lo comprimo e intento importarlo, el teléfono dice que el archivo está dañado.

 

Revisé archivos zip con zipinfo:

Archivo sin modificar:

$ zipinfo Backup001.NBF
Archive:  Backup001.NBF
Zip file size: 3031 bytes, number of entries: 10
-rw-a--     0.0 fat     1160 b- stor 20-Mar-30 11:31 predefhiddenfolder/predefisasettings/usersettings/user_settings.wbxml
dr-x-hs     0.0 fat        0 b- stor 10-Jan-01 00:00 predefhiddenfolder/predefisasettings/usersettings
dr-xahs     0.0 fat        0 b- stor 07-Jan-01 00:00 predefhiddenfolder/predefisasettings
dr-xahs     0.0 fat        0 b- stor 07-Jan-01 00:00 predefhiddenfolder
-rw-a--     0.0 fat      214 b- defN 20-Mar-30 11:31 predefhiddenfolder/backup/WIP/F01
drwxa--     0.0 fat        0 b- defN 20-Mar-30 11:31 predefhiddenfolder/backup/WIP
drwxa--     0.0 fat        0 b- defN 10-Jan-01 00:00 predefhiddenfolder/backup
-rw-a--     0.0 fat      256 b- defN 20-Mar-30 11:31 predefhiddenfolder/backup/WIP/32/contacts/1.vcf
drwxa--     0.0 fat        0 b- defN 20-Mar-30 11:31 predefhiddenfolder/backup/WIP/32/contacts
drwxa--     0.0 fat        0 b- defN 20-Mar-30 11:31 predefhiddenfolder/backup/WIP/32
10 files, 1630 bytes uncompressed, 1409 bytes compressed:  13.6%

luego modifico 1.vcfy actualizo Backup001.NBFcon:

zip Backup001.NBF -f -r predefhiddenfolder/backup/WIP/32/contacts/1.vcf

Modificado:

$ zipinfo Backup001.NBF
Archive:  Backup001.NBF
Zip file size: 2958 bytes, number of entries: 10
-rw-a--     0.0 fat     1160 b- stor 20-Mar-30 11:31 predefhiddenfolder/predefisasettings/usersettings/user_settings.wbxml
dr-x-hs     0.0 fat        0 b- stor 10-Jan-01 00:00 predefhiddenfolder/predefisasettings/usersettings
dr-xahs     0.0 fat        0 b- stor 07-Jan-01 00:00 predefhiddenfolder/predefisasettings
dr-xahs     0.0 fat        0 b- stor 07-Jan-01 00:00 predefhiddenfolder
-rw-a--     0.0 fat      214 b- defN 20-Mar-30 11:31 predefhiddenfolder/backup/WIP/F01
drwxa--     0.0 fat        0 b- defN 20-Mar-30 11:31 predefhiddenfolder/backup/WIP
drwxa--     0.0 fat        0 b- defN 10-Jan-01 00:00 predefhiddenfolder/backup
-rw-r--r--  3.0 unx      208 tx defN 20-Apr-03 01:04 predefhiddenfolder/backup/WIP/32/contacts/1.vcf
drwxa--     0.0 fat        0 b- defN 20-Mar-30 11:31 predefhiddenfolder/backup/WIP/32/contacts
drwxa--     0.0 fat        0 b- defN 20-Mar-30 11:31 predefhiddenfolder/backup/WIP/32
10 files, 1582 bytes uncompressed, 1366 bytes compressed:  13.7%

en esta línea: -rw-r--r-- 3.0 unx 208 tx defN 20-Apr-03 01:04 predefhiddenfolder/backup/WIP/32/contacts/1.vcfdice que el formato es 3.0 unx.

¿Hay alguna forma de comprimirlo para que quede formateado 0.0 fat?

 

Editar: agregó algunas aclaraciones

Editar: intenté usar -kla bandera como lo sugirió @FennecTECH

Se ve mejor pero todavía no funciona.

$ zipinfo Backup000.NBF
Archive:  Backup000.NBF
Zip file size: 2501 bytes, number of entries: 10
drwx---     2.0 fat        0 bx stor 20-Apr-03 00:37 PREDEFHI/
drwx---     2.0 fat        0 bx stor 20-Apr-03 00:36 PREDEFHI/PREDEFIS/
drwx---     2.0 fat        0 bx stor 20-Apr-03 00:36 PREDEFHI/PREDEFIS/USERSETT/
-rw----     2.0 fat     1160 bx defN 20-Mar-30 11:31 PREDEFHI/PREDEFIS/USERSETT/USER_SET.WBX
drwx---     2.0 fat        0 bx stor 20-Apr-03 00:37 PREDEFHI/BACKUP/
drwx---     2.0 fat        0 bx stor 20-Apr-03 00:37 PREDEFHI/BACKUP/WIP/
drwx---     2.0 fat        0 bx stor 20-Apr-03 00:37 PREDEFHI/BACKUP/WIP/32/
drwx---     2.0 fat        0 bx stor 20-Apr-03 01:04 PREDEFHI/BACKUP/WIP/32/CONTACTS/
-rw----     2.0 fat      208 tx defN 20-Apr-03 01:04 PREDEFHI/BACKUP/WIP/32/CONTACTS/1.VCF
-rw----     2.0 fat      214 bx defN 20-Mar-30 11:31 PREDEFHI/BACKUP/WIP/F01

pregunta similar que no resolvió el problema: https://stackoverflow.com/questions/15033646/compression-method-for-xlsx-with-7z

Respuesta1

Puedes hacer esto con Go:

package main
import (
   "archive/zip"
   "io"
   "os"
)
const creatorFAT = 0
func main() {
   // in
   file, _ := os.Open("in.txt")
   info, _ := file.Stat()
   head, _ := zip.FileInfoHeader(info)
   // default is Unix
   head.CreatorVersion = creatorFAT
   // out
   zipfile, _ := os.Create("out.zip")
   archive := zip.NewWriter(zipfile)
   // write
   writer, _ := archive.CreateHeader(head)
   io.Copy(writer, file)
   archive.Close()
}

Resultado:

$ zipinfo out.zip
Archive:  out.zip
Zip file size: 151 bytes, number of entries: 1
-rw-rw-rw-  2.0 fat        7 bX stor 20-Apr-02 19:54 in.txt
1 file, 7 bytes uncompressed, 7 bytes compressed:  0.0%

Respuesta2

Deberá descomprimir la carpeta. Luego vuelva a comprimirlo con la opción -k. Esto le dará 2.0 de grasa. No sé si esto funcionará pero vale la pena intentarlo. Deberá hacerlo con la línea de comando.

Respuesta3

Creo que el problema está en el archivo user_settings.wbxml. Se supone que ciertas cosas deben actualizarse allí, probablemente según el tamaño del archivo o la cantidad de contactos.

Respuesta4

Permítanme presentarles mi poderosa herramienta que hace esto automáticamente. https://github.com/pas-calc/nokia-contacts

Puede ajustar este script a sus necesidades. Para lo relacionado con Python, deberás ceñirte a from zipfile import ZipFile.

información relacionada