bup-index - cetak dan/atau perbarui indeks sistem file bup
bup index <-p|-m|-s|-u|--clear|--check> [-H] [-l] [-x] [--fake-valid] [--no-check-device] [--fake-invalid] [-f indexfile] [--exclude path] [--exclude-from filename] [--exclude-rx pattern] [--exclude-rx-from filename] [-v] <paths...>
indeks bup memanipulasi indeks sistem file, yang merupakan cache jalur absolut dan metadatanya (atribut, hash SHA-1, dll.). Indeks bup serupa fungsinya dengan indeks git(1), dan indeks default dapat ditemukan di $BUP_DIR/bupindex.
Membuat cadangan di bup terdiri dari dua langkah: memperbarui indeks dengan indeks bup, lalu benar-benar mencadangkan file (atau subset dari file) dengan penyimpanan bup. Pemisahan ada karena alasan berikut:
Ada lebih dari satu cara untuk membuat daftar file yang perlu dicadangkan. Misalnya, Anda mungkin ingin menggunakan inotify(7) atau dnotify(7).
Bahkan jika Anda mencadangkan file ke beberapa tujuan (untuk redundansi tambahan), nama file, atribut, dan hash akan selalu sama. Dengan demikian, Anda dapat menghindari masalah berulang kali membuat ulang daftar file untuk setiap set cadangan.
Anda mungkin ingin menggunakan data yang dilacak oleh indeks bup untuk tujuan lain (seperti mempercepat program lain yang membutuhkan informasi yang sama).
Saat ini, bup akan mengabaikan atribut Linux (lih. chattr(1) dan lsattr(1)) pada beberapa sistem (sistem big-endian di mana sizeof(long) < sizeof(int)). Ini karena kernel Linux dan FUSE saat ini tidak setuju dengan jenis argumen panggilan sistem attr, dan seterusnya sistem big-endian tidak ada cara untuk mendapatkan hasil tanpa risiko kerusakan tumpukan (http://lwn.net/Articles /575846/). Dalam situasi ini, bup akan mencetak peringatan saat pertama kali atribut Linux relevan selama operasi indeks/penyimpanan/pemulihan.
bup membuat akomodasi untuk resolusi stempel waktu sistem file “terburuk” yang diharapkan – saat ini satu detik; contohnya termasuk VFAT, ext2, ext3, ext4 kecil, dll. Karena bup tidak dapat mengetahui resolusi stempel waktu sistem file, dan dapat melintasi banyak sistem file selama proses tertentu, selalu diasumsikan bahwa resolusi mungkin tidak lebih baik dari satu detik.
Sebagai masalah praktis, ini berarti pembaruan indeks agak tidak tepat, sehingga bup save terkadang merekam perubahan sistem file yang tidak Anda harapkan. Itu karena, selama pembaruan indeks, jika bup menemukan jalur yang stempel waktu aktualnya lebih baru dari satu detik sebelum pembaruan dimulai, bup akan menyetel stempel waktu indeks untuk jalur tersebut (mtime dan ctime) tepat satu detik sebelum dijalankan, – secara efektif membatasi nilai tersebut.
Ini memastikan bahwa tidak ada perubahan selanjutnya pada jalur tersebut yang dapat menghasilkan stempel waktu yang identik dengan yang ada di indeks. Jika memungkinkan, bup dapat mengabaikan modifikasi tersebut.
Anda dapat melihat efek dari perilaku ini dalam contoh ini (anggap bahwa kurang dari satu detik berlalu antara pembuatan file awal dan menjalankan indeks pertama):
$ touch src/1 src/2
# A "sleep 1" here would avoid the unexpected save.
$ bup index src
$ bup save -n src src # Saves 1 and 2.
$ date > src/1
$ bup index src
$ date > src/2 # Not indexed.
$ bup save -n src src # But src/2 is saved anyway.Sebenarnya, bup seharusnya tidak memperhatikan perubahan pada src/2, tetapi hal itu terjadi, karena akomodasi yang dijelaskan di atas.
memperbarui indeks secara rekursif untuk jalur yang diberikan dan turunannya. Satu atau lebih jalur harus ditentukan, dan jika jalur diakhiri dengan tautan simbolik, tautan itu sendiri akan diindeks, bukan targetnya. Jika tidak ada opsi mode yang diberikan, --update adalah default, dan jalur dapat dikecualikan oleh opsi --exclude, --exclude-rx, dan --one-file-system.
mencetak isi indeks. Jika jalur diberikan, tampilkan entri yang diberikan dan turunannya. Jika tidak ada jalur yang diberikan, tampilkan entri yang dimulai dari direktori kerja saat ini (.).
hanya mencetak file yang ditandai sebagai dimodifikasi (mis. diubah sejak pencadangan terbaru) dalam indeks. Menyiratkan -p.
tambahkan kode status (A, M, D, atau spasi) sebelum setiap jalur. Menyiratkan -p. Kode berarti, masing-masing, bahwa file ditandai dalam indeks sebagai ditambahkan, dimodifikasi, dihapus, atau tidak diubah sejak pencadangan terakhir.
hati-hati memeriksa integritas file indeks sebelum dan sesudah memperbarui. Sebagian besar berguna untuk pengujian otomatis.
menghapus indeks default.
untuk setiap file yang dicetak, tambahkan kode hash yang terakhir direkam. Kode hash biasanya dihasilkan oleh bup save. Untuk objek yang belum dicadangkan, kode hash akan menjadi 000000000000000000000000000000000000000000. Perhatikan bahwa kode hash dicetak bahkan jika file tersebut diketahui dimodifikasi atau dihapus dalam indeks (mis. file pada sistem file tidak lagi cocok dengan hash yang direkam). Jika ini merupakan masalah bagi Anda, gunakan --status.
cetak lebih banyak informasi tentang setiap file, dalam format yang mirip dengan opsi -l ke ls(1).
jangan melewati batas sistem file saat melintasi sistem file – meskipun dengan tar dan rsync, mount point itu sendiri masih akan diindeks. Hanya berlaku jika Anda menggunakan -u.
tandai jalur yang ditentukan sebagai terbaru meskipun tidak. Ini dapat berguna untuk pengujian, atau untuk menghindari pencadangan file yang tidak perlu yang Anda tahu membosankan.
tandai jalur yang ditentukan sebagai tidak mutakhir, memaksa menjalankan "bup save" berikutnya untuk memeriksa ulang kontennya.
gunakan nama file indeks yang berbeda, bukan $BUP_DIR/bupindex.
kecualikan jalur dari cadangan (dapat diulang).
baca –kecualikan jalur dari nama file, satu jalur per baris (dapat diulang). Abaikan baris yang benar-benar kosong.
mengecualikan semua pattern yang cocok dengan jalur, yang harus berupa ekspresi reguler Python (http://docs.python.org/library/re.html). Polanya akan dibandingkan dengan jalur penuh, tanpa penahan, jadi "x/y" akan cocok dengan "ox/yard" atau "box/yards". Untuk mengecualikan konten /tmp, tetapi bukan direktori itu sendiri, gunakan “^/tmp/. ”. (dapat berulang)
Contoh:
`/foo$' - mengecualikan file apa pun yang bernama foo
`/foo/$' - kecualikan direktori apa pun yang bernama foo
`/foo/.' - mengecualikan konten direktori apa pun yang bernama foo
`^/tmp/.' - mengecualikan konten root-level /tmp, tetapi tidak /tmp itu sendiri
baca pola –exclude-rx dari nama file, satu pola per baris (dapat diulang). Abaikan baris yang benar-benar kosong.
jangan tandai entri tidak valid jika nomor perangkat (stat(2) st_dev) berubah. Ini dapat berguna saat mengindeks sistem file jarak jauh, automount, atau snapshot (LVM, Btrfs, dll.), di mana nomor perangkat tidak tetap.
tingkatkan keluaran log selama pembaruan (dapat digunakan lebih dari sekali). Dengan satu -v, cetak setiap direktori saat diperbarui; dengan dua -v, cetak juga setiap file.
bup index -vux /etc /var /usrbup-save(1), bup-drecurse(1), bup-on(1)
Bagian dari paket bup(1).
Avery Pennarun