GNU/Linux >> Belajar Linux >  >> Linux

Tar direktori, tetapi jangan simpan jalur absolut lengkap di arsip

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:

  1. pembuatan tarball tanpa path lengkap:path lengkap /home/testuser/workspace/project/application.war dan yang kita inginkan hanyalah project/application.war jadi:

    tar -cvf output_filename.tar  -C /home/testuser/workspace project
    

    Catatan:ada spasi di antara workspace dan project; tar akan mengganti path lengkap hanya dengan project .

  2. 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 file application.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.


Linux
  1. Perintah tar Linux

  2. Inti dibuang, tetapi file inti tidak ada di direktori saat ini?

  3. Bagaimana cara mengecualikan jalur absolut untuk tar?

  1. Temukan file yang ada di satu direktori tetapi tidak di direktori lain

  2. Cara membuat arsip zip yang kompatibel dengan Linux dari sebuah direktori di Mac

  3. Bagaimana cara menyalin pohon direktori tetapi bukan file di Linux?

  1. Mendapatkan Nama Path Lengkap Dari Direktori yang Diberikan?

  2. Apakah ada cara cepat untuk mendapatkan file terakhir dalam TAR besar?

  3. Bagaimana cara mengecualikan file dari arsip TAR menggunakan ekspresi reguler?