Comment synchroniser des répertoires FTP avec lftp ?

Lftp est un un programme disponible sous UNIX qui permet de faire des transferts FTP mais également de synchroniser deux répertoires distants.

Prenons l’exemple d’une synchronisation du dossier par défaut d’Apache /var/www/html que l’on voudrait sauvegarder sur un serveur distant dans /var/backups/html

La première étape est de vous connecter à votre serveur distant

lftp
open nom_d_utilisation:mot_de_passe@ip_ou_nom_du_serveur

Si elle n’est pas installée sur votre système vous pouvez l’installer avec yum ou apt par exemple sous Debian:

apt-get update
apt-get install lftp

Une fois connecté vous pouvez lister les fichiers et dossiers présents avec ls pour vérifier que la connexion est correcte.

Pour quitter lftp entrez la commande quit

Maintenant que nous avons vu que la connexion s’effectue comme il faut nous allons nous intéresser à la commande mirror qui va nous permettre de synchroniser deux répertoires.

Elle s’utilise de la façon suivante:

lftp nomdutilisateur:motdepasse@ip -e "mirror  /var/www/html /var/backups/html;quit"

Cette commande s’avère très pratique pour effectuer des sauvegardes mais également pour des migrations de serveurs plutôt que de récupérer en local pour renvoyer ensuite sur une autre serveur vous pouvez faire l’opération bien plus rapidement.

La commande mirror propose une multitude de paramètres comme -e pour supprimer les fichiers qui auraient été supprimés de l’hôte distant, -R pour non pas télécharger des fichiers d’un serveur distant mais la de les envoyer vers un autre FTP on inverse alors la commande.

Voici ci-dessous la liste des paramètres issue du site officiel (http://lftp.yar.ru/lftp-man.html )

              -c,      --continue                 continue a mirror job if possible
              -e,      --delete                   delete files not present at the source
                       --delete-excluded          delete files excluded at the target
                       --delete-first             delete old files before transferring new ones
                       --depth-first              descend into  subdirectories  before  transferring
                                                  files
                       --scan-all-first           scan  all directories recursively before transfer‐
                                                  ring files
              -s,      --allow-suid               set suid/sgid bits according to the source
                       --allow-chown              try to set owner and group on files
                       --ascii                    use ascii mode transfers (implies --ignore-size)
                       --ignore-time              ignore time when deciding whether to download
                       --ignore-size              ignore size when deciding whether to download
                       --only-missing             download only missing files
                       --only-existing            download only files already existing at target
              -n,      --only-newer               download only newer files (-c won't work)
                       --upload-older             upload even files older than the target ones
                       --transfer-all             transfer all files, even seemingly the same at the
                                                  target site
                       --no-empty-dirs            don't    create    empty    directories   (implies
                                                  --depth-first)
              -r,      --no-recursion             don't go to subdirectories
                       --recursion=MODE           go to subdirectories on a condition
                       --no-symlinks              don't create symbolic links
              -p,      --no-perms                 don't set file permissions
                       --no-umask                 don't apply umask to file modes
              -R,      --reverse                  reverse mirror (put files)
              -L,      --dereference              download symbolic links as files
                       --overwrite                overwrite plain files without removing them first
                       --no-overwrite             remove and re-create plain files instead of  over‐
                                                  writing
              -N,      --newer-than=SPEC          download only files newer than specified time
                       --older-than=SPEC          download only files older than specified time
                       --size-range=RANGE         download only files with size in specified range
              -P,      --parallel[=N]             download N files in parallel
                       --use-pget[-n=N]           use pget to transfer every single file
                       --on-change=CMD            execute the command if anything has been changed
                       --loop                     repeat mirror until no changes found
              -i RX,   --include=RX               include matching files
              -x RX,   --exclude=RX               exclude matching files
              -I GP,   --include-glob=GP          include matching files
              -X GP,   --exclude-glob=GP          exclude matching files
                       --include-rx-from=FILE
                       --exclude-rx-from=FILE
                       --include-glob-from=FILE
                       --exclude-glob-from=FILE   load  include/exclude  patterns from the file, one
                                                  per line
              -f FILE, --file=FILE                mirror  a  single  file  or  globbed  group  (e.g.
                                                  /path/to/*.txt)
              -F DIR,  --directory=DIR            mirror  a  single directory or globbed group (e.g.
                                                  /path/to/dir*)
              -O DIR,  --target-directory=DIR     target base path or URL
              -v,      --verbose[=level]          verbose operation
                       --log=FILE                 write lftp commands being executed to FILE
                       --script=FILE              write lftp commands to  FILE,  but  don't  execute
                                                  them
                       --just-print, --dry-run    same as --script=-
                       --max-errors=N             stop after this number of errors
                       --skip-noaccess            don't try to transfer files with no read access.
                       --use-cache                use cached directory listings
                       --Remove-source-files      remove  source files after transfer (use with cau‐
                                                  tion)
                       --Remove-source-dirs       remove source files and directories after transfer
                                                  (use  with  caution).   Top level directory is not
                                                  removed if it's name ends with a slash.
                       --Move                     same as --Remove-source-dirs
              -a                                  same as --allow-chown --allow-suid --no-umask

Comment faire un package hors ligne pour une application React avec NPM Serve?

Bien que la plupart des usages de React soient destinés à Internet il arrive que l’on ne puisse pas avoir d’accès extérieur dans le cadre du déploiement d’une application sur des machines autonomes déconnectées d’Internet.

Tout fonctionnait parfaitement pour moi jusqu’au moment du déploiement sur l’ordinateur cible, je voulais garder les url telles qu’elles étaient afin de ne pas avoir à réadapter l’application si elle venait à être publiée sur le web et la documentation React conseille plusieurs serveurs web, Serve, Apache, Express, etc.

Dans cet article je vais vous montrer comment procéder avec npm et serve.

Tout d’abord il vous faut une application React, si vous n’en avez pas vous pouvez récupérer un starter kit ici https://create-react-app.dev/docs/getting-started .

Vous pouvez tester l’exécution de l’application en faisant un npm start en ouvrant ensuite votre navigateur à l’adresse http://localhost:3000

Je suppose ici que vous avez déjà un environnement de développement React d’installé.

Une fois prêt nous allons récupérer une version portable de Nodejs (https://nodejs.org/en/download/) en zip. à l’heure de l’écriture de cet article la plus récente étant 10.16.3 en LTS. Pour l’architecture je vous laisse le choix selon vos besoins.

Dé zippez l’archive et ouvrez une invite de commande dans ce dossier. (vous pouvez directement taper cmd dans la barre d’adresse de l’explorateur de fichier)

Si vous exécutez sur votre ordinateur npx serve, npm ira directement chercher dans votre environnement de développement les modules liés à serve et par l’occasion ne téléchargera pas en local dans le dossier ou alors il ira télécharger les modules mais les placera dans %appdata%/Roaming/npm-cache ce qui fait qu’en déployant le dossier zip seul vous obtiendrez le message suivant:

npx serve
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! network request to https://registry.npmjs.org/serve failed, reason: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network ‘proxy’ config is set properly. See: ‘npm help config’

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\micka\AppData\Roaming\npm-cache\_logs\2019-09-26T22_03_50_668Z-debug.log
Install for serve@latest failed with code 1

Pour éviter ce problème il faut au préalable installer de manière locale avec l’option –save de npm le serveur serve.

npm install serve –save

Attention il est important que vous soyez dans le dossier ou se trouvent npm et npx avant de lancer cette commande.

Une fois cette étape effectuée, vous aurez les fichiers serve et serve.cmd au même niveau que npm et npx et dans le dossier node_modules, l’ensemble des dépendances seront présentes. L’installation est maintenant réellement portable.

Vous pouvez aller plus loin en ajoutant un navigateur embarqué comme Electron par exemple et proposer un package encore plus complet.

[Office 2016/365] Excel permet d’exporter en CSV avec l’encodage UTF-8

Depuis la mise à jour du 10 novembre 2016 il est désormais possible d’exporter directement un ficher Excel en fichier CSV avec l’encodage UTF-8. Excel les prend également en charge pour l’ouverture.

Pour utiliser ce format, à partir d’un fichier ouvert cliquez sur Fichier -> Enregistrer sous.

Choisissez ensuite le format « CSV UTF-8 (délimité par des virgules) (*.csv) » puis enregistrez votre fichier normalement

Si vous n’avez pas cette option mais que vous possédez une version 2016 d’Office, allez dans le menu Fichier -> Compte .

Si la build est inférieur à la 1610 cliquez sur Mettre à jour. La mise à jour nécessite de fermer tous les documents ouverts.

[Windows 10 -10130] Résoudre le problème d’ouverture du menu démarrer

Avec la mise à jour 10130 un bug lié à l’ouverture du menu démarrer est revenu, il empêche tout simplement l’ouverture de ce dernier ou la fermeture. Il en va de même pour la recherche via Cortana.

Pour ma part, j’ai résolu ce problème en désactivant les options de géolocalisation de Windows 10:

  • Aller dans le nouveau panneau de configuration ‘Settings »
  • Ensuite cliquez sur Privacy puis Location
  • Passez le paramètre Location à off comme ci-dessous Location window
  • Redémarrez le PC pour appliquer les modifications

Une fois la prochaine mise à jour du système installée, n’oubliez pas de réactiver ce paramètre si vous en avez l’utilité !

Une tablette HP 7″ sous Windows 8.1 pour 79 €

Le Microsoft Store propose actuellement une offre particulièrement intéressante sur une tablette HP Stream 7 en faisant tomber son prix à 79 €.

Elle est équipée d’une édition complète de Windows 8.1 et non d’une version RT, vous pouvez donc y installer et lancer toutes les applications utilisables sur un ordinateur standard.


Tablette HP Stream 7 Edition Signature

Du côté des performances, on reste sur une tablette, elle est dotée de 1 GO de RAM, un processeur Intel Atom quatre cœurs et 32 Go de stockage auxquels il faut enlever l’espace pris par le système. Il est cependant possible d’augmenter cette espace via une carte micro sd.

Elle dispose également d’un appareil photo de 2 Mpx à l’arrière et un seconde de 300 000 pixels en façade.

Enfin dernier point positif de cette tablette, elle est fournie avec un abonnement d’un an à Office 365 avec 1 To d’espace de stockage sur OneDrive inclus qui coûte à lui seul 69€.

Elle n’est pas comparable à une Surface Pro 3 en terme de performance et ne remplacera donc pas un ordinateur mais en terme de prix non plus car une Surface s’avère être plus de 10 fois plus cher.

Pour profiter de cette offre, rendez vous sur le Microsoft Store avec le code promo BONPLAN79