3 poin oleh GN⁺ 2024-04-17 | 1 komentar | Bagikan ke WhatsApp
  • BTFS adalah sistem berkas BitTorrent yang memungkinkan file .torrent atau magnet link dipasang dan digunakan seperti direktori read-only dalam pohon berkas
  • Isi berkas diunduh on-demand saat dibaca oleh aplikasi, dan tool umum seperti ls, cat, cp bekerja sesuai harapan
  • Aplikasi seperti vlc dan mplayer juga dapat berjalan tanpa perubahan, sehingga konten torrent bisa diperlakukan seperti berkas biasa
  • Menyediakan metode instalasi paket untuk Debian/Ubuntu, Arch Linux, Gentoo, Fedora, Fedora OSTree, OpenSUSE, dan macOS
  • Dependensi Linux adalah fuse3, libtorrent, dan libcurl; build dari source menggunakan alur autoreconf, configure, make

Apa yang dilakukan BTFS

  • BTFS memungkinkan file .torrent atau magnet link dipasang dan digunakan seperti direktori read-only di dalam pohon berkas
  • Isi berkas diunduh on-demand saat benar-benar dibaca oleh aplikasi
  • Tool sistem berkas umum tetap bekerja apa adanya
    • ls
    • cat
    • cp
  • Aplikasi juga dapat digunakan tanpa perubahan
    • vlc
    • mplayer

Alur penggunaan dasar

  • Buat direktori mount, hubungkan file torrent, lalu jalankan file di dalam direktori seperti berkas biasa
$ mkdir mnt
$ btfs video.torrent mnt
$ cd mnt
$ vlc video.mp4
  • Unmount dan penghentian dilakukan dengan fusermount
$ fusermount -u mnt

Instalasi paket

  • Di Debian/Ubuntu, instal dengan apt-get
# apt-get install btfs
  • Di Arch Linux, instal dengan pacman
# pacman -S btfs
  • Di Gentoo, instal dengan emerge
# emerge -av btfs
  • Di Fedora, instal paket fuse-btfs dengan dnf
# dnf install fuse-btfs
  • Di Fedora OSTree, instal fuse-btfs dengan rpm-ostree
$ rpm-ostree install fuse-btfs
  • Di OpenSUSE, instal dengan zypper
# zypper install btfs
  • Di macOS, gunakan brew
$ brew install btfs

Dependensi Linux

  • Dependensi yang diperlukan di Linux adalah sebagai berikut
    • fuse3: di Ubuntu 22.04, fuse3
    • libtorrent: di Ubuntu 22.04, libtorrent-rasterbar8
    • libcurl: di Ubuntu 22.04, libcurl4

Build dari source

  • Pada Debian/Ubuntu terbaru, instal dependensi build, clone repositori, lalu jalankan autoreconf, configure, dan make
$ sudo apt-get install autoconf automake libfuse3-dev libtorrent-rasterbar-dev libcurl4-openssl-dev g++
$ git clone https://github.com/johang/btfs.git btfs
$ cd btfs
$ autoreconf -i
$ ./configure
$ make
  • Jika ingin sekaligus menginstalnya, jalankan tambahan make install
$ make install
  • Build di macOS menggunakan alur build yang sama setelah dependensi diinstal dengan brew
$ brew install --cask macfuse libtorrent-rasterbar autoconf automake pkg-config
$ git clone https://github.com/johang/btfs.git btfs
$ cd btfs
$ autoreconf -i
$ ./configure
$ make
  • Jika instalasi juga diperlukan di macOS, jalankan make install
$ make install

1 komentar

 
GN⁺ 2024-04-17
Komentar Hacker News
  • Akan bagus kalau ada program server sebagai pasangannya. Maksudnya yang sekaligus berperan sebagai pembuat file torrent, tracker, dan server file sederhana.
    Di organisasi besar, sepertinya mereka bisa menaruh data publik dalam jumlah sangat besar di server, membuat torrent setiap kali datanya berubah, menyediakan file .torrent lewat HTTP, sekaligus bertindak sebagai tracker. Di klien FUSE cukup dibungkus dengan logika sederhana untuk mendeteksi torrent baru dari server lalu memuat ulang/me-mount ulangnya.
    Dulu sekali saya pernah membuat distribusi Linux untuk bank. Berbasis Ubuntu NetBoot, hanya berisi paket minimal untuk desktop kantor cabang, dan karena tidak ada server di cabang, distribusinya melakukan self-seeding. Selama wake-on-lan dan PXE sudah dikonfigurasi di switch, satu mesin bisa mengkloning ratusan mesin dalam satu gedung dalam waktu cukup singkat, dan klon baru juga bisa menjadi seed.
    Secara internal, kami menyediakan repositori Ubuntu kustom dengan nginx dan menjalankan tftp/inetd serta wackamole. Setelah sebuah mesin terpasang, ia mengambil torrent dari “server” dan menambahkannya ke transmission; setelah selesai, mesin itu juga menjadi seed dan menjalankan wackamole, inetd, nginx, tracker, dan sebagainya. Awalnya men-seed 10 mesin dengan stabil, lalu setelah semuanya aktif, membangunkan lebih banyak mesin.
    Dalam beberapa minggu kami mendistribusikan image ke 8.000 mesin di ratusan cabang bank; sebagian besar keterlambatan disebabkan oleh manajemen perubahan dan rencana rollout bertahap. Yang paling sulit sebenarnya adalah mengunduh seed pertama ke tiap cabang lewat build Linux yang sudah ada, lalu menjadikan salah satunya mesin seed. Ini dilakukan di lebih dari 350 cabang dengan koneksi terbatas, sebagian bahkan memakai ISDN 256kbps.

    • Fitur yang mungkin menarik, dan setahu saya hanya AWS S3 yang mengimplementasikannya: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjec...
      Saya belum pernah benar-benar memakainya, jadi tidak tahu apakah AWS memasukkan tracker mereka sendiri ke .torrent yang dihasilkan.
    • Kalau membuat torrent baru setiap kali dataset diperbarui, bukankah klien akan harus menerima ulang data yang sebenarnya tidak berubah?
  • Alat ini seharusnya di-upgrade agar memakai fitur baru BitTorrent v2.
    https://blog.libtorrent.org/2020/09/bittorrent-v2/
    Yang terutama penting adalah pohon hash Merkle, yang memungkinkan pohon hash per file dan struktur direktori.

    • Sejak tahu tentang BitTorrent v2, saya berharap akan ada indeks per file di internet. Akan bagus kalau sebagian besar file media besar di drive saya bisa diberi tag dengan berapa banyak salinan yang saat ini ada di swarm BitTorrent.
      Dengan begitu saya bisa lebih mudah menghapus file besar karena tahu nanti bisa mengunduh ulang salinan yang identik dengan mudah. Dulu saya mencoba melakukan hal serupa dengan IPFS, tapi tidak berjalan baik dan juga tidak bisa menemukan file duplikat.
  • Akan bagus kalau ada BTFS yang memperbaiki file media yang “rusak”. Misalnya media yang sebagian hilang karena disk tergores, atau media yang opsi codec pilihan saya kurang bagus; cukup unduh bagian yang rusak saja lalu pulihkan dengan mulus.

    • Tidak persis sama, tapi ini mengingatkan saya pada AccurateRip yang dulu banyak dipakai ketika orang meripping ratusan CD tiap tahun.
      http://www.accuraterip.com/
    • Kenapa tidak memakai file system yang menjaga hal semacam itu? Ada ZFS, dan storage juga murah.
    • Kegunaan lain adalah membagikan media setelah saya memasukkannya ke library saya. Kalau hash dari semua media yang saya punya bisa dipindai secara sukarela, dan klien torrent yang pintar bisa menyediakan hanya file-file itu, ini akan sangat membantu seeding file media langka.
      Karena saya selalu menghapus file yang tidak perlu, bentuk torrent parsial diperlukan.
    • Kalau filenya rusak, bagaimana cara menghitung hash untuk pencarian?
    • Bukankah bisa mendistribusikan file paritas bersama file aslinya seperti di Usenet? Usenet sendiri kurang lebih memang seperti itu.
      Saya tidak tahu apakah implementasi file system NNTP benar-benar bekerja dengan baik, tapi ada juga nzbfs: https://github.com/danielfullmer/nzbfs
  • Saya memposting ini karena heran kenapa ini tidak lebih banyak dipakai. Mungkinkah virtual machine atau sistem operasi dibuat sebagai overlay di atas BTFS? Kelihatannya arah yang menarik.

    • Baru minggu lalu saya membuat image PXE boot dengan Nix di laptop, mengunggahnya ke IPFS, lalu melakukan network boot pada server saya di negara lain melalui mirror IPFS publik.
      Saat boot, initrd di-mount sebagai overlayfs read-only. Konfigurasinya saya buka untuk publik: https://github.com/jhvst/nix-config
      Nanti saya berencana menulis dokumentasi proses IPFS, termasuk konfigurasi router PXE, di https://github.com/majbacka-labs/nixos.fi. Untuk orang-orang yang ingin mencoba proses ini, saya juga bisa menjalankan server build publik kecil untuk konfigurasi Flake.
    • Meski bukan penyedia overlay itu sendiri, uber/kraken adalah “registry Docker P2P yang bisa mendistribusikan data skala TB dalam hitungan detik”. Ia mengirim image Docker ke cluster besar dengan protokol BitTorrent.
      https://github.com/uber/kraken
    • CVMFS adalah pilihan yang matang di area ini, dan banyak dipakai di komunitas fisika untuk mendistribusikan software dan image container. Ini memungkinkan resource komputasi dibagikan secara sederhana dan efisien.
      https://cernvm.cern.ch/fs/
    • Saya kurang paham intinya. File system read-only yang mengunduh file secara langsung memang keren, tapi dalam kebanyakan situasi kedengarannya tidak praktis.
    • Sesekali ada saja orang yang menciptakan ulang Plan 9 dari Bell Labs
  • Klien yang sempurna untuk mengakses konten Internet Archive. Setiap item IA otomatis dilampiri torrent yang berisi web seed IA. Bisa dicoba dengan Big Buck Bunny
    btfs https://archive.org/download/BigBuckBunny_124/BigBuckBunny_1... mountpoint

    • Saya tidak tahu struktur internal IA maupun BitTorrent, tetapi jika item arsip terlalu banyak, tidak semuanya masuk ke file torrent
      Ini sering terlihat pada kumpulan ROM atau arsip majalah. Jika itemnya lebih dari 1000, torrent biasanya hanya berisi sekitar 200 pertama
    • Cara yang lebih baik adalah ini:
      btplay https://archive.org/download/BigBuckBunny_124/…
  • Artikel terkait:
    BTFS – mount any .torrent file or magnet link as directory - https://news.ycombinator.com/item?id=23576063 - Juni 2020 (121 komentar)
    BitTorrent file system - https://news.ycombinator.com/item?id=10826154 - Jan 2016 (33 komentar)

  • Lebih jauh lagi, akan bagus jika data disimpan sebagai file sqlite yang berisi indeks pencarian teks penuh. Dengan begitu torrent bisa dicari full-text saat diperlukan: https://github.com/bittorrent/sqltorrent

  • Diskusi 4 tahun lalu:
    https://news.ycombinator.com/item?id=23576063

  • Komentar tingkat atas dari saurik dalam thread lama tahun 2020 dengan 121 komentar merangkum dengan baik perasaan saya tentang situasi ini: https://news.ycombinator.com/item?id=23580334
    Intinya, BTFS adalah versi IPFS “satu CID dalam satu waktu”
    IPFS itu keren, tetapi menurut saya perlu kemajuan besar di setidaknya tiga area agar layak dipakai sehari-hari. Pertama, seharusnya tidak perlu menjalankan proxy node lokal. Saya pernah mendengar Brave punya dukungan WebTorrent bawaan, tetapi karena saya tidak memakai Brave, saya tidak tahu apakah itu hanya bernama WebTorrent atau bagaimana
    Kedua, latensi resolusi swarm/peer terasa menyakitkan seperti “mainan kripto web3”, dan karena latensi itu, browsing terasa seperti zaman modem 14.4k dulu
    Ketiga, IPFS bagus untuk konten yang jarang berubah tetapi sangat populer, seperti Wikipedia, rilis game, dan konten MDN. Namun saat membayangkan menjelajahi repositori git, mengganti “tip” atau “main” ke versi yang diperbarui cukup merepotkan. Sejauh yang saya tahu, satu-satunya cara untuk meresolusikan CID terbaru adalah IPNS, dan DNS adalah mekanisme yang mudah menjadi salah satu dari banyak faktor yang saling kusut setiap kali terjadi gangguan
    Saya tahu ini terlalu panjang membahas file system lain, bukan file system yang diajukan, tetapi sementara saya kemungkinan tidak akan memasang BTFS, orang yang tertarik pada ide ini layak membaca lebih lanjut tentang IPFS. Hanya saja, sebaiknya tetap ingat keterbatasannya saat ini

  • https://github.com/anacrolix/torrent sudah memiliki driver FUSE sejak 2013. Sekarang sedang berada pada tahap awal untuk menghapusnya
    WebDAV, FUSE pihak ketiga, dan wrapper HTTP semuanya melakukan hal yang mirip. Caranya adalah menyajikan magnet link, info hash, dan file torrent seperti file system yang immutable. Dukungan BitTorrent v2 saat ini sudah masuk ke master