Apakah ada perintah / skrip shell sederhana yang mendukung mengecualikan file / folder tertentu agar tidak diarsipkan?
Saya memiliki direktori yang perlu diarsipkan dengan sub direktori yang memiliki sejumlah file sangat besar yang tidak perlu saya backup.
Tidak cukup solusinya:
The tar --exclude=PATTERN
perintah sesuai dengan pola yang diberikan dan tidak termasuk file-file, tapi aku butuh file tertentu & folder untuk diabaikan (path file penuh), jika tidak file yang valid mungkin dikecualikan.
Saya juga bisa menggunakan perintah find untuk membuat daftar file dan mengecualikan yang saya tidak ingin mengarsipkan dan meneruskan daftar ke tar, tetapi itu hanya bekerja dengan sejumlah kecil file. Saya punya puluhan ribu.
Saya mulai berpikir satu-satunya solusi adalah membuat file dengan daftar file / folder yang akan dikecualikan, kemudian menggunakan rsync dengan --exclude-from=file
untuk menyalin semua file ke direktori tmp, dan kemudian menggunakan tar untuk mengarsipkan direktori itu.
Adakah yang bisa memikirkan solusi yang lebih baik / lebih efisien?
EDIT: Solusi Charles Ma bekerja dengan baik. Gotcha besar adalah bahwa --exclude='./folder'
HARUS berada di awal perintah tar. Perintah penuh (cd pertama, jadi cadangan relatif terhadap direktori itu):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
--exclude
tidak harus menjadi yang pertama tetapi harus datang ke suatu tempat sebelum direktori sumber (diuji dengan tar 1.29 di Cygwin).