Jangan membuat file tar di direktori yang Anda kemas:
tar -czf /tmp/workspace.tar.gz .
melakukan trik, kecuali itu akan mengekstrak file di seluruh direktori saat ini ketika Anda membongkar. Lebih baik dilakukan:
cd ..
tar -czf workspace.tar.gz workspace
atau, jika Anda tidak tahu nama direktori tempat Anda berada:
base=$(basename $PWD)
cd ..
tar -czf $base.tar.gz $base
(Ini mengasumsikan bahwa Anda tidak mengikuti symlink untuk sampai ke tempat Anda sekarang dan bahwa shell tidak mencoba menebak-nebak Anda dengan melompat ke belakang melalui symlink - bash
tidak dapat dipercaya dalam hal ini. Jika Anda harus khawatir tentang itu, gunakan cd -P ..
untuk melakukan direktori perubahan fisik. Bodoh bahwa ini bukan perilaku default dalam pandangan saya - membingungkan, setidaknya, bagi mereka yang cd ..
tidak pernah memiliki arti alternatif.)
Satu komentar dalam diskusi mengatakan:
Saya [...] perlu mengecualikan direktori teratas dan saya [...] perlu menempatkan tar di direktori dasar.
Bagian pertama dari komentar tidak masuk akal - jika file tar berisi direktori saat ini, itu tidak akan dibuat saat Anda mengekstrak file dari arsip itu karena, menurut definisi, direktori saat ini sudah ada (kecuali dalam keadaan yang sangat aneh ).
Bagian kedua dari komentar dapat ditangani dengan salah satu dari dua cara berikut:
- Salah
/tmp
satunya : buat file di tempat lain - adalah satu kemungkinan lokasi - lalu pindahkan kembali ke lokasi asli setelah selesai.
- Atau: jika Anda menggunakan GNU Tar, gunakan
--exclude=workspace.tar.gz
opsi. String setelah =
adalah pola - contohnya adalah pola yang paling sederhana - pencocokan tepat. Anda mungkin perlu menentukan --exclude=./workspace.tar.gz
apakah Anda bekerja di direktori saat ini yang bertentangan dengan rekomendasi; Anda mungkin perlu menentukan --exclude=workspace/workspace.tar.gz
apakah Anda mengerjakan satu tingkat seperti yang disarankan. Jika Anda memiliki beberapa file tar untuk dikecualikan, gunakan ' *
', seperti pada --exclude=./*.gz
.