xar (archiwizator)

XAR
Rozszerzenia nazw plików .xar , .pkg , .xip
Rodzaj mediów internetowych
aplikacja/x-xar
Jednolity identyfikator typu (UTI) com.apple.xar-archiwum
magiczny numer xar!
Typ formatu Format pliku archiwum
Przedłużony od XML , gzip

XAR (skrót od e X tensible AR chive format ) to archiwizator plików typu open source i format pliku archiwizatora . Został stworzony w ramach OpenDarwin i jest używany w systemie macOS X 10.5 i nowszych do procedur instalacji oprogramowania, a także jako rozszerzenia przeglądarki w przeglądarce Safari 5.0 i nowszych. Xar zastąpił korzystanie z plików pax spakowanych gzipem .

Jedna gałąź programistyczna RPM , RPM5 , używa xar.

Struktura plików

XAR File Structure.svg

Plik składa się z trzech sekcji, nagłówka, spisu treści i sterty. Wszystkie pola są przechowywane w big endian .

nagłówek

Zrównoważyć#
Rozmiar (w bajtach)
Zamiar
0 4
Podpis pliku używany do identyfikacji formatu pliku jako Xar. To zawsze powinno być równe xar!
4 2 Rozmiar nagłówka
6 2
Wersja formatu Xar do użycia. Obecnie jest tylko wersja 1.
8 8 Długość skompresowanych danych TOC.
16 8 Długość nieskompresowanych danych spisu treści.
24 4 Algorytm sumy kontrolnej:
28 0, 4, 36 czasami dopełnienie bajtów lub nazwa algorytmu sumy kontrolnej

Spis treści

Xar różni się od cpio , tar lub ar tym, że przechowuje TOC (spis treści) na początku pliku, co sprawia, że ​​dołączanie do archiwum jest bardziej skomplikowane, ale sprawia, że ​​przeglądanie archiwum w celu wyodrębnienia pojedynczego pliku staje się niepotrzebne . Spis treści jest przechowywany jako zlib , zakodowany w UTF-8 dokument XML . Każdy plik przechowywany w Xar jest niezależnie kompresowany/kodowany. Daje to możliwość zakodowania plików przy użyciu gzip mając inny plik w tym samym archiwum zakodowany przy użyciu innej metody, takiej jak bzip2 . W niektórych systemach element archiwum można również zakodować xz lub lzma .

Przykład Spis treści



 
   
   0
   
  
   
   
   
   
    <?xml version="1.0" encoding="UTF-8"?>  <xar>  <toc>  <suma kontrolna  style=  "sha1"  >  <offset>  </offset>  <size>  20  </size> < /   suma kontrolna>  <file  id=  "1"  >  <grupa>  personel  </group>  <gid>  20  </gid>  <użytkownik>  joe  </user>  <uid>  501  </uid> 
   
   
   
    
    
    
    
    
    
    
     <tryb>  0755  </mode>  <typ>  katalog  </typ>  <nazwa>  com.foobar  </nazwa>  <  id pliku =  "2"  >  <grupa></grupa>  <gid>  20  </gid>  < użytkownik></użytkownik>  <uid>  501  </uid>  <tryb>  0775  </mode>  <typ>  katalog  </typ>  <nazwa>  Zawartość  </nazwa> 
     
     
      
      
      
       
       
        <file  id=  "3"  >  <data>  <length>  428  </length>  <offset>  20  </offset>  <size>  1005  </size>  <encoding  style=  "application/x-gzip"  />  <zarchiwizowane -checksum  style=  "SHA1"  >  a5f6f1461213a904f831d4ef6f214638342842ed  </archive-checksum>  <extracted-checksum  style=  "SHA1"  > 
     
     
     
     
     
     
     
     
    
     
     
      <  _  _  _  _  _  _  _  _  _  _  _  _  _  _ typ>  plik  </typ>  <nazwa>  Info.plist  </nazwa>  </plik>  <  identyfikator pliku=  "4"  >  <grupa></grupa>  <gid>  20 
     
     
     
     
     
      
      
       
       
       
        </gid>  <user></user>  <uid>  501  </uid>  <tryb>  0775  </mode>  <typ>  katalog  </typ>  <nazwa>  Zasoby  </nazwa>  <  id pliku =  "5"  >  <dane>  <długość>  14868  </długość  > <przesunięcie>  448  </przesunięcie>  <rozmiar>  274432  </rozmiar> <   styl  kodowania =  
        
        
      
      
      
      
      
       "application/x-gzip"  />  <archiwalna suma kontrolna  style=  "SHA1"  >  efe5c97921de7ccc5aebc158d158e9d4280d6814 </archiwalna suma kontrolna   > <wyodrębniona suma kontrolna  style=  "SHA1"  >  45c8be42d1d9afdb57ddd5e9311453010ec461 61 </wyciągnięta-suma   -  kontrolna>  </data>  <grupa>  </group>  <gid>  20  </gid>  <użytkownik></użytkownik>  <uid>  501  </uid>  <tryb>  0664 
      
      
     
      
      
       
       
       
        
         </mode>  <typ>  plik  </typ>  <nazwa>  foobar  </nazwa>  </plik>  <  id pliku =  "6"  >  <dane>  <długość>  17635 </ długość>   <przesunięcie>  15316  <  /przesunięcie >  <size>  45056  </size>  <encoding  style=  "application/x-gzip"  />  <archived-checksum  style=  "SHA1"  > 
        
      
      
      
      
      
      
      
       3c761ffcc81ee6e232e4f4a1c4a81654c26c4e52  </archive-checksum>  <extracted-checksum  style=  "SHA1"  >  0ea31f8ef0e5987a1838a64ab5c26ebf3ee4bc37  </extracted-checksum>  </data>  <group></group> <gid  >  20  </gid>  <użytkownik></użytkownik>  <uid>  501  </uid>  <tryb>  0664  </mode>  <typ>  plik  </typ>  <nazwa>  docSet.skidx 
     
      
      
      
      
      
      
      
      
       
       
         </name>  </file>  <  identyfikator pliku =  "7"  >  <grupa></grupa>  <gid>  20  </gid>  <użytkownik></użytkownik>  <uid>  501  </uid>  <tryb>  0775  </mode>  <typ>  katalog  </typ>  <nazwa>  Dokumenty  </nazwa>  <  identyfikator pliku=  "8"  >  <dane>  <długość>  35790  </długość> 
        
        
         
         
         
       
       
        <offset>  32951  </offset>  <size>  209242  </size>  <encoding  style=  "application/x-gzip"  />  <archived-checksum  style=  "SHA1"  >  5242cd71585c34e722932f324706f8c00e1ae0c5  </archived-checksum>  <extracted-checksum>  style=  "SHA1"  >  c0e013e53d829511835e2b429abb5198731e9a3e  </extracted-checksum>  </data>  <group></group>  <gid> 
       
       
       
       
       
      
     
    
   
  
 
 20  </gid>  <user></user>  <uid>  501  </uid>  <tryb>  0664  </mode>  <typ>  plik  </typ>  <nazwa>  foobar.html  </nazwa>  </file>  </file>  </file>  </file>  </file>  </toc>  </xar> 

Linki zewnętrzne