(22 Mai 2019) Version 1.2.2

Nouveautés par rapport à la 1.2.1
  • Bug : le contenu des répertoires partagés s'affiche désormais correctement

Faut-il mettre à jour : si vous n'avez partagé aucun de vos répertoires 1fichier avec quelqu'un d'autre, la mise à jour n'a aucun intérêt pour vous. Ce bug existe depuis le début, c'est le "parsing" JSON qui est mal fait dans le cas où on a un "shares" dans le retour de l'API, provoquant un affichage aléatoire des fichiers du répertoire, et les sous-dossiers du dossier partagé ne sont jamais affichés.
5 jours plus tard
jaxx21 a écritMerci pour toutes ces belles infos.
Sinon, pour les statistiques, c'est qu'on y pense pas. Je pensais pas qu'on pouvait faire gérer ça aussi avec ton driver. ca fait des longs chiffres.Peut être qu'il y aura ensuite les Go ou Mo et les heures,min, ou sec.en tout cas, gros dossier encore.
Oui, c'est amélioré, voici ce que ça donne maintenant :
$ cat 1fichier/.stats
Uptime: 00:05:25

Readers:
     Down.  Nb. Req  Avg Time  Max Time   Ref  Qu  Nb. Err Speed Av.Sp
[00]  450M     3607    0.0201    2.9487 (   1)  2        0 35.3M 34.6M
[01]  141K       18    0.5087    2.7480  idle   0        0     0 20.1K
[02] 31.4M      272    0.0437    2.6544 (   2)  2        0 1.84M 1.12M
[03]  162K       19    0.4692    2.7382 (   2)  0        0     0 23.2K
----------------------------------------------------------------------
Tot.  482M     3916    0.0262    2.9487         4        0 37.1M 8.77M

API:
                        Nb. Req  Avg Time  Max Time Retry Nb. Err
folder/ls.cgi         :       4    0.1986    0.3255     0       0
download/get_token.cgi:       2    0.1412    0.1419     0       0
user/info.cgi         :       1    2.1307    2.1307     0       0
-----------------------------------------------------------------
Total                 :       7    0.4582    2.1307     0       0

Live streams:
  Ref   Size  Left Lnk Er Loc Stm Path
(   1) 34.9G 24:36   2      1   2 /.crypt/aFzSkQU-2euzGhZsYT7f0nNL/KOMpYD-smw9ihagHjrL9TUPLgMFSgWyzml2qIMvs34gsz5JDmu7YB8yswB3LmI8rd5A
(   2)  866M 25:02   3      1  12 /Vidéos/big_buck_bunny_1080p_stereo.ogg
Publication prochaine...
Ha niquel,même le nombre de requête api. Merci 🙂
Et ça me permet de debugger les comportement anormaux aussi ! 😃

Il y avait un bug dans le "moteur" en cas de charge importante, et je vois des "optimisations" à faire pour le cas où on fait une copie, on abandonne, et on recommence.

Le "bug" ne corrompt pas les données, mais peut rendre parfois "Erreur d'entrée/sortie"... fâcheux !

... mais bon, il faudra que je pense à mettre aussi ma clé privée sur mon PC portable, parce que là je ne peux pas packager sans cela... donc ça va attendre quelques jours.
6 jours plus tard
Bonjour , a propos de 1fichier , comment puis je savoir quels fichier sont dans le cold storage ? et y a t il un astuce pour ne pas avoir ses fichiers dans le cold storage (et peut etre supprimés !) ?
bingox a écritBonjour , a propos de 1fichier , comment puis je savoir quels fichier sont dans le cold storage ?
find 1fichier -type f -mtime +60
Va t'afficher la liste de tous les fichiers dans le "cold" de façon approximative, car l'algorithme de bascule en cold ne tourne qu'un fois par jour, à l'heure que tu récupères dans "info.cgi". La liste là est calculée à l'heure de la commande, et il y a donc potentiellement des fichiers qu'elle va t'indiquer "Cold" qui ne le sont pas, mais en gros tu peux calculer la taille ça tombe juste à quelques fichiers près.
bingox a écrit (et peut etre supprimés !) ?
Les fichiers dans le "cold" ne sont jamais supprimés tant que tu restes dans le quota. Au delà, il faut soit payer le quota supplémentaire, soit faire le ménage.
L'option de "suppression automatique" est entièrement à la main des utilisateurs, et permet précisément de faire le ménage plus facilement qu'à la main si on préfère la solution de suppression au paiement de l'espace supplémentaire utilisé.

Personnellement, j'ai déjà décidé que si je passe en "over-quota" (j'utilise comme sauvegarde de mes données personnelles), je payerai le quota supplémentaire parce que ça ne fait pas de sens de supprimer des sauvegardes !..
Le prix est très concurrentiel par rapport à l'achat et à la gestion de son propre support de stockage.
(3 Juin 2019) Version 1.3.1

Nouveautés par rapport à la 1.2.2
  • Bug : le driver pouvait dans certains cas renvoyer à tort "erreur d'entrée/sortie".
  • Optimisation : les "streams" ne sont conservés que 45 secondes (au lieu de 5 minutes). En réalité, au delà de la minute, la reprise sur un stream muet donne un temps d'attente inexplicable (y compris par la team 1fichier) d'une 20aine de secondes. Dans ces conditions, il est préférable d'ouvrir un nouveau stream ce qui met en général moins de 3 secondes. D'où le nouveau time-out.
  • Nouveautés : statistiques. Sur le même mode que le "refresh-file", vous pouvez déclarer un fichier statistiques et constater tout plein de choses à propos du fonctionnement du driver
  • Documentation : mise à jour pour détailler les statistiques.

Exemples pour les statistiques :
$ 1fichierfs --api-key=@~/.1fichier.key --stat-file=.stats ~/1fichier
$ cat ~/1fichier/.stats
Uptime: 01:10:19

Readers:
     Down. N.Req  Avg Time  Max Time   Ref  Qu N.Err Speed Av.Sp
[01]  206M  1659    0.0014    0.3175  idle   0     0     0  543K
[02] 69.2M   566    0.0014    0.1263  idle   0     0     0  616K
[03]  175M  1408    0.0040    2.1086  idle   0     0     0  513K
[04]  310M  2488    0.0007    0.1753 (   1)  1     0 1.04M  512K
----------------------------------------------------------------
Tot.  760M  6121    0.0017    2.1086         1     0 1.04M  532K

API:
                        N.Req  Avg Time  Max Time Retry N.Err
folder/ls.cgi         :    29    0.6655    2.3017     0     0
download/get_token.cgi:     3    0.1522    0.1563     0     0
user/info.cgi         :     2    1.1783    2.1851     0     1
--------------------------------------------------------------
Total                 :    34    0.6504    2.3017     0     1

         Trig. Timer   API Error   Total
Refresh:     0     2     0     0       2

             Number Memory
Allocations:  54901  8260K
Frees      :  54699  7822K
Difference :    202   438K

Live streams:
  Ref   Size  Left Lnk Er N.Loc N.Stm Path
(   1)  745M 12:47   2        2    17 /Vidéos/big_bucks_bunny.ogg
(   2) 2206M 00:00   0        1     2 /.crypt/I,-S6Q,wINReRoToGzQed,Eh/GyaC8v--Kxv-VsHLoFoZgMDl/ivEwsQqb8oPE4a5t8G24VxW4994MkrjvkeoRvgKcntfAJ,2zGYKU5z,,HU3TCd1tpLhTBrkN6DtTM9eCFf05zE5E
Vous pouvez aussi afficher les statistiques en permanence dans un terminal de la façon suivante (dans l'exemple avec rafraîchissement toutes les 3 secondes; CTRL+C pour terminer) :
$ watch -n3 cat ~/1fichier/.stats
Faut-il mettre à jour : Oui !
Même si vous ne comptez pas utiliser les statistiques, la mise à jour est conseillée. En effet, le bug corrigé risque de vous arriver si vous "chargez" un peu le driver en faisant des lectures en parallèle. Et c'est toujours stressant d'avoir "erreur d'entrée/sortie" quand on récupère une sauvegarde... même s'il y a toutes les chances que ça passe au deuxième coup quand vous "calmez" les accès en parallèle au driver.
Par ailleurs l'optimisation vous permettra par exemple de diminuer la cache de VLC de 30 secondes (mon réglage actuel pour éviter les "freeze" après une pause d'un film) à un truc plus raisonnable comme 5 secondes.
Merci pour ce suivi et ce travail de fou !!! J'ai mis à jour pour ma part.
jaxx21 a écritMerci pour ce suivi et ce travail de fou !!! J'ai mis à jour pour ma part.
C'est pas fini, les statistiques ça prépare la partie "write" qui est encore plus "de fou" à cause du fait que côté serveur il n'ont pas fait grand chose pour aider au "write" !.. :rolleyes:

@jaxx21 : sondage as-tu activé les statistiques en rajoutant à la commande de lancement --stat-file=stats (ou équivalent) ? En fait les statistiques, en dehors de debugger, pour la partie "read" c'est juste de la curiosité.
@jaxx21 : sondage as-tu activé les statistiques en rajoutant à la commande de lancement --stat-file=stats (ou équivalent) ? En fait les statistiques, en dehors de debugger, pour la partie "read" c'est juste de la curiosité.
Et bien moi , ma ligne de tout les jours est:
root@vps646287:~# 1fichierfs --api-key=XXXXXXXXXXXXXXXXXXXXXXXX -o allow_other /home/ubuntu/1fichier
et ca marche super pour mon plex.

ensuite, si j'ajoute ta commande:
1fichierfs --api-key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX -o allow_other --stat-file=.stats /home/ubuntu/1fichier
il me met:
Segmentation fault (core dumped)
je dois pas mettre la bonne commande au bon endroit.
jaxx21 a écrit ensuite, si j'ajoute ta commande:
1fichierfs --api-key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX -o allow_other --stat-file=.stats /home/ubuntu/1fichier
il me met:
Segmentation fault (core dumped)
je dois pas mettre la bonne commande au bon endroit.
Je vais regarder ça, peut-être une interférence avec allow_other. Tu es en quelle version d'ubuntu sur ton serveur ? 18.04 64 bits ?

(Pas besoin de debug... effectivement je le reproduis avec moins de paramètres que je n'utilise habituellement, je regarde ça !)
Oui je suis sous Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-50-generic x86_64) (VPS de chez OVH)

et dans le debug.txt il y a:
[1fichierfs     0.000] NOTICE: started: Saturday  8 June 2019 at 10:03:10
[1fichierfs     0.000] NOTICE: successfuly parsed arguments.
[1fichierfs     0.000] INFO: log level is 7.
[1fichierfs     0.000] INFO: user_agent=1fichierfs/1.3.1
[1fichierfs     0.000] INFO: adding options=-orw,fsname=1fichier.com,subtype=1fichierfs
[1fichierfs     0.004] DEBUG: init_dir: `/` (id=0)
[1fichierfs     0.004] DEBUG: lock 999
[1fichierfs     0.004] INFO: <<< API(in) (iReq:1) folder/ls.cgi POST={"folder_id":0,"files":1} name=/
[1fichierfs     0.124] INFO: >>> API(out) (iReq:1) retry=0 json size=4009
Oui, j'ai vu ça, on ne passe même pas le listage de root, donc ce devrait être facile à débugger puisqu'à ce moment là on n'est pas encore en "multi-tâche" / daemon !
Pas de soucis, prend ton temps. C'est impec ce que tu fourni et fonctionnel déja pour nous simples utilisateurs 🙂
Huhu... "faute de frappe" dans le programme :
		if (f_r && r1 == t
			&& 0 == strncmp(val, params1f.refresh_file, r1)) {
			lprintf(LOG_WARNING,
				"refresh triggger off: a file or directory `/%s` already exists in `%s`.\n",
				params1f.refresh_file, d->name);
			*f_refresh = f_r = false;
		}
		if (f_s && r2 == t
			&& 0 == strncmp(val, params1f.refresh_file, r2)) {
			lprintf(LOG_WARNING,
				"statistics off: a file or directory `/%s` already exists in `%s`.\n",
				params1f.stat_file, d->name);
			*f_stat = f_s = false;
		}
Copier/coller abusif, dans le deuxième 'if' on s'intéresse au 'stat_file' or la comparaison (strncmp) est faite avec le "refresh_file". Ce qui veut dire que sans paramètre refresh_file, on tente d'accéder à un pointeur NULL...

Pas vu parce que j'ai toujours un refresh_file.

La correction est simple donc, ce sera relivré dans la journée. Si tu veux tester les statistiques, en attendant la correction, tu peux juste rajouter un refresh-file et ça marchera en contournant le bug.
--refresh-file=whatever
Merci du signalement.

P.S. : ça me fait penser qu'il faudrait que je rajoute un /TODO pour me constituer un jeu de test de cas divers.
alors, je tape ma commande:
1fichierfs --api-key=XXXXXXXXXXXXXXXXXXXXXXX --stat-file=.stats --refresh-file=whatever -o allow_other /home/ubuntu/1fichier
et en effet, j'ai plus le bug et je vois bien un fichier stat dans le dossier 1fichier, et il contient:
Uptime: 00:03:13

Readers:
     Down. N.Req  Avg Time  Max Time   Ref  Qu N.Err Speed Av.Sp
[01]     0     0    0.0000    0.0000  idle   0     0     0     0
[02]     0     0    0.0000    0.0000  idle   0     0     0     0
[03]     0     0    0.0000    0.0000  idle   0     0     0     0
[04]     0     0    0.0000    0.0000  idle   0     0     0     0
----------------------------------------------------------------
Tot.     0     0    0.0000    0.0000         0     0     0     0

API:
                        N.Req  Avg Time  Max Time Retry N.Err
folder/ls.cgi         :     2    0.2116    0.3035     0     0
--------------------------------------------------------------
Total                 :     2    0.2116    0.3035     0     0

         Trig. Timer   API Error   Total
Refresh:     0     0     0     0       0

             Number Memory
Allocations:    159  1535K
Frees      :    153  1085K
Difference :      6   450K
Par contre, quand je tape ma commande:
watch -n3 cat ~/1fichier/.stats
j'ai:
Every 3,0s: cat /home/ubuntu/1fichier/.stats                                                                        vps646287: Sat Jun  8 10:27:07 2019

cat: /home/ubuntu/1fichier/.stats: No such file or directory
donc,j'ai peut être mal fait un truc.
Oui parce que tu es en root.

Il faut donc remplacer par :
watch -n3 cat /home/ubuntu/1fichier/.stats
Explication : ~ est remplacé par le bash (interpréteur de commande) par le 'home' de l'utilisateur courant. Lorsque tu es en root, ton home est /root, et donc ~/1fichier/.stats devient /root/1fichier/.stats après le remplacement. Ce n'est pas ce que tu veux, puisque tu veux /home/ubuntu/1fichier/.stats

Et tant que tu ne fais rien avec le driver 1fichier, la seule chose qui va changer sera le uptime (temps écoulé depuis le démarrage) et la mémoire consommée (car les stats allouent/libèrent de la mémoire)
Ca devient intéressant quand tu utilises réellement de driver ! 😃

Tu verras alors la vitesse de download instantanée et moyenne, les noms de fichiers accédés, etc...

[Edit] : version corrigée (1.3.2) soumise au Launchpad pour Bionic (Xenial en cours), ce devrait être bon d'ici ~15 à 30 minutes.
[Edit 2] : Launchpad a terminé la compilation/packaging pour Bionic à 10h50, et à 11h02 pour Xenial.
(8 Juin 2019) Version 1.3.2

Nouveautés par rapport à la 1.3.1
  • Crash : signalement de Jaxx21 ci-dessus. Suite à un copier/coller abusif, le crash se produit systématiquement au démarrage lorsqu'on spécifie une fichier statistiques sans spécifier de fichier refresh.
  • Bug mineur : mauvais format pour la journalisation (log) des éventuelles erreurs de lecture. Par exemple, on 'log' 4294967291 au lieu de -5
Le crash ne se produit que si :
- vous spécifiez un fichier statistiques
- vous ne spécifiez pas de fichier refresh

Donc pour la mise à jour, c'est vous qui voyez selon votre usage !

@jaxx21, tu peux retirer la partie refesh-file de la commande si tu n'en as pas besoin, le bug est corrigé et packages disponibles pour la MàJ
Niquel, ca marche. Merci 😉
jaxx21 a écritNiquel, ca marche. Merci 😉
Merci pour le signalement d'erreur, ça améliore la qualité du truc ! 🙂