Sauvegarde via LFTP : Des fichiers existants et inchangés quand même téléchargés

Coucoutte :smiley:

Pour une webradio d’un ami et dont je m’occupe du site.

La programmation musicale se fait avec RadioDJ sur un PC Windows chez l’ami. On nommera ce système le « PC Diffusion ».

Ayant aussi un PC Diffusion chez moi, avec même base de données RadioDJ et mêmes fichiers, pour servir de secours en cas de coupure internet chez l’ami, lorsqu’il ajoute des fichiers, je dois les rajouter aussi sur le mien pour être à jour.
J’ai donc mis en place sur son PC Diffusion, un petit serveur FileZilla, et de temps en temps, je récupère les nouveaux fichiers (L’option en cas de fichier déjà présent est de le remplacer que si la taille du sien est différente) pour les mettre sur mon serveur, et je réplique vers mon PC Diffusion.

Ca marche correctement mais l’opération n’est pas automatique (il a eu une coupure internet il y a quelques semaines et cela faisait longtemps que je n’avais pas mis à jour donc ça a été un peu galère pour récupérer les dernières émissions auprès des animateurs de la radio) et si il supprime des fichiers musicaux (souvent remplacés par un de meilleur qualité ou sans défaut), ca ne le supprime pas chez moi.

Sachant que j’ai un serveur en Debian 11, j’ai cherché un peu si il existait une ligne de commande (que je pourrais lancer via une tache CRON quotidienne) permettant de faire un miroir entre l’espace FTP de son PC Diffusion, et le répertoire sur mon serveur. Et je suis tombé sur LFTP.
J’ai installé, j’ai un peu galéré à pondre une ligne de commande correspondante au besoin, la voici :

lftp ftp://user:pwd@chezmonpote.ddns.net -e "set ftp:ssl-allow false; set ftp:use-feat false; set ftp:passive-mode off; mirror -e '/' '/media/raid/musique/Disque Titou/Eurodance 90/' ; quit"

Le problème est que ça retélécharge des fichiers (mais apparemment pas tous) déjà présents et identiques. Pendant leur téléchargement, il met la date actuelle dans « Modifié le » (quand on parcours via l’explorateur Windows) et quand il a fini le fichier, il remet sa date d’origine.
Si j’interromps, et que je relance la commande, ça ne retélécharge pas à nouveau ceux déjà retéléchargé (sauf celui qui était en cours quand j’ai stoppé, car incomplet), mais vu la taille du dossier entier, j’aimerais que ca télécharge que ce qui a réellement été modifié.

J’ai regardé un peu si il y avait des infos sur le net concernant un problème identique, mais je n’ai pas trouvé.

Existe-t-il une option permettant de corriger ce problème ?

Merkouin et à bientôt ! :slight_smile:

Bonjour

Sur la machine dont les fichiers sont modifiés ou ajoutés ou supprimés, etc.
tu pourrais installer le paquetage inotify-tools
et tu pourras alors utiliser la commande inotifywait pour faire automatiquement lancer un script qui synchronisera le contenu du répertoire distant dès qu’un fichier sera modifié ou ajouté ou supprimé.

Ahhh dommage ! c’est un système Windows.

Il faudrait trouver une commande windows qui fasse la même chose que inotifywait

Bonjour,
Le problème n’est pas de savoir quand un fichier est ajouté/supp/modifié.
Le problème est de ne pas retélécharger stupidement les fichiers que j’ai déjà.
Mais ce que je pige pas c’ets que ce n’est même pas tous les fichiers mais que quelques uns, qui n’ont pourtant pas été modifiés.

Les fichiers que tu as déjà sont ceux qui n’ont pas encore été créés ou modifiés par le système Windows, c’est donc bien à Windows de te prévenir quand un fichier change dans son système de fichiers, …
…sinon, tu vas être obligé de passer ton temps à télécharger chacun des fichiers pour vérifier qu’il n’a pas été modifié, et pendant que tu en télécharges un, celui que tu viens de juste de vérifier sera peut-être modifié par windows, …
…du coup, tu ne vas jamais pouvoir y arriver et tu vas être obligé de demander à windows de passer son temps à t’envoyer chacun des fichiers et ça n’en finira jamais puisque tu ne pourras savoir qu’un fichier a été modifié qu’après l’avoir téléchargé.

Euh, j’ai pas tout compris là, pour ne pas dire rien du tout.
Les fichiers que j’ai déjà sont ceux que j’ai téléchargé (Avec FileZilla client graphique sur mon précédent serveur en ubuntu desktop), au tour d’avant.
Quand je relance un téléchargement , donc plus tard, si le fichier destination existe déjà, il m’est demandé de choisir ce que je veux faire, je choisis de remplacer si la taille est différente (par exemple le fichier audio a été remplacé par un meilleur, mais avec le même nom), et ce , pour toute la file d’attente. Si le fichier l’existe pas, Filezilla le télécharge.
Ce que je cherche c’est qu’lftp fasse pareil pour tous les fichiers (si meme taille, on zappe, si taille différente on télécharge pour remplacer, si n’existe pas sur la destination, on télécharge, si n’existe plus sur la source, on le supprime aussi sur la destination). Actuellement ça marche pour quasiment tous les fichiers sauf quelques uns, qui ne sont pourtant pas modifiés.

Ce serait pas plus simple de mettre en place un serveur git, à chaque ajout modification sur le pc windows il font un commit + un push et toi tu fera des git pull régulier afin de maintenir la branche master à jour.

Hello,
Comment ça « ils font un commit + push » , qui « ils » ? et surtout comment ?
L’idée peut m’être utile pour autre chose :slight_smile:

Entre-temps, j’ai fais tourner ce matin en rentrant (travail de nuit) la commande que j’ai mise plus haut, et en fait il n’y avait pas tant de fichiers que ça qui ont été re téléchargés (miroir terminé avant que j’aille me coucher).
L’exécution suivante de la commande n’a pas re téléchargé les fichiers. Je ne sais pas pourquoi ces quelques fichiers ont dû être re téléchargés une première fois.
J’ai mis la commande en tache CRON et à priori aussi ok.

Chaque personne autorisé à modifier le dépôt git créer.

C’est du versionnage de fichiers dans ton cas, le dépôts étant le répertoire ou tu va entreposer des branches de travail … la branche master étant le répertoire exploité par la radio.

Chaque personne autorisé peux effectuer un commiter les modifications (ajouts, suppression, modification de fichiers/playlists/ce que tu veux) et push le tout pour mettre à jour le dépôt.

Pour plus de détails je t’invite à te renseigner sur Git, tu peux versionner et centraliser du travail grâce à ça.

Bonjour,

Quelle version de Windows ?

Le PC Diffusion qui est chez vous tourne bien sous Debian ? (je ne trouve pas de paquet radiodj )

Autrement dit, vous effectuez une synchronisation entre un répertoire qui se trouve sur le PC Windows de votre ami et un répertoire sur votre PC Diffusion

OK
Je vous suggère d’utiliser rsync avec authentification openssh. Par exemple, l’option --delete de rsync fait exactement ce que vous voulez
Le problème revient à avoir un rsync fonctionnel sur le PC Windows de votre ami
Une première possibilité consiste à passer par cygwin avec des particularités lièes à cette technologie vieillissante : la racine C:\ devient /cygdrive/c/ et si les noms de fichiers contiennent des voyelles accentuées on n’est pas sûr du résultat.
Dans le même genre, il existe une « distribution rsync for Windows » cwRsync - Rsync for Windows | itefix.net mais je n’ai pas compris leur histoire de Rsync Server (non libre)

Une autre solution beaucoup plus moderne si le Windows est assez récent consiste à installer Windows Subsystem for Linux (WSL) avec une Debian minimale en mode texte.
Deux options pour installer WSL j’aime bien le concept d’installer Git for Windows pour avoir bash, à se demander si l’auteur a entendu parler de la commande which.

Dans tous les cas, on bénéficie de la puissance et de l’efficacité de rsync qui utilise la bande passante au mieux.

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« On ne perd pas son temps en aiguisant ses outils. »
Proverbe français

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

Bonjour,

En fait:
Le PC Diffusion principal on dira, chez l’ami, RadioDJ sur Windows 7. Le PC a sa base SQL (MySQL Server pour windows pour l’héberger).
Le PC Diffusion de secours (le mien donc), même configuration.

A coté, j’ai mon serveur Debian 11 sur lequel je centralise tous mes fichiers musicaux ainsi que la copie du répertoire musical du PC Diffusion principal.

Sur le PC Diffusion principal, j’ai mis FileZilla Server, avec donc un accès en lecture sur le dossier parent des fichiers musicaux.

Avec FileZilla Client sur mon Debian, je récupère de temps en temps les nouveaux fichiers (nouveaux titres ajoutés, et nouvelles émissions d’animateurs) qui sont sur le PC Diffusion principal.

Depuis mon PC Diffusion (de secours donc) , via un petit batch DOS avec robocopy, je fait un miroir de ce qu’il y a sur mon serveur Debian , vers le PC Diffusion secours.

Je ne souhaite pas modifier le PC Diffusion principal (on ne sait jamais, si je le croute ou si l’ajout crée des dropouts audio ou autres problème, ca va le faire moyen).

Mais du coup avec la commande lftp suivante :
lftp ftp://user:pwd@domaine.ddns.net -e "set ftp:ssl-allow false; set ftp:use-feat false; set ftp:passive-mode off; mirror -c -e '/' '/media/raid/musique/Disque Titou/Eurodance 90/' ; quit"

Ca met bien à jour. Il n’y a que la première fois où quelques fichiers (mais pas tous, je ne sais pas pourquoi certains et pas le reste) ont été retéléchargés, sinon ça l’a plus refait.

Merci et bon week-end :slight_smile: