Bonjour,
AStreamFS est un driver "fuse" permettant de monter une URL quelconque. La seule contrainte est que le serveur doit être compatible avec les "range", ce qui est très souvent le cas.
Il existait déjà un httpfs, simple mais "naïf", c'est à dire faisant une requête à chaque "read" reçu. Avec la généralisation de https, cela devient assez inutilisable à cause du temps nécessaire pour le "handshake" qui crée une latence assez gênante dès qu'on veut faire plus que que lire quelques octets.
Au contraire, AStreamFS tâche de maintenir des "streams" chaque fois que c'est possible, et ne fait des requêtes unitaires qu'en dernier recours. Dans ce cas là vous êtes sans doute en accès vraiment aléatoire, et vous devriez considérer récupérer le fichier en local.
L'idée à la base de AStreamFS était de pouvoir me servir plus simplement de mon abonnement 1fichier + fibre.
1fichier dispose bien d'une fonctionnalité "expérimentale" pour "streamer" vos films de vacances ou Big Bucks Bunny que vous avez stocké dans le nuage, mais cette fonctionnalité est... expérimentale !..
La façon dont fonctionne 1fichier, pour les abonnés, est que le lien de redirection est valable 30 minutes (pour autant d'usage que l'on veut). Tout va bien tant qu'on est dans cette limite, mais au delà, si vous avez la malheur de vouloir par exemple faire une pause, votre film de vacance va s'arrêter et vous devrez reprendre toute la manipulation plus se remettre où vous en étiez.
Aussi, la manipulation passe par le navigateur.
Bref... pas vraiment pratique.
L'utilisation de httpfs existant pour 1fichier était impossible à cause des limites signalées ci-dessus, en plus du fait que httpfs ne gère aucune option comme "forcer ipv4", "suivre un redirect", etc...
J'ai donc développé
AStreamFS pour pallier à cela.
AStreamFS n'a absolument aucune spécificité liée à 1fichier, c'est un driver "générique".
Par exemple vous pouvez "monter" l'iso d'Ubuntu (16.04.4) sans avoir à le télécharger en premier, simplement de cette façon :
astreamfs -O http://ftp.crihan.fr/releases/16.04.4/ubuntu-16.04.4-desktop-amd64.iso /mnt/iso
Dans votre répertoire
iso, vous verrez alors
ubuntu-16.04.4-desktop-amd64.iso, vous pouvez alors, à partir de votre navigateur de fichier (Nemo pour moi) faire clic-droit/Ouvrir avec/Monteur d'image disque
... et voila, vous pouvez parcourir votre iso d'Ubuntu sans avoir à télécharger. Vous pouvez alors récupérer des morceaux à l'intérieur de l'iso, la copie se fera essentiellement en "stream".
Package.
Par commodité pour ceux qui ne veulent pas (ou ne savent pas) compiler à partir du source, je vous ai fait un package tout prêt à l'usage pour la version 16.04 (Xenial).
Instructions d'installation :
sudo add-apt-repository ppa:alainb06/astreamfs
sudo apt-get update
sudo apt-get install astreamfs
Note : le package ne contient pas le script d'exemple pour installer 1fichier. Mais comme il vous suffit de récupérer le script sur mon dépôt GitLab, je présume que si vous savez un peu jouer avec les scripts, ce ne sera pas un obstacle !
Compilation à partir du source.
sudo apt-get update
sudo apt-get install git libfuse-dev libcurl4-openssl-dev
git clone https://gitlab.com/BylonAkila/astreamfs.git
cd astreamfs/
cc -Wall astreamfs.c $(pkg-config fuse --cflags --libs) $(curl-config --cflags --libs) -o astreamfs -lpthread
sudo cp astreamfs /usr/local/bin/
Les instructions ci-dessus fonctionnent à partir d'un live-iso Ubuntu.
Vous pouvez adapter selon les packages que vous avez déjà et selon le nom du gestionnaire de paquet que vous utilisez dans votre distribution et des noms de paquets dans le dépôts.
Utilisation avec 1fichier.
Pour l'utiliser avec 1fichier, j'ai mis un script rudimentaire qui prépare la commande et lance astreamfs avec tout ce qu'il y a à la racine de votre stockage 1fichier.
Vous verrez alors par exemple :
Ou bien en ligne de commande :
$ ls -l /tmp/1fichier
total 3439536
-rw-rw-r-- 1 alain alain 725106140 mai 27 2008 big_buck_bunny_1080p_h264.mov
-rw-rw-r-- 1 alain alain 151092 mars 3 22:11 pocket-watch-3156771_960_720.jpg
-rw-rw-r-- 1 alain alain 1172428172 mars 3 22:09 Sintel.2010.1080p.mkv
-rw-rw-r-- 1 alain alain 38919 mars 3 22:10 snow-leopard-1985510__340.jpg
-rw-rw-r-- 1 alain alain 140713 mars 3 22:12 snow-leopard-1985510_960_720.jpg
-rw-rw-r-- 1 alain alain 1624211456 févr. 28 20:15 ubuntu-16.04.4-desktop-amd64.iso
Vous pouvez alors utiliser les fichiers de votre stockage comme si c'était des fichiers locaux, simplement en cliquant dessus (gestionnaire de fichier) ou en faisant des commandes dessus.
Le montage est bien sûr "read-only" vu qu'on parle à un serveur http, donc toute commande de modification échouera.
Montage "en 1 clic" 1fichier.
Version 0.7.4 requise + script '1fichier'
Placez dans votre /etc/fstab la ligne suivante:
/your/path/1fichier#/path/to/credentials /mount/path/1fichier fuse ro,uid=1000,gid=1000,umask=0022,user,noauto 0 0
(remplacez uid=1000,gid=1000 par vos uid/gid si ce ne sont pas les bons)
Votre fichier
/path/to/credentials doit contenir l'identifiant et le mot de passe de votre compte 1fichier pour que le script puisse récupérer la liste et la passer à astreamfs.
Ce fichier doit contenir 2 lignes, de la sorte:
id='your_id'
passwd='your_password'
Explication: les options "user" et "noauto" permettent
- à un utilisateur de faire le montage sans droits root
- à ne pas faire le montage au démarrage (le contraire nécessiterait d'autres options car le réseau n'est pas actif quand /etc/fstab est exploité)
Vous aurez alors dans Nemo (ou Nautilus) une icône représentant 1fichier (si vous l'avez bien mis dans votre /home).
Il vous suffit alors de cliquer dessus, attendre quelques secondes que le script tourne, et le montage se fait tout seul...
"en 1 clic"... magie !..
Bien sûr, vous pouvez procéder de la sorte avec n'importe quel autre montage https/http.
Sécurité : selon la suggestion de Roschan (#25), si le mot de passe n'est pas spécifié dans le fichier de configuration, le script vous demandera de le saisir. Dans ce cas, ce n'est évidemment plus tout à fait du "1 clic"... mais c'est à vous de choisir entre la sécurité et la commodité selon la sensibilité des données distantes dont vous réalisez le montage.