Saya telah membuat alat python yang dapat melakukan ini. Saya melakukan ini karena saya mencoba pendekatan @Thomas Luzat di implementasi saya sendiri dan @Johannes Ernst, dan ruang yang digunakan dua kali lipat dari 20GB menjadi 40GB dalam prosedur kloning. Saya pikir sesuatu yang lebih efisien diperlukan.
Pertimbangkan riwayat sistem file yang umum ini:
current ---------------------------------\
| | | |
snap4 snap3 snap2 snap1
Dengan algoritma Thomas, "saat ini" akan dikloning terlebih dahulu, dan semua snapshot (menjadi snapshot dari status "saat ini") akan menggunakan "saat ini" sebagai sumber / induk klon. Jelas, akan lebih baik untuk mendasarkan snap3 pada snap4, snap2 pada snap3, dll.
Dan ini hanyalah puncak gunung es; menemukan sumber klon "terbaik" (dalam hal penghematan ruang) dalam sistem file btrfs dengan sejarah yang kompleks adalah masalah yang tidak sepele. Saya telah datang dengan 3 strategi lain untuk menyelesaikan masalah ini, yang tampaknya menggunakan ruang jauh lebih efisien. Seseorang benar-benar menghasilkan ukuran klon sedikit di bawah sumbernya.
Anda dapat membaca detailnya di halaman github jika Anda tertarik.