Comment synchro­ni­ser des réper­toires FTP avec lftp ?

Lftp est un un programme dispo­nible sous UNIX qui permet de faire des trans­ferts FTP mais égale­ment de synchro­ni­ser deux réper­toires distants.

Prenons l’exemple d’une synchro­ni­sa­tion du dossier par défaut d’Apache /var/www/html que l’on voudrait sauve­gar­der sur un serveur distant dans /var/backups/html

La première étape est de vous connec­ter à votre serveur distant

lftp
open nom_d_utilisation:mot_de_passe@ip_ou_nom_du_serveur

Si elle n’est pas instal­lée sur votre système vous pouvez l’ins­tal­ler 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éri­fier que la connexion est correcte.

Pour quit­ter lftp entrez la commande quit

Main­te­nant que nous avons vu que la connexion s’ef­fec­tue comme il faut nous allons nous inté­res­ser à la commande mirror qui va nous permettre de synchro­ni­ser deux réper­toires.

Elle s’uti­lise 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 effec­tuer des sauve­gardes mais égale­ment pour des migra­tions de serveurs plutôt que de récu­pé­rer en local pour renvoyer ensuite sur une autre serveur vous pouvez faire l’opé­ra­tion bien plus rapi­de­ment.

La commande mirror propose une multi­tude de para­mètres comme -e pour suppri­mer les fichiers qui auraient été suppri­més de l’hôte distant, -R pour non pas télé­char­ger 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 para­mètres issue du site offi­ciel (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 appli­ca­tion React avec NPM Serve?

Bien que la plupart des usages de React soient desti­nés à Inter­net il arrive que l’on ne puisse pas avoir d’ac­cès exté­rieur dans le cadre du déploie­ment d’une appli­ca­tion sur des machines auto­nomes décon­nec­tées d’In­ter­net.

Tout fonc­tion­nait parfai­te­ment pour moi jusqu’au moment du déploie­ment sur l’or­di­na­teur cible, je voulais garder les url telles qu’elles étaient afin de ne pas avoir à réadap­ter l’ap­pli­ca­tion si elle venait à être publiée sur le web et la docu­men­ta­tion 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 appli­ca­tion React, si vous n’en avez pas vous pouvez récu­pé­rer un star­ter kit ici https://create-react-app.dev/docs/getting-star­ted .

Vous pouvez tester l’exé­cu­tion de l’ap­pli­ca­tion en faisant un npm start en ouvrant ensuite votre navi­ga­teur à l’adresse http://local­host:3000

Je suppose ici que vous avez déjà un envi­ron­ne­ment de déve­lop­pe­ment React d’ins­tallé.

Une fois prêt nous allons récu­pé­rer une version portable de Nodejs (https://nodejs.org/en/down­load/) en zip. à l’heure de l’écri­ture de cet article la plus récente étant 10.16.3 en LTS. Pour l’ar­chi­tec­ture je vous laisse le choix selon vos besoins.

Dé zippez l’ar­chive et ouvrez une invite de commande dans ce dossier. (vous pouvez direc­te­ment taper cmd dans la barre d’adresse de l’ex­plo­ra­teur de fichier)

Si vous exécu­tez sur votre ordi­na­teur npx serve, npm ira direc­te­ment cher­cher dans votre envi­ron­ne­ment de déve­lop­pe­ment les modules liés à serve et par l’oc­ca­sion ne télé­char­gera pas en local dans le dossier ou alors il ira télé­char­ger les modules mais les placera dans %appdata%/Roaming/npm-cache ce qui fait qu’en déployant le dossier zip seul vous obtien­drez le message suivant:

npx serve
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! network request to https://regis­try.npmjs.org/serve failed, reason: getad­drinfo ENOTFOUND regis­try.npmjs.org regis­try.npmjs.org:443
npm ERR! network This is a problem rela­ted to network connec­ti­vity.
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@­la­test failed with code 1

Pour éviter ce problème il faut au préa­lable instal­ler de manière locale avec l’op­tion –save de npm le serveur serve.

npm install serve –save

Atten­tion il est impor­tant que vous soyez dans le dossier ou se trouvent npm et npx avant de lancer cette commande.

Une fois cette étape effec­tuée, vous aurez les fichiers serve et serve.cmd au même niveau que npm et npx et dans le dossier node_modules, l’en­semble des dépen­dances seront présentes. L’ins­tal­la­tion est main­te­nant réel­le­ment portable.

Vous pouvez aller plus loin en ajou­tant un navi­ga­teur embarqué comme Elec­tron par exemple et propo­ser un package encore plus complet.

[Office 2016/365] Excel permet d’ex­por­ter en CSV avec l’en­co­dage UTF-8

Depuis la mise à jour du 10 novembre 2016 il est désor­mais possible d’ex­por­ter direc­te­ment un ficher Excel en fichier CSV avec l’en­co­dage UTF-8. Excel les prend égale­ment en charge pour l’ou­ver­ture.

Pour utili­ser ce format, à partir d’un fichier ouvert cliquez sur Fichier -> Enre­gis­trer sous.

Choi­sis­sez ensuite le format « CSV UTF-8 (déli­mité par des virgules) (*.csv) » puis enre­gis­trez votre fichier norma­le­ment

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

Si la build est infé­rieur à la 1610 cliquez sur Mettre à jour. La mise à jour néces­site de fermer tous les docu­ments ouverts.

[Windows 10 –10130] Résoudre le problème d’ou­ver­ture du menu démar­rer

Avec la mise à jour 10130 un bug lié à l’ou­ver­ture du menu démar­rer est revenu, il empêche tout simple­ment l’ou­ver­ture de ce dernier ou la ferme­ture. Il en va de même pour la recherche via Cortana.

Pour ma part, j’ai résolu ce problème en désac­ti­vant les options de géolo­ca­li­sa­tion de Windows 10:

  • Aller dans le nouveau panneau de confi­gu­ra­tion ‘Set­tings »
  • Ensuite cliquez sur Privacy puis Loca­tion
  • Passez le para­mètre Loca­tion à off comme ci-dessous Location window
  • Redé­mar­rez le PC pour appliquer les modi­fi­ca­tions

Une fois la prochaine mise à jour du système instal­lée, n’ou­bliez pas de réac­ti­ver ce para­mètre si vous en avez l’uti­lité !

Une tablette HP 7″ sous Windows 8.1 pour 79 €

Le Micro­soft Store propose actuel­le­ment une offre parti­cu­liè­re­ment inté­res­sante sur une tablette HP Stream 7 en faisant tomber son prix à 79 €.

Elle est équi­pée d’une édition complète de Windows 8.1 et non d’une version RT, vous pouvez donc y instal­ler et lancer toutes les appli­ca­tions utili­sables sur un ordi­na­teur stan­dard.


Tablette HP Stream 7 Edition Signa­ture

Du côté des perfor­mances, on reste sur une tablette, elle est dotée de 1 GO de RAM, un proces­seur Intel Atom quatre cœurs et 32 Go de stockage auxquels il faut enle­ver l’es­pace pris par le système. Il est cepen­dant possible d’aug­men­ter cette espace via une carte micro sd.

Elle dispose égale­ment d’un appa­reil photo de 2 Mpx à l’ar­rière et un seconde de 300 000 pixels en façade.

Enfin dernier point posi­tif de cette tablette, elle est four­nie avec un abon­ne­ment d’un an à Office 365 avec 1 To d’es­pace de stockage sur OneD­rive inclus qui coûte à lui seul 69€.

Elle n’est pas compa­rable à une Surface Pro 3 en terme de perfor­mance et ne rempla­cera donc pas un ordi­na­teur mais en terme de prix non plus car une Surface s’avère être plus de 10 fois plus cher.

Pour profi­ter de cette offre, rendez vous sur le Micro­soft Store avec le code promo BONPLAN79