Restic: Kecualikan pola yang tidak diterapkan

Dibuat pada 20 Jun 2017  ·  4Komentar  ·  Sumber: restic/restic

Keluaran restic version

restic 0.6.1 (v0.6.1-126-gb0fb95df)
dikompilasi dengan go1.8.3 di darwin / amd64

Bagaimana tepatnya Anda memulai restic? (Sertakan baris perintah lengkap)

restic backup --exclude-file ~/exclude.txt ~

Backend / server / layanan apa yang Anda gunakan?

sftp ke LAN

Perilaku yang diharapkan

Lewati file yang cocok dengan pola di exclude.txt

Perilaku sebenarnya

File disertakan kecuali saya secara drastis melonggarkan pola ke titik di mana polanya terlalu ambigu.

Langkah-langkah untuk mereproduksi perilaku

Menggunakan file pengecualian seperti ini:

.[^.]*
/matt/Applications
/matt/Dropbox
/matt/Downloads
/matt/VirtualBox VMs
*.vmdk

Tujuan saya adalah untuk melewati dotfiles dan beberapa folder tertentu di direktori $ HOME saya (bernama matt ) (tetapi tidak setiap folder bernama "Aplikasi" misalnya). Oh, dan file .vmdk apa pun (ukurannya bisa sangat besar!)

Saat saya mengendurkan polanya menjadi seperti ini:

.[^.]*
Applications
Dropbox
Downloads
VirtualBox VMs
*.vmdk

itu berhasil (artinya itu melewatkan folder) tetapi ini terlalu ambigu, karena saya tidak ingin melewati semua folder bernama Download, misalnya.

Apakah Anda tahu apa yang menyebabkan ini?

Mungkin saya masih belum memahami pola pengecualian dengan benar. : smile: Saya membaca # 1005 dan saya rasa saya bingung apakah jalur absolut diperlukan untuk --exclude atau jika jalur repo-absolut diperlukan seperti dengan --include.

documentation bug

Komentar yang paling membantu

Sigh, ya, Anda benar sekali. Pola pengecualian bersifat mutlak terkait dengan apa yang Anda cadangkan:
Pola /home/matt/*.go cocok dengan semua file Go di rumah Anda saat Anda menjalankan restic backup /home/matt . Karena cara kerja pengarsip (lihat # 549, keputusan desain yang buruk yang perlu kita perbaiki), prefiks /home/ dihilangkan dan komponen path tingkat atas dalam snapshot adalah /matt . Jadi untuk memulihkan, Anda perlu menggunakan pola penyertaan /matt/*.go untuk mencocokkan file yang sama. Saya tahu itu buruk, saya akan memperbaikinya nanti :)

Jadi, ini adalah daftar file yang dikecualikan untuk kasus penggunaan Anda:

.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk

Semua 4 komentar

Pembaruan: Oke, mengganti /matt/ dengan $HOME/ tampaknya berhasil, meskipun saya menemukan ketidakkonsistenan antara --exclude dan --include jalur absolut agak aneh / mengejutkan.

Biasanya $HOME/blabla adalah /home/matt/blabla atau apakah Anda mengubah sesuatu di sistem Anda?

Sigh, ya, Anda benar sekali. Pola pengecualian bersifat mutlak terkait dengan apa yang Anda cadangkan:
Pola /home/matt/*.go cocok dengan semua file Go di rumah Anda saat Anda menjalankan restic backup /home/matt . Karena cara kerja pengarsip (lihat # 549, keputusan desain yang buruk yang perlu kita perbaiki), prefiks /home/ dihilangkan dan komponen path tingkat atas dalam snapshot adalah /matt . Jadi untuk memulihkan, Anda perlu menggunakan pola penyertaan /matt/*.go untuk mencocokkan file yang sama. Saya tahu itu buruk, saya akan memperbaikinya nanti :)

Jadi, ini adalah daftar file yang dikecualikan untuk kasus penggunaan Anda:

.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk

@ibib Di Mac saya, direktori beranda saya adalah /Users/matt , tetapi karena --include menggunakan jalur repositori-absolut (seperti restic ls pertunjukan), saya pikir jalur absolut yang tepat adalah /matt/... .

@ fd0 Ah! Itu lebih masuk akal, terima kasih telah menjelaskan. Jadi --exclude bila digunakan dengan restic backup adalah mutlak untuk sistem file, dan --include (digunakan dengan restic restore ) adalah mutlak untuk repositori. Dengan kata lain, polanya mutlak dari mana file itu berasal.

Terima kasih banyak atas penjelasannya. Sekarang saya lebih mengerti mengapa 549 adalah masalah yang ingin Anda perbaiki. :tersenyum:

Apakah halaman ini membantu?
0 / 5 - 0 peringkat