tar -cjf site1.tar.bz2 -C /var/www/site1 .
Pada contoh di atas, tar akan berubah menjadi direktori /var/www/site1
sebelum melakukan hal tersebut karena opsi -C /var/www/site1
diberikan.
Dari man tar
:
OTHER OPTIONS
-C, --directory DIR
change to directory DIR
Opsi -C
bekerja; hanya untuk klarifikasi saya akan memposting 2 contoh:
-
pembuatan tarball tanpa path lengkap:path lengkap
/home/testuser/workspace/project/application.war
dan yang kita inginkan hanyalahproject/application.war
jadi:tar -cvf output_filename.tar -C /home/testuser/workspace project
Catatan:ada spasi di antara
workspace
danproject
; tar akan mengganti path lengkap hanya denganproject
. -
ekstraksi tarball dengan mengubah jalur target (default ke
.
, yaitu direktori saat ini)tar -xvf output_filename.tar -C /home/deploy/
tar
akan mengekstrak tarball berdasarkan jalur yang diberikan dan mempertahankan jalur pembuatan; dalam contoh kita fileapplication.war
akan diekstraksi menjadi/home/deploy/project/application.war
./home/deploy
:diberikan pada ekstrak
project
:diberikan pada pembuatan tarball
Catatan :jika Anda ingin menempatkan tarball yang dibuat di direktori target, Anda tinggal menambahkan path target sebelum nama tarball. misalnya:
tar -cvf /path/to/place/output_filename.tar -C /home/testuser/workspace project
Sepertinya -C
opsi upto tar v2.8.3 tidak bekerja secara konsisten di semua platform (OS). -C
opsi dikatakan menambahkan direktori ke arsip tetapi pada Mac dan Ubuntu menambahkan prefiks jalur absolut di dalam file tar.gz yang dihasilkan.
tar target_path/file.tar.gz -C source_path/source_dir
Oleh karena itu solusi yang konsisten dan kuat adalah cd
ke source_path (direktori induk dari source_dir) dan jalankan
tar target_path/file.tar.gz source_dir
atau
tar -cf target_path/file.tar.gz source_dir
dalam skrip Anda. Ini akan menghapus prefiks jalur absolut dalam struktur direktori file tar.gz yang Anda buat.