fat 형식의 zip 파일(Linux)

fat 형식의 zip 파일(Linux)

micro-SD에서 Android가 아닌 Nokia 휴대폰으로 연락처를 가져오려고 합니다. 그래서 내보낸 파일을 수정한 다음 가져올 수 있기를 바라면서 먼저 현재 연락처를 마이크로 SD 카드로 내보냈습니다.

내보낸 파일 형식은 Nokia 백업 파일입니다 .NBF. 실제로는 일반 zip파일인 것 같습니다.

내보낸 .NBF파일의 압축을 풀고 수정할 수 있습니다 .vcf - vcard. (연락처는 에 저장되어 있습니다.)

그러나 압축을 풀고 가져오려고 하면 전화기에 파일이 손상되었다는 메시지가 표시됩니다.

 

다음을 사용하여 zip 파일을 확인했습니다 zipinfo.

수정되지 않은 파일:

$ 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%

그런 다음 다음을 수정 1.vcf하고 업데이트합니다 Backup001.NBF.

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

수정됨:

$ 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%

이 줄에서는 -rw-r--r-- 3.0 unx 208 tx defN 20-Apr-03 01:04 predefhiddenfolder/backup/WIP/32/contacts/1.vcf형식이 3.0 unx.

압축해서 포맷할 수 있는 방법이 있나요 0.0 fat?

 

편집: 몇 가지 설명을 추가했습니다.

-k편집: @FennecTECH가 제안한 대로 플래그를 사용해 보았습니다.

더 좋아 보이지만 여전히 작동하지 않습니다.

$ 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

문제를 해결하지 못한 비슷한 질문: https://stackoverflow.com/questions/15033646/compression-method-for-xlsx-with-7z

답변1

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()
}

결과:

$ 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%

답변2

폴더의 압축을 풀어야 합니다. 그런 다음 -k 옵션을 사용하여 다시 압축하면 2.0 지방이 생성됩니다. 이것이 효과가 있을지는 모르겠지만 시도해 볼 가치가 있습니다. 명령줄을 사용하여 수행해야 합니다.

답변3

user_settings.wbxml 파일에 문제가 있는 것 같습니다. 아마도 파일 크기나 연락처 수에 따라 특정 내용이 업데이트되어야 할 것 같습니다.

답변4

이 작업을 자동으로 수행하는 강력한 도구를 소개하겠습니다. https://github.com/pas-calc/nokia-contacts

이 스크립트를 필요에 맞게 조정할 수 있습니다. Python과 관련된 경우에는 from zipfile import ZipFile.

관련 정보