Bagaimana cara menduplikasi file tanpa menyalin datanya dengan btrfs?

14

Saya tidak punya pengalaman dengan btrfs, tetapi diiklankan untuk dapat menduplikasi file duplikat.

Dalam aplikasi saya, saya perlu menduplikasi seluruh pohon direktori.

Dari apa yang saya pelajari, btrf hanya menghapus duplikat dalam beberapa pemindaian pos, tidak segera. Bahkan hanya menggunakan cptampaknya tidak memicu de-duplikasi (setidaknya, dfmenunjukkan peningkatan penggunaan disk dalam ukuran file yang disalin).

Bisakah saya menghindari memindahkan data sekaligus dan memberi tahu btrfslangsung untuk menduplikasi file di lokasi lain, pada dasarnya hanya mengkloning metadata-nya?

Intinya, mirip dengan hardlink, tetapi dengan metadata independen (izin, waktu mod, ...).

Udo G
sumber
7
cp --reflink=always.
mikeserv
3
Perhatikan bahwa ini bukan hardlink. Ketika Anda cp --reflink=always, hasil dari perspektif pengguna akan menjadi dua file yang sepenuhnya independen dalam segala hal. Fakta bahwa sistem file yang mendasarinya mengabstraksi bahwa melalui copy-on-write hanyalah detail implementasi. Anda tidak mendapatkan "hardlink, tetapi dengan metadata independen.". Setahu saya, btrfs belum melakukan deduplikasi otomatis. Saya pikir itu rencana masa depan tetapi saya tidak positif tentang itu.
ormaaj
@ormaaj - hardlink tidak akan memiliki metadata independen . dan Udo meminta detail implementasi . ketika Anda melakukan reflink ke file Anda pada dasarnya clone metadata-nya . itu hanya ketika referensi secara independen mengubah bahwa file berbeda - dan itulah deduplikasi!
mikeserv
1
@ mikeserv Er, saya cukup yakin deduplikasi memiliki arti yang berbeda. Deduplikasi mengambil salinan data yang sudah ada dan membubarkannya kembali. SAP adalah cara meminimalkan duplikasi, itu bukan deduplikasi.
ormaaj
@ormaaj - saya pikir itu hal yang aneh untuk dikatakan: deduplikasi bukan tentang meminimalkan duplikasi.
mikeserv

Jawaban:

12

Ada dua opsi:

  1. cp --reflink=always
  2. cp --reflink=auto

Yang kedua hampir selalu lebih baik daripada yang pertama. Menggunakan autoberarti itu akan mundur untuk melakukan salinan yang benar jika sistem file tidak mendukung reflinking (misalnya, ext4 atau menyalin ke share NFS). Dengan opsi pertama, saya cukup yakin itu akan gagal total dan berhenti menyalin.

Jika Anda menggunakan ini sebagai bagian dari skrip yang harus kuat dalam menghadapi kondisi yang tidak ideal, autoakan lebih baik bagi Anda.

eestrada
sumber
apakah Anda Eric Estrada?
mikeserv
2
@ mikeserv Lol, tidak. Nama depan saya adalah Ethan. Itu akan lucu; Eric Estrada: aktor di siang hari, sysadmin di malam hari. Percaya atau tidak, ini adalah pertama kalinya dalam lebih dari satu dekade berjalan dengan pegangan online eestradayang pernah ada yang bertanya kepada saya.
eestrada
2
tentu, Eric. Lagi pula, jawaban yang bagus.
mikeserv