Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous souhaite d'excellentes fêtes de fin d'année !

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/12/2018, à 23:37

Zakhar

[1fichier] "Montez" votre stockage 1fichier en une commande simple !

Vous connaissez peut-être l'espace de stockage en ligne (cloud) 1fichier.

Très pratique pour partager vos vidéos de vacance en famille ou avec des amis, ou pour stocker vos précieuses données en ligne.

1fichier a récemment exposé des APIs pour faciliter les développements autour de leur service.

Aussi, j'ai adapté mon "driver" générique astreamfs avec l'utilisation des APIs.

Pour rappel, le "montage" permet d'accéder (en lecture seule) à votre espace 1fichier en ligne comme s'il s'agissait de fichiers locaux. Vous pouvez naviguer dans votre arborescence distante avec Nautilus, Nemo, Dolphin, etc... ou en ligne de commande, et cliquer sur les fichiers distants pour les ouvrir avec le programme correspondant associé, au même titre que des fichiers locaux.
Le "driver" est adapté à des opérations de "stream" (la plupart des accès sont en stream), ainsi vous pourrez voir les vidéos de vacance HD (1080p) que vous ont partagées vos cousins avec une ligne ADSL standard à 20Mbps. Pensez dans ce cas là à mettre un "buffer" suffisant à VLC (ou votre lecteur vidéo) pour éviter les freezes dus aux "jitter" réseau. Un buffer de 30 sec est en général Ok.

Avantages :
Simplicité
- Plus besoin de combiner le script (1fichier) avec astreamfs pour monter votre "cloud"
- Le montage se fait, à l'extrême simplicité, avec la commande suivante :

1fichierfs /path_to/mountpoint/

Dans ce cas, le programme vous demandera votre clé d'API. Lancez avec -h pour voir les options.

Fonctionalités
- La lecture des répertoires distants se fait en tant que de besoin, votre montage est donc davantage à jour et pas de ralentissement au lancement avec le script.
- Par effet de l'API, vous pouvez accéder à vos fichiers protégés par mot de passe (bonne pratique pour des fichiers personnels "en clair").

Limitations
- Le "partage" et "groupware" ne sont pas codés. Le driver fonctionne pour vos propres fichiers.

Où on trouve ça :

Sur mon Gitlab, ici : https://gitlab.com/BylonAkila/astreamfs

Vous avez l'option de compiler (une commande pour installer les dépendances, et une commande pour compiler) si vous voulez un driver plus à jour.
Sinon vous pouvez prendre directement le .deb sur mon PPA (https://launchpad.net/~alainb06/+archiv … /astreamfs) pour les 2 dernières LTS (voir post #2)


Release (20 janvier 2019)
- La version 1.0.0 est désormais disponible.
- Elle comprend tout ce qu'il est possible de faire "raisonnablement" (voir détail plus loin) avec les API dans leur état actuel.
- Elle comprend également des pages de manuel en anglais et en français.

man 1fichierfs

[Non Libre] Besoin d'aide !
Si quelqu'un a un Mac, et se sent suffisamment à l'aise pour y lancer quelques commandes, le programme est sans doute adaptable sans trop de difficulté sur Mac puisque l'équivalent de "fuse" y existe. L'autre librairie utilisée : curl, est suffisamment universelle pour ne pas poser non plus de problème sur Mac.

Donc si c'est le cas, n'hésitez pas à entrer en contact ici ou sur le gitlab.


Aide au debug
Si vous rencontrez des bug, essayez de relancer avec l'option -l7 (debug maximal) et mettez la sortie sur un fichier avec par exemple: --log-file=/tmp/debug.txt
Ca permet de voir où ça se passe !

Dernière modification par Zakhar (Le 20/01/2019, à 19:29)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#2 Le 18/12/2018, à 21:00

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Disponibilité directement sur mon ppa.

Pour installer (version 0.9.1):

sudo add-apt-repository ppa:alainb06/astreamfs
sudo apt-get update
sudo apt-get install 1fichierfs

TODO, grâce aux APIs :

  • Renommage/déplacement de fichiers ou répertoires

  • Suppression de fichiers ou répertoires

Dernière modification par Zakhar (Le 05/01/2019, à 22:11)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#3 Le 25/12/2018, à 17:39

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Démarrage automatique du montage :

Par convention, supposons que vous vouliez monter dans le répetoire 1fichier de votre /home, adaptez les commandes si vous choisissez autres chose.

Remplacez dans les instructions ci-dessous, "zakhar" par votre nom d'utilisateur.

Créez un fichier : ~/.1fichier.key dans lequel vous mettez votre clé d'API. Donnez à ce fichier les seuls droits en lecture pour votre utilisateur et rien d'autre. Il s'agit d'une raison de sécurité, pour éviter que votre clé d'API soit visible via la commande ps.

A rajouter dans /etc/fstab

1fichierfs /home/zakhar/1fichier fuse _netdev,api-key=@/home/zakhar/.1fichier.key,ro,uid=1000,gid=1000,umask=0377,user,noauto 0 0

A partir de là, vous pouvez déjà monter votre stockage cloud "à la demande", simplement en cliquant dessus via Nautilus/Nemo, etc...

Pour un montage automatique au démarrage, rajoutez simplement dans "Programmes au démarrage", une entrée avec la commande :

mount /home/zakhar/1fichier

... et voila, vous avez maintenant votre cloud monté systématiquement au démarrage (sauf bien sûr si votre machine a été démarrée sans réseau internet).

Dernière modification par Zakhar (Le 25/12/2018, à 17:39)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#4 Le 01/01/2019, à 20:55

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Version 0.9.0

Il s'agit de la version quasi complète pour la partie "read-only".
Elle intègre la robustesse du driver à une désynchronisation avec le serveur, plus le RCU et les diverses manipulations mémoire ont été testés avec Valgrind.

Sur la partie read-only, il reste à coder la limitation des requêtes d'API... mais à part le faire exprès, il serait étonnant d'arriver à déclencher les limites du serveur !

La suite est le "rename" (renommage) de fichiers/dossiers, qui fera passer le driver en "read-write".


Installation

- En compilant (voir post #1)
- Via le ppa (voir post #2)
- Si vous avez déjà installé via le ppa, rien à faire de spécial, la MàJ vous sera proposée.


Dés-installation

- Si installé par compilation, simplement supprimez l'exécutable dans /usr/bin
- Via le ppa :

sudo apt purge 1fichierfs

Dernière modification par Zakhar (Le 01/01/2019, à 20:55)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#5 Le 02/01/2019, à 08:57

jaxx21

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Super Merci. Avant pour moi ca fonctionnait pas, mais maintenant, c'est niquel. Merci. (quand ca fonctionnait pas , ca venait surement de moi.Ca montait le dossier 1fichier mais vide dedans, maintenant, je vois tout). Un gros merci pour la simplicité smile
Bon courage pour la suite

Dernière modification par jaxx21 (Le 02/01/2019, à 09:12)

Hors ligne

#6 Le 02/01/2019, à 18:23

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Ravi que ça te plaise !

astreamfs avec 1fichier nécessitait de passer par le script qui composait l'arborescence (par "scraping" des pages web). C'était effectivement moins simple. L'API simplifie cela.

N'hésite pas à lancer

1fichierfs -h

Pour voir toutes les options. Pour l'instant l'aide est en anglais. tongue

@jaxx21 : petit sondage (pour la suite et savoir où concentrer les efforts)
Installation :
-1) utilisé le PPA et installé le package tout fait
-2) ou compilé depuis le source

Utilisation :
-1) Montage en ligne de commande quand besoin
-2) Montage via clic dans Nautilus/Nemo quand besoin (/etc/fstab)
-3) Montage systématique au démarrage (/etc/fstab + commande au démarrage session)

Dernière modification par Zakhar (Le 02/01/2019, à 20:07)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#7 Le 03/01/2019, à 00:05

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Cependant il faudra aussi être patient, ce soir (02/Jan/2019), les serveurs 1 fichier renvoient aléatoirement des http 404 sur les listages de répertoires existants !..
Problème signalé.

A debugger côté client, le "driver" n'était pas supposé s'arrêter dans ces conditions, mais simplement rendre un répertoire vide... or il s'arrête. Je vais investiguer ça.

Dernière modification par Zakhar (Le 03/01/2019, à 00:07)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#8 Le 03/01/2019, à 13:44

jaxx21

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Alors pour ma part, je suis novice sous ubuntu par rapport à vous. J'ai un petit serveur sur online le temps que la fibre arrive chez moi (fin du mois enfin !!! )

Donc, le serveur est toujours allumé, et j'ai installé en ppa et ensuite j'ai lancé la ligne de commande 1fichierfs et le dossier /home/xxx/1fichier/ Ca monte direct le dossier. Très simple et accessible pour tout le monde.
Donc, j'y ai acces dans l'explorateur (ca doit s'appeler autrement sous ubuntu) et aussi sous filezilla, je vois bien le dossier avec les fichier dedans, mais dans plex, quand je veux ajouter le dossier 1fichier, et bien il est vide. Ça m'avais fait ça aussi avec google drive (monté avec rclone) et j'ai modifié le fichier .conf de mémoire pour accès all program ou un truc du genre.Mais je sais plus trop. Donc mon dossier googledrive plein dans plex mais pas 1fichier. Mais , pas grave. ca fonctionne bien pour moi ici. MERCI

Edit: ha oui, et je tiens à signaler que quand on recherche 1fichier api install, on trouve ton topic uniquement. Je vois nulle part quelqu'un qui s'y intéresse. Trop tôt je pense.  uptobox l'a fait aussi la dispo des api.
1fichier est niquel. Et ton boulot donc est et sera de plus en plus apprécié.

Dernière modification par jaxx21 (Le 03/01/2019, à 13:50)

Hors ligne

#9 Le 03/01/2019, à 14:41

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Merci !
Pour Uptobox, je ne suis pas abonné, et j'ai jeté un oeil rapide aux APIs, il ne me semble pas que ce soit aussi complet que ce qu'a fait récemment 1fichier. Visiblement ce sont juste des APIs pour vérifier que les liens ne sont pas morts. (J'ai peut-être regardé un peu trop rapidement...)

Pour ton histoire avec Plex, probablement c'est une question de "user".

Pour des raisons de sécurité, un montage fuse n'est accessible par défaut qu'à l'utilisateur qui l'a monté. Dans mon cas, seul le user "Zakhar" peut lire les fichiers.
Or, très probablement également pour des raisons de sécurité, Plex doit tourner sur un autre user (pas vérifié le point). Il n'est pas rare que des logiciels de ce genre créent leur propre user, pour éviter les risques de pollution des fichiers sur la machine.

Vu que (pour l'instant), on est en mode "read-only", tu peux contourner sans grand risque la mesure de sécurité de fuse en rajoutant le paramètre : -o allow_other (autoriser les autres).

Ca donne donc :

1fichierfs --api-key=Ton_API_Key -o allow_other /home/xxx/1fichier

Et là, les autres utilisateurs vont pouvoir accéder aux fichiers, et sans doute Plex les verra, pour peu que tu aies donné les bons droits au répertoire 1fichier (les droits du répertoire sont "propagés" aux fichiers montrés dans l'arborescence).
Quand tu regardes ton répertoire 1fichier avec "l'explorateur" (si tu n'as rien changé, par défaut il s'appelle en fait Nautilus) si tu fais "propriétés" il y a 3 groupes définis : l'utilisateur, le groupe, et les autres. Les autres doivent avoir "Accès au fichiers".
En ligne de commande, cela ne marcherait pas dans l'exemple ci-dessous car là les "autres" n'ont accès à rien :

$ ls -l ~
total 1604
dr--------  2 zakhar zakhar   4096 avril 10  2018 1fichier

Tu dois avoir un truc du genre:

$ ls -l ~
total 1604
drwxr-xr-x  2 zakhar zakhar   4096 avril 10  2018 1fichier

Le troisième bloc "r-x" te dit que les autres ont le droit de lister (x) et d'accéder les fichiers (r).
Pour donner les bons droits à ton répertoire 1fichier, en faisant

$ chmod o+rx 1fichier

Combiné avec le -o allow_other, tout devrait marcher avec Plex.


Dans mes essais avec Kodi, de mémoire, j'avais du faire ce genre de chose pour que ça marche.
Après, l'autre solution est de faire tourner Plex sous ton user, il doit y avoir des paramètres pour ça... mais je ne recommande pas car cela ouvre le risque qu'un bug (ou faille exploitable) de Plex, mette la grouille dans tes propres fichiers.


jaxx21 a écrit :

Trop tôt je pense.

Oui, les API étaient encore ouvertes confidentiellement il y a 3 mois.
Actuellement, ouvert à tous, mais encore "expérimental".
J'ai signalé un comportement bizarre hier (cf post plus haut) et la team 1fichier qui est très réactive a répondu qu'effectivement c'était bien un bug de leur côté dont ils n'ont pas encore identifié la source.
Donc les API ne sont pour l'instant pas encore déclarées "totalement ouvertes", et il est normal qu'elles ne soient pas encore beaucoup utilisées.

... et aussi il faut un peu de temps pour coder tout ça dans les logiciels locaux !

Dernière modification par Zakhar (Le 03/01/2019, à 15:05)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#10 Le 04/01/2019, à 08:29

jaxx21

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Superrrr

1fichierfs --api-key=Ton_API_Key -o allow_other /home/xxx/1fichier fonctionne à merveille. Merci à toi.J'avais la flème de rechercher encore une fois comment faire pour acceder avec plex.Et la, trop bon. Merci à toi.

EDIT: Et en plus, trop trop rapide par rapport à google drive. (et rclone pour rappel). Je viens de mettre 2 films dans un dossier et lancer le scan, c'est très rapide. Avec google drive, ca mouline ca mouline et ca cherche et mouline et enfin le scan est fait pour ensuite mouliné pour mettre la jaquette.Et plex met du temps pour chercher l'endroit ou se trouve le film.Au final ca fonctionne impec si on ne compte pas le temps.Merci en tout cas. Du bon boulot.

Question; qu'appel t'il requête abusive? j'ai cru lire ça sur 1fichier

Dernière modification par jaxx21 (Le 04/01/2019, à 08:36)

Hors ligne

#11 Le 04/01/2019, à 12:53

lynn

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Bonjour Zahkar,

J'ai installé 1fichierFS (par le ppa, j'ai choisi la facilité... tongue) et lancé la commande suivante qui fonctionne très bien

1fichierfs  --api-key=@/home/lynn/.1fichier.key /home/lynn/1fichier/

Dans l'explorateur de fichier, quand on clique sur le raccourci de gauche, ça monte le répertoire mais quand on veut démonter, j'ai ce message

umount /home/.... permission non accordée.

J'ai peut-être raté quelque chose..?


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#12 Le 04/01/2019, à 15:01

jaxx21

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Si je peux t'aider car j'y connais peu. As tu essayer sudo devant ta commande pour avoir les droits root sudo umount /home/lynn/1fichier/

Dernière modification par jaxx21 (Le 04/01/2019, à 15:01)

Hors ligne

#13 Le 04/01/2019, à 17:17

lynn

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Bonjour jaxx21,

jaxx21 a écrit :

Si je peux t'aider car j'y connais peu. As tu essayer sudo devant ta commande pour avoir les droits root sudo umount /home/lynn/1fichier/

Oui, javais essayé de démonter en utilisant sudo et ça fonctionne; Mais devoir ouvrir un terminal pour démonter le système n'est très vraiment utilisable par tout le monde... tongue


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#14 Le 04/01/2019, à 18:21

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

lynn a écrit :

Bonjour Zahkar,
J'ai peut-être raté quelque chose..?

Bonjour,

non, tu n'as rien fait de grave et le message est normal... la faute est à Nautilus/Nemo, pas à toi.

Nautilus/Nemo ne sont pas très malins, ils tentent de démonter un montage par "umount". Or un montage fuse ne se démonte pas par "umount", mais par la commande "fusermount -u /path/to/mount".

Pourtant on voit bien en faisant "mount" (sans options) que ce path est monté via fuse... mais Nautilus/Nemo persistent à vouloir "umount" !..

Contournements possibles :
-1) Tu lances en ligne de commande :

fusermount -u /home/xxx/1fichier

-2) Tu fais un simple script qui fait cela et démonte les choses montées via fuse : 1fichierfs, encfs, curlftpfs, etc...
A ce moment là, tu auras via clic droit un nouveau menu "Script" et dans ce menu, la possibilité de lancer ton script sur le montage, lequel va démonter l'arborescence.

Pour l'option 2, voici le script que j'utilise :

#!/bin/sh

for f in "$@"; do
  [ -d "${f}" ] && grep -q "${f}" /etc/mtab && fusermount -u "${f}"
done

Comme j'utilise Nemo (Nautilus, le machin par défaut est navigateur de fichier qui a été "émasculé" sur l'autel des tablettes !), je place le script dans : ~/.local/share/nemo/scripts

Pour Nautlius, je crois bien que l'endroit où mettre le script est, tout simplement : ~/.local/share/nautilus/scripts (si ça n'a pas changé en 18.04 !)

Bien sûr il faut rendre le script exécutable, et le nom que tu vas lui donner est ce qui apparaîtra dans le menu. Donc par exemple, tu peux placer le script ci-dessus dans

"~/.local/share/nemo/scripts/Démonter 1fichier"

ou pour Nautilus

"~/.local/share/nautilus/scripts/Démonter 1fichier"

Le script que j'ai bricolé ci-dessus vérifie simplement que ce qu'on lui passe est bien un répertoire, et qu'il correspond bien à un point de montage. Si c'est le cas il fait un fusermount -u dessus. Donc bien sûr, si tu le lances sur une montage standard, ça râlera puisque un montage standard se démonte par umount !
Il peut démonter plusieurs montages à la fois (boucle for) si l'utilisateur a choisi plusieurs répertoire montés.
Si tu veux rafiner le script et vérifier qu'il s'agit d'un montage "fuse", c'est tout à fait possible en lisant le type de montage dans /etc/mtab, et à ce moment là n'applique le fusermount que si c'est bien du "fuse". Cela dit, si tu appliques le script actuel sur un montage standard, ça va juste râler mais ça ne fera rien d'autre, et le montage standard restera dans l'état où il est !

Dernière modification par Zakhar (Le 04/01/2019, à 18:35)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#15 Le 04/01/2019, à 18:35

lynn

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Merci Zakhar, ça fonctionne avec fusermount -u.

Par contre, pourquoi c'est en lecture seule..? C'est un peu à contre emploi pour un cloud non ?


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#16 Le 04/01/2019, à 18:56

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

En synthèse : c'est en lecture seule parce que l'API ne permet pas d'écrire de façon simple.

Et aussi... parce que c'est un dérivé de l'autre driver que j'ai écrit précédemment : astreamfs, qui fonctionne avec n'importe quel serveur web (seule contrainte : qu'il serve des "Range", ce qui est assez commun).
Ainsi avec astreamfs, tu peux monter, par exemple : un partage sur ta Freebox, l'iso d'Ubuntu sur les serveurs web, etc...

On comprend bien alors qu'on s'adresse à un serveur Web... lequel est fait pour te servir des fichiers, pas pour que tu lui donnes des fichiers !..


En détail

Pour 1fichier, ce n'est pas vraiment "à contre emploi" selon l'usage. L'utilisation principale de 1fichier est le "partage", c'est à dire sauvegarder dans son arborescence le lien sur la vidéo de vacances que Tonton Jules a mise en ligne sur 1fichier.
Quand on a un compte sur 1fichier, cette opération prend 3 clics, il suffit de cliquer sur le bouton orange "Sauvegarder sur mon compte" après avoir suivi le lien aimablement mis à disposition par Tonton Jules.
C'est surtout nettement moins long de faire ainsi que de faire un upload depuis un fichier local. Ayez en tête que tout le monde n'a pas la fibre, et qu'avec un "ADSL qui marche bien" (à moins de 1500m du DSLAM), on est quand même à 2 heures 30 pour 1G d'upload. C'est vite dissuasif.

Bien sûr, si on a la fibre, et qu'on veut aussi utiliser 1fichier pour ses sauvegardes personnelles, c'est une autre histoire. Par exemple, je songe à reaper ma collection de CD avant que mon dernier lecteur de CD/DVD ne tombe en panne... ça fera grosso modo 15 giga (en flac), et sans doute plus de 500 fichiers. Là c'est sûr un mode "write" serait pratique !


Cependant 1fichierfs va évoluer vers le "write" de la façon suivante :
- On pourra renommer un fichier sur son cloud (ou le renommer entre répertoires, ce qui est en fait un déplacement), idem renommer/déplacer un répertoire.
- On pourra supprimer un fichier ou un répertoire.

Ces choses là sont faisables simplement avec l'API, et je vais donc les implémenter.

La mise en ligne d'un fichier sur 1fichier est une autre histoire... et c'est assez hors de proportion de la coder dans le driver.
Cependant, tu peux d'ores et déjà faire la chose suivante (c'est dans la version 0.9.0), c'est : déclarer un trigger de rafraîchissement.

Il y a deux façons de faire ça, soit avec un temps donné, soit avec un "fichier trigger" à la racine du montage.

Ainsi, voici la ligne de commande que j'utilise (dans mon /etc/fstab) :

1fichierfs /home/zakhar/1fichier -o ro,api-key=@/home/zakhar/.1fichier.key,refresh-file=000_refresh.txt,refresh-time=1200,log-level=7,log-file=/tmp/debug.txt,uid=1000,gid=1000,umask=0377

Vous noterez les options :
--refresh-file=000_refresh.txt
refresh-time=1200

La première option, fait apparaître, à la racine du montage, un fichier du nom spécifié, en l'occurrence : "000_refresh.txt".
Le fait d'ouvrir ce fichier, va provoquer un rafraîchissement de l'aborescence des fichiers au prochain accès.

Ainsi, tu continues à mettre les fichiers "normalement" dans ton cloud, par l'interface web, et si tu sais que tu as rajouté des fichiers, il suffit de cliquer sur le fichier "trigger", puis un coup de F5 sur Nautilus, et l'arborescence se rafraîchit.

L'autre option (refresh-time) est simple à comprendre, simplement au bout de 1200 secondes (mon paramètre), l'arborescence sera rafraîchie dès que tu fais un nouvel accès.


Piste future pour le "write".

Le "write" sera possible (ça me serait également pratique !), mais ça sera loin d'être aussi simple qu'avec le driver !..
Le principe est de combiner 1fichierfs avec un montage aufs (union), c'est à dire celui qui est utilisé pour les CD live.
Donc lorsqu'on va écrire sur ce montage global, ça va en réalité écrire sur la "branche haute" de l'union, qui désignera un emplacement sur le disque du local de l'utilisateur. Il est ainsi très simple de relire un fichier qu'on est en train d'écrire puisqu'en réalité il est local.
En parallèle et en tâche de fond, un script ira regarder cette emplacement où on écrit, et se chargera de mettre les fichiers en ligne sur 1fichier, dans le bon répertoire.
Une fois ceux-ci stockés et visibles sur l'aborescence 1fichier, le script utilisera le trigger pour déclencher le rafraîchissement du montage 1fichierfs, et supprimera le fichier de la partie "write".
La partie "write" n'est donc en quelque sorte qu'un espace de stockage temporaire, le temps que le fichiers soient en ligne.

Mais bien sûr, cette partie "write" pose alors tous les problèmes de synchro connus... notamment si tu coupes ton PC alors qu'il reste des fichiers à transférer, ça va évidemment faire échouer l'upload !
Aussi, si tu te sers du montage sur 2 PC avec la même cible cloud, les problèmes classiques qu'un fichier écrit sur un des deux PC ne sera visible de l'autre que lorsqu'il aura été totalement écrit.

On a aussi le problème de CoW (copy on write) avec l'union. Ainsi, si tu modifies 1 seul octet sur un fichier de 10Go qui est dans ta branche "read-only", il faut commencer par un download des 10Go, modifier l'octet, et faire l'upload... pas super performant ! tongue

Bref... quand on y songe un peu, le niveau de complexité, et les "emmerdes" (si vous me passez l'expression !) sont sans commune mesure quand on passe à l'écriture !

J'ai testé ce "concept" (fait un POC comme on dit !) à la main, et ça fonctionne.

Bien sûr, si vous voulez aider pour le script d'upload automatique, vous êtes les bienvenus. big_smile
Un script d'upload automatique permettrait déjà de simplifier l'upload "façon linux", en mettant juste les fichiers dans l'arbo surveillée par le script, même si on ne va pas jusqu'à monter une "union".
C'est donc en quelque sorte un développement "indépendant" que vous pouvez entreprendre indépendamment de mon "driver". big_smile
Ensuite, on peut faire le lien, via le montage "union" et le trigger de rafraîchissement, mais c'est pour faire "joli" !..

Comme c'est une partie que je n'ai pas encore commencée, vous partez d'une belle page blanche, c'est sympa pour faire à votre sauce. smile

Dernière modification par Zakhar (Le 04/01/2019, à 19:29)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#17 Le 04/01/2019, à 19:36

lynn

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Merci pour les explications.

À ce que j'ai compris, tu as beaucoup de boulot en perspective... tongue Sinon, développer, je ne saurais pas faire mais si tu as besoin de tester un truc, pourquoi pas.


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#18 Le 04/01/2019, à 19:41

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Bien sûr, c'est toujours utile des gens qui peuvent tester, parce qu'ils vont avoir des cas d'usage différents des miens, et ça contribue à la chasse aux bugs !

Pour les options "rename"/"delete", vous les aurez sans doute dans le prochaine package. Puisque vous avez installé via le ppa, ça arrivera "automatiquement" dans vos mise à jour proposées... quand j'aurai écrit le code... et suffisamment vérifié son fonctionnement. lol

Pour le script d'upload, je vous préviendrai ici si je fais un truc qui peut aider à ça.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#19 Le 04/01/2019, à 19:54

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

jaxx21 a écrit :

Question; qu'appel t'il requête abusive? j'ai cru lire ça sur 1fichier

En principe (sauf bug !... et il doit bien encore y en avoir quelques uns...) le driver 1fichierfs ne fait pas de "requête abusive".

Il y a deux parties chez 1fichier, avec des règles différentes.

La partie API est soumise à des règles de "throttling", c'est à dire que le frontal vérifie qu'on ne fait pas plus de 3 requêtes par seconde en moyenne, et à ma demande ils ont rajouté un "burst", c'est à dire que sur une courte période (ex. 10 sec) on a droit à 10 req/s.
1fichierfs utilise massivement le parallélisme et tâche de limiter au maximum les locks. Mais malgré cette optimisation (et tu as bien vu... ça va plus vite que GDrive !...) en usage "normal" il sera bien rare qu'un utilisateur atteigne les limites fixées par 1fichier.

Si c'était le cas, le serveur rendrait le code HTTP 429 (qui signifie : "trop de requêtes"), et il suffit alors d'attendre un peu pour refaire la requête. Cette partie (ré-émission de la requête après attente) reste à coder dans le driver. Comme je n'ai jamais constaté personnellement le HTTP 429, ce n'est pas bien urgent, mais ça sera implémenté.
Ce qui est codé (mais pas encore packagé) est la "résistance aux bugs du serveur". Donc actuellement si on recevait un 429, dans la version packagée que vous avez... le driver s'arrête (pas cool !), dans la version en développement, il continue en montrant un répertoire vide. On peut alors utiliser le "trigger" comme mentionné plus haut pour "réessayer à la main" en attendant que je code la ré-émission automatique.

La deuxième partie est la récupération des fichiers eux-mêmes. Là les règles sont "anciennes" et sont les mêmes que celle existantes pour le téléchargement "classique". Donc si le serveur renvoie des erreurs, on est prié d'en tenir compte, et éviter de bombarder le serveur avec la même requête qui renverrait la même erreur. Là on n'a pas d'avertissement avec HTTP 429, c'est bannissement direct pour 1h.
Je suis tombé dans le cas avec un bug de la partie "stream" du driver... a priori j'ai corrigé le bug, et donc, toujours "en usage normal", vous ne devriez pas tomber dans les cas "usage abusif".

A savoir, le driver est codé avec 4 thread de download (c'est un #define dans le code, donc on peut changer facilement, mais ce n'est pas accessible en paramètre). Cela signifie que l'on peut avoir 4 streams actifs en parallèle, et si on a la connexion qui va bien, c'est toujours fluide.
J'ai testé par exemple en ouvrant 4 films avec VLC, c'est amusant... et merci la fibre de Free à 1Go. tongue

On peut bien sûr aller au delà, mais à partir du 5ème flux, on ne sera plus en "stream" puisqu'on n'a que "4 moteurs". Donc le 5ème flux va être lu par blocs, et là c'est la cata en performance à cause du https, et de la latence que ça crée.

Donc en pratique, le driver n'aura jamais vraiment plus de 5 ou 6 flux (4 streams + 1 ou 2 requêtes) en parallèle sur le serveur, ce qui n'est pas considéré comme "abusif".

Maintenant, si vous avez le besoin... par exemple un plex qui sert plein d'utilisateurs, de lire 6 ou 7 flux en parallèle, je peux très bien monter le nombre de "moteurs" en paramètre, mais 4 m'a semblé un bon chiffre dans l'immédiat !
Et je ne connais pas les limites de 1fichier sur le "parallélisme"... en tout cas à 4 flux, ça passe. big_smile

Dernière modification par Zakhar (Le 04/01/2019, à 20:10)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#20 Le 05/01/2019, à 15:06

jaxx21

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

ok, merci pour toutes ces infos. Moi ca bug mais a cause de moi je pense lol.

Alors, chaque fois que je redémarre je lance 2 commandes:

rclone mount -vvv --allow-other --allow-non-empty gdrive: /home/jax/gdrive

et

1fichierfs --api-key=XXXXXXXXXXXXXX -o allow_other /home/jax/1fichier

ca me monte Gdrive et 1 fichier donc.

Dans plex,  j'ai donc film (gdrive) et film (1fichier) des que je clique sur film(gdrive) et que je clique sur un film (donc demande de requête) ca désactive film(1fichier) en indisponible.
Et dans ubuntu, le dossier est toujours monté mais impossible d'aller dedans.J'ai le sens interdit et il me dit que le dossier est pas trouvable.

Après c'est pas méchant, car je peux toujours lancer la commande 1fichierfs d'ailleurs.Ou je pourrai mettre un 2ème utilisateur sous ubuntu avec une autre cession en attente. a tester

Sinon, je ne suis pas pressé pour l'upload ou le delete ou l'écriture. On le fait direct dans le 1fichier.com. La lecture est trop cool smile on voit mieux ce que l'on possède aussi dans Nautilus. Merci encore smile

Dernière modification par jaxx21 (Le 05/01/2019, à 15:09)

Hors ligne

#21 Le 05/01/2019, à 15:21

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Pour que j'aie une idée de ce qui ne va pas, tu peux faire les choses suivantes :


$ ps -ef | grep 1fichierfs
zakhar     5053  2258  0 12:22 ?        00:00:11 1fichierfs /home/zakhar/1fichier -o ro,noexec,nosuid,nodev,api-key=@/home/zakhar/.1fichier.key,refresh-file=\!000_refresh.txt,refresh-time=1200,log-level=7,log-file=/tmp/debug.txt,uid=1000,gid=1000,umask=0377
zakhar     9767  3089  0 15:14 pts/17   00:00:00 grep --color=auto 1fichierfs

Et me dire si tu vois bien les 2 lignes ou pas.
La première ligne te dit que 1fichierfs tourne toujours, l'autre est juste la commande qu'on vient de taper. Si tu n'as plus que la commande, c'est que 1fichierfs s'est planté.
S'il est planté, il faut faire un "fusermount -u /home/jax/1fichier" avant de le monter à nouveau.

Dans ce cas tu peux me donner le retour de :

$ grep 1fichier /var/log/syslog

Ça peut donner une idée de ce qui ne va pas.

Si tu peux reproduire le plantage de façon à peu près systématique, tu peux lancer la commande comme moi, en rajoutant les options de debug.

1fichierfs /home/zakhar/1fichier -o ro,api-key=@/home/zakhar/.1fichier,log-level=7,log-file=/tmp/debug.txt

C'est à dire :
--log-level=7
(niveau de log le plus verbeux : DEBUG)

--log-file=/tmp/debug.txt
(fichier où on met la log... indispensable en log-level 7 sinon ta "syslog" va morfler !)

Ensuite tu m'envoies le fichier /tmp/debug.txt dès que le plantage survient, ça aidera à voir d'où ça vient.

P.S.: comme le fichier "debug" fait rapidement quelques méga, surtout si on download des fichiers, le mieux est que le mettes sur ton espace 1fichier, et tu m'envoies le lien en message privé.

Dernière modification par Zakhar (Le 05/01/2019, à 15:29)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#22 Le 05/01/2019, à 16:00

jaxx21

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Ok, merci de ta réponse rapide.Je fais ca cette nuit au calme.Les enfants sont la, concentration impossible lol.
ta commande

fusermount -u /home/jax/1fichier

fonctionne du tonnerre. Plus besoin de reboot.Ca ira plus vite.

pour la commande

 ps -ef | grep 1fichierfs

j'ai bien les 2 lignes (pas la meme que toi car je tape la commande toute simple.

et pour la commande

 grep 1fichier /var/log/syslog

ca me donne ca

Jan  5 04:58:10 sd-70710 1fichierfs: [1fichierfs   777.902320] CRITICAL: (http_code: 403) Ignoring get_token for file=`FILM0.mp4`.
Jan  5 05:13:01 sd-70710 1fichierfs: [1fichierfs   613.354708] CRITICAL: (http_code: 403) Ignoring get_token for file=`FILM.mkv`.
Jan  5 05:27:25 sd-70710 1fichierfs: [1fichierfs   124.932891] CRITICAL: (http_code: 403) Ignoring get_token for file=`FILM1.mkv`.
Jan  5 07:13:44 sd-70710 1fichierfs: [1fichierfs  1132.623904] CRITICAL: (http_code: 403) Ignoring get_token for file=`FILM2.mkv`.
Jan  5 07:27:54 sd-70710 1fichierfs: [1fichierfs   167.218184] CRITICAL: (http_code: 403) Ignoring get_token for file=`FILM3.mkv`.
Jan  5 07:36:57 sd-70710 1fichierfs: [1fichierfs    56.853251] CRITICAL: (http_code: 403) Ignoring get_token for file=`FILM4.mkv`.
Jan  5 11:21:43 sd-70710 kernel: [12546.592007] 1fichierfs[2483]: segfault at 2 ip 00007f866ecc1cc0 sp 00007f8663fde3e0 error 4 in libc-2.23.so[7f866ec73000+1c0000]
Jan  5 14:53:01 sd-70710 kernel: [12558.387695] 1fichierfs[2387]: segfault at 2 ip 00007f6c92bf6cc0 sp 00007f6c877dd3e0 error 4 in libc-2.23.so[7f6c92ba8000+1c0000]
Jan  5 15:00:32 sd-70710 kernel: [  220.836038] 1fichierfs[1994]: segfault at 2 ip 00007f4b92af1cc0 sp 00007f4b8cc1b3e0 error 4 in libc-2.23.so[7f4b92aa3000+1c0000]
Jan  5 15:45:54 sd-70710 kernel: [ 2583.982455] 1fichierfs[6990]: segfault at 2 ip 00007fbc83203cc0 sp 00007fbc7d32d3e0 error 4 in libc-2.23.so[7fbc831b5000+1c0000]

j'ai essayé de reproduire l'erreur.Ca bug plus.Je ferai plus de teste ce soir. Bizarre

Dernière modification par jaxx21 (Le 05/01/2019, à 16:21)

Hors ligne

#23 Le 05/01/2019, à 16:08

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Alors l'erreur est juste !

Comme j'ai dit plus haut, le programme actuellement packagé réagit assez mal quand le serveur renvoie des erreurs. Là tu as eu plusieurs 403... et dans ce cas, il se plante.

Je suis en train de consolider ça, mais ce n'est pas encore packagé.

Une petite question cependant, est-ce que les fichiers en question sont issus d'un répertoire qu'on t'aurait partagé sur ton 1fichier ?

En effet le 403 veut dire "accès interdit", c'est étrange. Et en réalité, les "partages" ne sont pas encore géré dans le programme (cf post #1) !

Donc pas besoin de tourner en mode "debug", l'erreur que tu as est malheureusement une limitation de la version actuelle. Cependant la réponse à la question ci-dessus "partage ou non" m'intéresse.
Si c'est une fonctionnalité dont tu as besoin, je veux bien la rajouter, mais pour ça il faudrait que tu crées un répertoire de test avec quelques fichiers que tu me partages, pour que je voie comment ça se présente.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#24 Le 05/01/2019, à 16:26

jaxx21

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

non, pas de partage, uniquement moi et mon compte. Apres, ca a planté souvent pendant le scan.il demandait trop de fichier à la fois je pense. Je vais continuer mon test du plantage ce soir que je n'ai pas réussi a ré effectuer.

Dernière modification par jaxx21 (Le 05/01/2019, à 16:27)

Hors ligne

#25 Le 05/01/2019, à 16:43

Zakhar

Re : [1fichier] "Montez" votre stockage 1fichier en une commande simple !

Aussi, comme dit plus haut, ils ont un bug sur le serveur.

J'ai constaté des HTTP 404 (not found) sur des répertoires qui étaient bien là !.. Le bug était sensé retourner désormais HTTP 500, mais là ce sont bien des HTTP 403, étrange, d'autant que tu dis que ce sont bien TES fichiers, et pas un partage !

La team 1fichier n'a pas encore trouvé l'origine du bug en question et continue de chercher.

En attendant qu'ils aient trouvé, le programme se comportement moins abruptement, il va juste marquer le fichier concerné comme "indisponible" (erreur de lecture). Ainsi, au moins plex verra les autres fichiers ! tongue
Par contre, pour qu'il puisse petit à petit voir tous les fichiers, je te conseille un "refresh" long, par exemple à 2 heures.

Tu rajoutes donc, dans ton

1fichierfs --api-key=XXXXXXXXXXXXXX --refresh-time=7200 -o allow_other /home/jax/1fichier

Ainsi, toutes les 2 heures (tu peux mettre moins ou plus à ta convenance), l’arborescence sera rafraîchie, et si tu refais un scan avec Plex, il aura une chance de trouver les fichiers qu'il a manqué la première fois.

@Question Jax : pour qu'on puisse aider la team 1fichier à traquer le bug, si tu as une ip fixe, peux-tu me la donner (en message privé), on a les heures des requêtes avec ta syslog, avec les heures et l'IP, 1fichier peut regarder.
Si tu as une Freebox, l'IP est indiquée sur l'interface, sinon tu peux faire ça en ligne de commande, le nom "I Can Haz IP" étant inspiré des blagues de chat sur internet lol

$ curl http://icanhazip.com
2a01:xxx:xxx:xxx:xxx:xxx:xxx:xxx

Tu peux bien sûr écrire directement à 1fichier avec ton IP, ça évite de me la communiquer !
L'adresse est contact@1fichier.com, tu commences ton objet par [API], et tu expliques que tu as eu des HTTP 403 sur des fichiers personnels sur une requête "get_token", tu peux leur transmettre la log "en clair" (ils ont le nom de tes fichiers de toute façon ! tongue)


(P.S.: oui je tourne par défaut en ipv6 tongue)

{EDIT}
Réponse par mail de 1fichier après mon signalement de ton erreur HTTP 403 :

1fichier a écrit :

Bonjour,

En effet, il semblerait que quelques forks de notre process aient plantés...

On devra analyser cela.

Cordialement,
Le Staff

Dernière modification par Zakhar (Le 05/01/2019, à 19:16)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne