tar: --exclude = “. git”: Cannot stat: Tidak ada file atau direktori seperti itu

11

Ini membuatku gila. Saya ingin tardirektori, tetapi mengecualikan beberapa file. Ini adalah perintah saya:

tar -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION --exclude='.git' --exclude='.gitignore'

Sementara perintah di atas bekerja pada RedHat EL5, itu tidak berfungsi pada Mac OS 10.8.2. Saya sudah mencoba mengganti 'dengan ", \'dan \". Saya telah mencoba menghilangkan tanda sama dengan. Tidak ada yang berhasil.

Apa yang saya lakukan salah?

Randomblue
sumber
Gunakan gnutardari Brew, MacPort, dll. Tar Apple terlalu lumpuh.
jww

Jawaban:

23

Semua opsi harus bersama sebelum argumen, dan -fflag harus mendahului file tar:

tar -zcv --exclude = '. git' --exclude = '. gitignore' -f $ NAME- $ VERSION.tar.gz $ NAME- $ VERSION
Flup
sumber
Jika ya tar --help, apakah --excludeopsi muncul di bantuan? Saya tidak tahu OSX tapi mungkin ada yang gtarbukan stok tar.
Flup
2
Ah saya lihat :) coba ini: tar --exclude='.git' --exclude='.gitignore' -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION The -fbendera mengharapkan nama file sebagai argumen berikutnya.
Flup
Maaf ya, sudah diedit. Saya baru di sini jadi bersabarlah!
Flup
2
Dapat membuktikan bahwa ini berfungsi pada Mac - 10.9. Butuh waktu beberapa saat untuk menemukan versi yang tepat dari ini, itulah sebabnya saya meninggalkan komentar saya di sini!
JohnAllen
2

Ini memberi Anda apa yang Anda inginkan:

tar czvf $NAME-$VERSION.tar.gz $NAME-$VERSION --wildcards --exclude=.git --exclude=.gitignore
Sonde
sumber
1

Tampaknya Anda ingin memfilter direktori .git meta, cara termudah adalah menggunakan --exclude-vcs untuk mengecualikan direktori sistem kontrol versi:

tar -zcvf $NAME-$VERSION.tar.gz $NAME-$VERSION --exclude-vsc

Saya telah menggunakan "tar (GNU tar) 1.27.1" pada mesin Linux saya, sepertinya Perintah Umum BSD mac (bukan versi GNU) tidak mendukung opsi ini.

Kayvan Tehrani
sumber
Apakah Anda yakin ini berfungsi dengan tar Apple? Lihat tar(1)halaman manual Apple . tidak mencantumkan --exclude-vscatau --exclude-vcs.
jww
Terima kasih @jww sayang untuk petunjuk Anda. Saya telah mengedit jawaban saya untuk menjadi lebih efektif.
Kayvan Tehrani