Approx. terjemahan. : Ini bukan terjemahan biasa, karena tidak didasarkan pada artikel terpisah, tetapi kasus terbaru dengan Stack Exchange, yang menjadi hit utama sumber daya bulan ini. Penulisnya mengajukan pertanyaan, yang jawabannya ternyata merupakan wahyu nyata bagi beberapa pengunjung situs.
Mengompresi direktori sebesar ~ 1,3 GB, masing-masing dengan 1440 file JSON, saya menemukan perbedaan 15x antara ukuran arsip yang dikompresi menggunakan tar
macOS atau Raspbian 10 (Buster) dan arsip yang diperoleh menggunakan pustaka tarfile yang dibangun dengan Python.
Contoh kerja minimal
Skrip ini membandingkan kedua metode:
#!/usr/bin/env python3
from pathlib import Path
from subprocess import call
import tarfile
fullpath = Path("/Users/user/Desktop/temp/tar/2021-03-11")
zsh_out = Path(fullpath.parent, "zsh-archive.tar.xz")
py_out = Path(fullpath.parent, "py-archive.tar.xz")
# tar using terminal
# tar cJf zsh-archive.tar.xz folderpath
call(["tar", "cJf", zsh_out, fullpath])
# tar using tarfile library
with tarfile.open(py_out, "w:xz") as tar:
tar.add(fullpath, arcname=fullpath.stem)
# Print filesizes
print(f"zsh tar filesize: {round(Path(zsh_out).stat().st_size/(1024*1024), 2)} MB")
print(f"py tar filesize: {round(Path(py_out).stat().st_size/(1024*1024), 2)} MB")
Hasilnya begini:
zsh tar filesize: 23.7 MB py tar filesize: 1.49 MB
Versi berikut digunakan:
tar
di MacOS:bsdtar 3.3.2 - libarchive 3.3.2 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.6
;
tar
Raspbian di 10:xz (XZ Utils) 5.2.4 liblzma 5.2.4
;
tarfile
Python:0.9.0
.
:
diff -r py-archive-expanded zsh-archive-expanded
.
Β« Β» ( ) :
β diff zsh-archive.tar.xz py-archive.tar.xz Binary files zsh-archive.tar.xz and py-archive.tar.xz differ
Quicklook ( Betterzip) , -:
zsh
, Python β . , .
? ? , Python- ? 15- - Python-?
: , tarlib
Python ; BSD- tar
.
:
, , BSD- GNU- tar
.
GNU tar
--sort
:
ORDER
,none
,name
inode
.
--sort=none
β , .
GNU tar
GNU tar
Mac:
brew install gnu-tar
'tar' , --sort
:
gtar --sort='name' -cJf zsh-archive-sorted.tar.xz /Users/user/Desktop/temp/tar/2021-03-11
zsh-archive-sorted.tar.xz
1,5 β , , Python-.
, , JSON-, ( β unixtime), BSD tar
:
cat *.json > all.txt tar cJf zsh-cat-archive.tar.xz all.txt
zsh-cat-archive.tar.xz
1,5 .
Python- tarfile
, TarFile.add Python , tarfile
Python :
. , recursive False. .
, , , :
JSON- . , .
, . , .
P.S.
UPD: β XZ/LZMA β , @iliazeus!
:
Β«Git happens! 6 Git Β»;
-
-