Extract dan Compress File dengan Python

Hari ini saya kembali testing instalasi CloudStack di Rocky Linux 9.8 tanpa akses internet. Kebutuhan instalasinya sudah saya kumpulkan dalam satu bundle .tgz.

Biasanya saya menggunakan tar untuk extract file. Namun, paket ini belum tersedia pada instalasi minimal yang saya pakai, sementara akses ke repository online juga tidak tersedia.

Karena Python sudah ada di server, saya mencoba mengekstrak bundle menggunakan modul bawaannya, yaitu tarfile.

Extract file

Bundle berada di /srv. Saya menyiapkan folder tujuan, lalu menjalankan:

cd /srv
mkdir -p /srv/coba
python3 -m tarfile -e cloudstack-bundle-4.23-rocky9.8-x86_64.tgz /srv/coba
echo $?

Opsi -e digunakan untuk extract. Jalankan echo $? langsung setelah perintah tersebut; nilai 0 berarti perintah selesai tanpa kegagalan.

Untuk mengecek hasilnya:

ls -lah /srv/coba

Warning saat extract

Saat menjalankan perintah tadi, muncul warning:

RuntimeWarning: The default behavior of tarfile extraction has been changed to disallow common exploits (including CVE-2007-4559).

Pesan ini menjelaskan adanya pembatasan keamanan saat extract. Tujuannya mencegah isi arsip menulis file ke luar folder tujuan, misalnya melalui path ../../. Beberapa bit permission khusus juga dibersihkan.

Warning tersebut belum berarti bundle rusak atau proses extract gagal. Cek status perintah dan hasil ekstraksinya. Jika ada error atau traceback setelahnya, periksa pesan tersebut karena proses bisa berhenti sebelum semua file selesai diekstrak.

Compress folder

Untuk membuat arsip dengan kompresi gzip, misalnya dari folder /srv/cloudstack-bundle:

cd /srv
python3 -m tarfile -c cloudstack-bundle-backup.tar.gz cloudstack-bundle

Opsi -c digunakan untuk membuat arsip. cloudstack-bundle-backup.tar.gz adalah file hasil, sedangkan cloudstack-bundle adalah folder sumber. Sesuaikan nama folder dengan yang ingin dikemas.

Gunakan .tar.gz untuk kompresi gzip. Jika memakai .tar, file hanya dikemas tanpa kompresi.

Untuk melihat isi arsip tanpa extract:

python3 -m tarfile -l cloudstack-bundle-backup.tar.gz

Dokumentasi: Dokumentasi tarfile Python dan artikel Red Hat yang dicantumkan pada warning.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *