Pulihkan / putar kembali file atau folder tunggal di btrfs
Saya berencana menggunakan btrfs untuk sistem NAS.
Sekarang saya bertanya-tanya apakah mungkin untuk memutar kembali sesuatu ke snapshot pada level file / folder. Saya menanyakan ini karena biasanya orang hanya ingin mengembalikan satu item sambil mempertahankan status drive yang lain.
Apakah ada cara asli untuk melakukan ini atau jika tidak, cara terbaik untuk mencapai ini? Saya membaca Kembalikan file tunggal dari snapshot btrfs tanpa melakukan salinan lengkap yang tampaknya merupakan cara tetapi tidak semudah itu. Mungkin cara terbaik untuk melakukan ini.
Jawaban
Mengambil snapshot pada dasarnya membuat subvolume yang dapat diakses di struktur direktori volume dasar. Dari sana, jika seseorang memiliki hak yang sesuai, seseorang dapat menjelajahinya dan menyalin file atau folder. The --reflink
pilihan untuk menyalin tampaknya tidak akan neded untuk itu, meskipun yang lebih baik, sehingga hal-hal yang tidak diduplikasi ketika menyalin mereka.
dengan alat btrfs
Secara opsional membuat subvolume untuk snapshot:
btrfs subvolume create .my_snapshots
Membuat snapshot:
btrfs subvolume snapshot -r /mnt_point /mnt_point/.my_snapshots/snapshot1
Menggunakan -r
bendera membuat snapshot menjadi hanya baca (https://wiki.archlinux.org/index.php/btrfs#Snapshots).
Tanpa membuat subvolume terlebih dahulu dan tidak menjadikannya hanya baca, subvolume akan terlihat seperti ini:
btrfs subvolume snapshot /mnt_point /mnt_point/snapshot1
Mengembalikan dapat dicapai kemudian dengan menyalin file atau folder dari snapshot:
cp /mnt_point/.my_snapshots/snapshot1/sub/dir/file /sub/dir/file
(Berasal dari https://lore.kernel.org/linux-btrfs/[email protected]/t/#m16db5d9f29d26f41a8adb4499ffe3e220a85d9b8)
alat eksternal (kakap digunakan sebagai contoh)
Menggunakan alat eksternal seperti snapper memiliki beberapa keuntungan, karena mereka membuat penanganan snapshot sedikit lebih nyaman dan hadir dengan fungsionalitas yang berguna.
Pertama, file konfigurasi perlu dibuat untuk (sub) volume yang ingin dibuat snapshotnya:
snapper -c config-name create-config /mnt_point
Ini membuat file konfigurasi bernama config-name
. Perhatikan bahwa ini juga biasanya akan mengaktifkan pembuatan snapshot berbasis waktu otomatis serta aturan untuk membersihkannya setelah beberapa logika. Perhatikan bahwa snapshot yang dibuat secara manual tidak akan dihapus oleh aturan tersebut.
Sebuah snapshot kemudian dapat diambil secara manual dengan:
snapper -c config-name create --description description-content
di mana config-name
adalah nama konfigurasi yang dibuat sebelumnya dan description-content
dapat diisi dengan beberapa deskripsi untuk snapshot.
(Berasal dari https://wiki.archlinux.org/index.php/Snapper)
Mengembalikan kemudian bekerja sama seperti di atas untuk bagian alat btrfs dengan mengakses snapshot yang dipasang dan menyalin semuanya.
Selain itu, kakap menyediakan perintah untuk itu yang juga dapat digunakan untuk membatalkan perubahan volume saat ini sesuai dengan dokumentasi openSUSE . Perhatikan bahwa hal ini dapat menyebabkan inkonsistensi data. Juga dokumentasi Red Hat menyatakan untuk tidak menggunakan perintah itu dengan sistem file root.
Secara teori, file dapat dipulihkan dengan:
snapper -c config-name -v undochange SNAPSHOT_ID..0 FILENAME
di mana SNAPSHOT_ID
ID dari snapshot yang akan dipulihkan (dan ..0
menunjukkan bahwa file dipulihkan ke volume utama) dan FILENAME
merupakan jalur ke file yang akan dipulihkan. Seseorang juga dapat menentukan lebih dari satu file.
(Berasal dari https://doc.opensuse.org/documentation/leap/archive/15.0/reference/html/book.opensuse.reference/cha.snapper.html#proc.snapper.restore.cmdl)
Snapshot BTRFS bekerja di tingkat subvolume. Ini berarti Anda dapat "memutar kembali" subvolume, tetapi tidak untuk file individual.
Karena subvolume muncul sebagai direktori di sistem file, Anda dapat mengatakan bahwa direktori dapat diputar kembali.
Untuk memutar kembali file individual saya menggunakan salinan reflink, seperti yang ditunjukkan pada tautan yang Anda berikan. Namun, saya memiliki subvolume yang relevan dipasang secara otomatis melalui /etc/fstab
jadi tidak ada ketidaknyamanan.