Pulihkan / putar kembali file atau folder tunggal di btrfs

Dec 08 2020

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

1 clel Jan 02 2021 at 01:13

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 --reflinkpilihan 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 -rbendera 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-nameadalah nama konfigurasi yang dibuat sebelumnya dan description-contentdapat 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_IDID dari snapshot yang akan dipulihkan (dan ..0menunjukkan bahwa file dipulihkan ke volume utama) dan FILENAMEmerupakan 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)

EmmanuelRosa Dec 09 2020 at 17:25

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/fstabjadi tidak ada ketidaknyamanan.