- BTFS est un système de fichiers BitTorrent qui permet de monter des fichiers
.torrent ou des magnet links comme des répertoires en lecture seule dans une arborescence de fichiers
- Le contenu des fichiers est téléchargé à la demande lorsque l’application le lit, et les outils habituels comme
ls, cat ou cp fonctionnent comme prévu
- Des applications comme
vlc et mplayer peuvent aussi fonctionner sans modification, ce qui permet de manipuler le contenu des torrents comme des fichiers ordinaires
- Des méthodes d’installation de paquets sont fournies pour Debian/Ubuntu, Arch Linux, Gentoo, Fedora, Fedora OSTree, OpenSUSE et macOS
- Sous Linux, les dépendances sont fuse3, libtorrent et libcurl ; la compilation depuis les sources suit le flux
autoreconf, configure, make
Ce que fait BTFS
- BTFS permet de monter un fichier
.torrent ou un magnet link pour l’utiliser comme un répertoire en lecture seule dans une arborescence de fichiers
- Le contenu des fichiers est téléchargé à la demande lorsque l’application le lit effectivement
- Les outils de système de fichiers classiques fonctionnent tels quels
- Les applications peuvent aussi être utilisées sans modification
Flux d’utilisation de base
- Créez un répertoire de montage, associez-y le fichier torrent, puis lancez les fichiers du répertoire comme des fichiers ordinaires
$ mkdir mnt
$ btfs video.torrent mnt
$ cd mnt
$ vlc video.mp4
- Le démontage et l’arrêt se font avec
fusermount
$ fusermount -u mnt
Installation des paquets
- Sur Debian/Ubuntu, installez avec
apt-get
# apt-get install btfs
- Sur Arch Linux, installez avec
pacman
# pacman -S btfs
- Sur Gentoo, installez avec
emerge
# emerge -av btfs
- Sur Fedora, installez le paquet
fuse-btfs avec dnf
# dnf install fuse-btfs
- Sur Fedora OSTree, installez
fuse-btfs avec rpm-ostree
$ rpm-ostree install fuse-btfs
- Sur OpenSUSE, installez avec
zypper
# zypper install btfs
$ brew install btfs
Dépendances Linux
- Les dépendances nécessaires sous Linux sont les suivantes
- fuse3 :
fuse3 sur Ubuntu 22.04
- libtorrent :
libtorrent-rasterbar8 sur Ubuntu 22.04
- libcurl :
libcurl4 sur Ubuntu 22.04
Compilation depuis les sources
- Sur les versions récentes de Debian/Ubuntu, installez les dépendances de compilation, clonez le dépôt, puis exécutez
autoreconf, configure et 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
- Si vous souhaitez aussi l’installer, exécutez en plus
make install
$ make install
- Pour compiler sur macOS, installez les dépendances avec
brew, puis utilisez le même flux de compilation
$ 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
- Si l’installation est également nécessaire sur macOS, exécutez
make install
$ make install
1 commentaires
Commentaires sur Hacker News
Ce serait bien d’avoir un programme serveur complémentaire. Quelque chose qui fasse à la fois générateur de fichiers torrent, tracker et simple serveur de fichiers
Dans une grande organisation, on pourrait héberger sur un serveur une énorme quantité de données publiques, générer un torrent à chaque modification des données, servir le fichier
.torrenten HTTP tout en assurant aussi le rôle de trackerIl suffirait ensuite d’ajouter autour du client FUSE une logique simple pour détecter les nouveaux torrents du serveur et les recharger/remonter
J’ai autrefois créé une distribution Linux pour des banques. Elle reposait sur Ubuntu NetBoot, avec seulement les paquets minimaux pour les postes des agences, et comme il n’y avait pas de serveur dans les agences, la distribution s’auto-seedait
Avec juste wake-on-lan et PXE configurés sur le switch, une seule machine permettait de cloner plusieurs centaines de postes dans un bâtiment en assez peu de temps, et les nouveaux clones pouvaient eux aussi devenir des seeders
En interne, on servait un dépôt Ubuntu personnalisé via nginx et on faisait tourner tftp/inetd et wackamole. Une fois la machine installée, le « serveur » récupérait le torrent et l’ajoutait à transmission ; une fois terminé, cette machine devenait elle aussi un seeder et lançait wackamole, inetd, nginx, le tracker, etc. Au début, on seedait 10 machines de façon stable, puis une fois toutes démarrées, on en réveillait d’autres
On a déployé l’image sur 8 000 machines réparties dans plusieurs centaines d’agences bancaires en quelques semaines, mais l’essentiel du délai venait de la gestion du changement et du plan de déploiement progressif. En pratique, le plus difficile a été de faire descendre la première seed dans chaque agence via le build Linux existant, puis d’en utiliser une comme machine de seed. Tout cela sur plus de 350 agences avec des liaisons limitées, dont certaines en ISDN 256 kbps
Je ne l’ai jamais utilisée, donc je ne sais pas si AWS place son propre tracker dans le
.torrentproduitCet outil devrait être mis à niveau pour exploiter les nouvelles fonctionnalités de BitTorrent v2
https://blog.libtorrent.org/2020/09/bittorrent-v2/
En particulier, les arbres de hachage de Merkle sont importants, car ils permettent les arbres de hachage par fichier et la structure des répertoires
Je pourrais alors supprimer plus facilement de gros fichiers, en sachant que je pourrai récupérer plus tard exactement la même copie. J’avais essayé quelque chose de similaire avec IPFS autrefois, mais ça n’a pas vraiment marché, et je n’arrivais pas non plus à trouver les fichiers en double
J’aimerais qu’il existe un BTFS capable de réparer les fichiers média « corrompus ». Par exemple, si un disque est rayé et qu’il manque une partie, ou si le média a été encodé avec de mauvais paramètres de codec, il pourrait télécharger uniquement les segments endommagés et restaurer le tout de manière transparente
http://www.accuraterip.com/
J’efface toujours les fichiers inutiles, donc il me faudrait une forme de torrent partiel
Je ne sais pas si une implémentation de système de fichiers NNTP fonctionne correctement, mais il y a aussi nzbfs : https://github.com/danielfullmer/nzbfs
Je poste ça parce que je trouve étonnant que ce ne soit pas davantage utilisé. Est-ce qu’on ne pourrait pas créer des machines virtuelles ou des systèmes d’exploitation en overlay sur BTFS ? Ça semble une piste intéressante
Au démarrage, l’initrd est monté en overlayfs en lecture seule. J’ai rendu la configuration publique : https://github.com/jhvst/nix-config
Plus tard, je compte documenter le processus IPFS, y compris la configuration du routeur PXE, sur https://github.com/majbacka-labs/nixos.fi. Je pourrais aussi faire tourner un petit serveur de build public pour la configuration Flake, pour les personnes qui voudraient tester ce processus
https://github.com/uber/kraken
https://cernvm.cern.ch/fs/
C’est un client parfait pour accéder au contenu de l’Internet Archive. Un torrent avec le web seed de l’IA est automatiquement attaché à chaque élément de l’IA. On peut l’essayer avec Big Buck Bunny
btfshttps://archive.org/download/BigBuckBunny_124/BigBuckBunny_1...mountpointJe le vois souvent avec des packs de ROMs ou des archives de magazines. Quand un élément dépasse 1000 fichiers, le torrent ne contient généralement que les ~200 premiers
btplay https://archive.org/download/BigBuckBunny_124/…Articles liés :
BTFS – mount any .torrent file or magnet link as directory - https://news.ycombinator.com/item?id=23576063 - juin 2020 (121 commentaires)
BitTorrent file system - https://news.ycombinator.com/item?id=10826154 - janv. 2016 (33 commentaires)
On pourrait aller plus loin en stockant les données dans un fichier sqlite contenant un index de recherche plein texte. On pourrait alors effectuer une recherche plein texte dans les torrents quand on en a besoin : https://github.com/bittorrent/sqltorrent
Discussion d’il y a 4 ans :
https://news.ycombinator.com/item?id=23576063
Dans l’ancien fil de 2020 avec 121 commentaires, le commentaire le mieux classé de saurik résume très bien ce que je ressens face à cette situation : https://news.ycombinator.com/item?id=23580334
En gros, BTFS est une version d’IPFS « un CID à la fois »
IPFS est formidable, mais pour devenir vraiment utilisable au quotidien, il lui faut selon moi de gros progrès dans au moins trois domaines. D’abord, il ne devrait pas être nécessaire de faire tourner un proxy de nœud local. J’ai entendu dire que Brave intègre le support de WebTorrent, mais comme je n’utilise pas Brave, je ne sais pas si ce n’est que du WebTorrent de nom ou pas
Ensuite, la latence de résolution du swarm/des pairs est pénible au point d’avoir un côté « gadget crypto web3 », et cette latence fait que la navigation rappelle l’époque des modems 14.4k
Enfin, IPFS est excellent pour des contenus rarement modifiés mais très populaires, comme Wikipedia, des sorties de jeux ou du contenu MDN. Mais si l’on pense à parcourir un dépôt git, remplacer « tip » ou « main » par une version à jour est assez laborieux. À ma connaissance, IPNS est le seul moyen de résoudre le CID le plus récent, et le DNS est un mécanisme qui a facilement tendance à devenir l’un des nombreux éléments qui se compliquent à chaque panne
Je sais que je me suis un peu trop étendu sur un système de fichiers autre que celui présenté, mais même si je n’installerai probablement pas BTFS, ceux que cette idée intéresse ont intérêt à lire davantage sur IPFS. Il faut simplement garder à l’esprit ses limites actuelles
https://github.com/anacrolix/torrent avait un pilote FUSE depuis 2013. Le projet en est maintenant aux premières étapes de sa suppression
WebDAV, des FUSE tiers et des wrappers HTTP font tous à peu près la même chose. Ils exposent des liens magnet, des info hashes et des fichiers torrent comme s’il s’agissait d’un système de fichiers immuable. Le support de BitTorrent v2 est actuellement présent sur master