diff --git a/public/404.html b/public/404.html deleted file mode 100644 index f7d50b1..0000000 --- a/public/404.html +++ /dev/null @@ -1,10 +0,0 @@ - - -
-L'outil s'appelle mysqldump il est installé avec mariadb-server.
-Donc on peut d'abord lister les base donnĂ©es pour ĂȘtre sĂ»r de celle -que l'on veut exporter ?
--$ mysql -u root -p -MariaDB [(none)]> SHOW DATABASES; -+--------------------+ -| Database | -+--------------------+ -| test1 | -| information_schema | -| mysql | -| nextcloud | -| performance_schema | -| test | -+--------------------+ - --
Si par exemple on veut exporter la base nextcloud on tapera ceci -dans notre shell:
--$ mysqldump -u root -p nextcloud > nextcloud_export.sql -
Pour importer notre fichier on va devoir créer la base et l'utilisateur qui aura -les droits sur la base.
--$ mysql -u root -p -MariaDB [(none)]> CREATE DATABASE nextcloud; -MariaDB [(none)]> CREATE USER nextbase IDENTIFIED BY 'example'; -MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO nextbase; -MariaDB [(none)]> FLUSH PRIVILEGES; -MariaDB [(none)]> exit; --
Si tout se passe bien normalement Ă la fin de chaque commande mysql -vous verrez un message Query OK ... , c'est que c'est bon :).
-Maintenant on va pouvoir importer notre fichiers comme ceci :
--$ mysql -u nextbase -p nextcloud < nextcloud_export.sql --
Si vous n'avez aucun message d'erreur, c'est fini !
- - - -- Exporter/Importer une base de donnĂ©es avec mariadb đ -
- -- Une liste de plugins firefox qui sont pour moi indispensables. -
- -- Sauvegarder le systÚme de sa carte ARM OrangePi avec debian sur clé usb -
- -- Pourquoi utiliser des logiciels libres -
- -Bonjour chers lecteurs·trices, comme vous ne le savez peut-ĂȘtre -pas; j'utilise et recommande autant que faire se peut des logiciels libres. -Ces derniers rĂ©pondent a quatre lois de bases qui ont des -consĂ©quences pour les utilisateurs. A travers divers exemples, je tenterai -de vous faire comprendre l'intĂ©rĂȘt qu'a la licence d'un programme.
-En effet, certaines licences vous interdisent d'utiliser le -programme comme vous l'entendez, par exemple : Vous installer un -antivirus et au bout d'une pĂ©riode d'essai il ne fonctionne plus car -il faut activer/acheter la licence ( ils ont des termes j'vous jure). -Quand vous acheter un programme comme Microsoft office, on vous -permet de lâinstaller sur un nombres dâordinateurs dĂ©finis par -Microsoft. Souvent il sâagit dâun ordinateur, si vous avez un -ordinateur de bureau et un portable hĂ© bien vous aurez 2 licences -Ă acheter. Simple et efficace mais pour qui ?
-Cela implique que le code source du programme doit vous -ĂȘtre fourni sur demande ou directement Ă lâachat ou tĂ©lĂ©chargement -du logiciel. On peut vĂ©rifier ce qu'un programme fait quand on -lis son code pas quand on vois ce qu'il fait⊠Un exemple concret, lâapplication -Flashlight qui a Ă©tĂ© prĂ©sente sur le Playstore, les gens voyaient que le flash -sâallumait mais que leur coordonnĂ©es bancaire Ă©tait envoyĂ©es sur un -ordinateur Ă travers Internet. -Cela reste un cas rare, mais des cas de vol dâinformations personnelles envoyer -par des applications sans en avertir les utilisateurs est trĂšs rĂ©pandu -par contre. Vous pouvez aller voir ce -projet pour vous en convaincre.
-Il se peut aussi que le logiciel vous intĂ©resse mais il n'est pas -adaptĂ© Ă vos besoins ou votre infrastructure. Avec le logiciel libre, -vous pouvez payer un dĂ©veloppeur pour adapter le programme a vos besoins. -Et en informatique adapter des programmes existant c'est assez rĂ©pandu. -D'autre part si vous ĂȘtes une boĂźte de dĂ©veloppement cela vous donne -l'occasion de montrer votre savoir-faire.
-Bon lĂ tout le monde connaĂźt et sait de quoi on parle ⊠Sachez que -quand vous partagez une logiciel, par exemple une application dâun -jeux sur Android le simple fait de partager une paquet (.apk) avec -vos amis peut-ĂȘtre interdit. Mine de rien quand on sait que l'on est -en tord de partager un logiciel avec un amis ou quelqu'un qu'on aime -bien car on sait pertinament que ca ne fonctionnera, cela ne pousse -pas a l'entraide entre les gens dans une sociĂ©tĂ©.
-Alors sur ce point un petite explication s'impose. Si vous modifiezun -programme et que vous le gardez pour vous, pas de problÚme. -Par contre si vous partagez/vendez ce logiciel, alors vous devez -fournir le code source modifié.
-Il y a de multiples exemples oĂč le logiciel libre a beaucoup -d'avantages, qui dĂ©coulent de ces quatre libertĂ©s. Les effets sur -la sociĂ©tĂ© sont aussi important bien que cela demande un article -complet le logiciel libre prĂŽne plus des valeurs de partages que les -valeurs de la possession. La transparence de lâĂ©diteur du logiciel -face aux bĂ©nĂ©fices de lâĂ©diteur envers ces utilisateurs.
-Ce n'est pas Charlemagne mais Richard Stallman qui le -4 octobre 1985 fonde la FSF et officialise du coup le projet GNU rassemblant -tout les programmes essentiels pour avoir un systĂšme d'exploitation libre -crĂ©Ă© un an avant. -Aujourd'hui la Fondation s'emploie Ă promouvoir et faire respecter sa -licence: la GPL (en version 3 a l'heure actuelle). Elle finance aussi divers -projets dans des domaines oĂč le logiciel libre manque de solution. Ăa se passe ici
-Voila ! c'est fini pour cet article j'espÚre qu'il vous aura -fait découvrir pas mal de choses.
- - - -Click here to be redirected.
- - diff --git a/public/plugins-firefox/index.html b/public/plugins-firefox/index.html deleted file mode 100644 index 49d2e12..0000000 --- a/public/plugins-firefox/index.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - -Mozilla Firefox a lâavantage dâavoir pas mal de plugins sympathiques, -parmi eux quelques classiques qui vous aiderons Ă Ă©viter quelques -ennuies quand vous allez naviguer sur internet. -Parmi ces plugins, il y en qui sont important si vous voulez un peu -moins de publicitĂ©es sur internet(cookie) et une connexion sĂ©curisĂ©(https).
-Le premier plugin câest ublock origin, -quand vous consultez une page web, il fait le tri et ne charge pas -certains Ă©lĂ©ments de la page (gĂ©nĂ©ralement les publicitĂ©s). -Il a le mĂ©rite de se faire discret et simple sans messages intempestifs. -GĂ©nĂ©ralement la navigation est plus fluide et on perd rarement certaines -fonctionnalitĂ©s du site enlui-mĂȘme.
-Un second que jâutilise pas mal car on oublie quelques-fois bĂȘtement -de vĂ©rifier câest Https Everywhere, -ce dernier sâassure quâil y a bien une connexion chiffrer entre vous -et le site que consultez. Câest presque un incontournable.
-Ces deux plugins ont lâavantage dâĂȘtre disponible pour Mozilla Firefox -mais aussi pour chrome si vous prĂ©fĂ©rez ce dernier sachant qu'il est -moins respectueux de la vie privĂ©e mais vous pouvez en savoir plus en -lisant les rĂšgles de confidentialitĂ©s qui sont ici Bonne lecture.
-Afin de protĂ©ger un peu mieux votre vie privĂ©e vous pouvez aussi -essayer de faire vos recherches sur DuckDuckGo par exemple; ou utiliser -plus frĂ©quemment lâoutil de recherche sur le site que vous consultez, -si vous cherchez quelques choses sur Wikipedia par exemple ; autant utiliser -la recherche directement sur le site, afin de ne pas laisser toutes vos recherches Ă un seul site.
-Un site trĂšs pratique aussi c'est tosdr pour -Terms of Service; Didn't Read. Les conditions d'utilisation dĂ©fini -par un service en ligne sont souvent longues et compliquĂ©s, et dans -la pratique peu de personnes prennent le temps de les lires. -Ils proposent sous forme de rĂ©sumĂ© ces textes juridiques pour savoir -trĂšs vite ce que vous acceptez en cliquant sur j'accepte lorsque vous -vous inscrivez sur un site.Le projet Ă©tant communautaire vous pouvez -participer a rĂ©sumer des conditions d'utilisation et mĂȘme l'intĂ©grer -Ă Firefox grĂące Ă leur plugin!
- - - -Ou plutĂŽt les problĂšmes, car il peut y en avoir plusieurs; par exemple le -systĂšme sur la carte ne boot plus. On a fait une bĂȘtise, on la dĂ©branchĂ© car on -a voulu la dĂ©placer ou le fil s'est dĂ©branchĂ© par accident, et aller cette fois -lĂ c'est la galĂšre. C'est gĂ©nĂ©ralement long et fastidieux de rĂ©cupĂ©rer les -donnĂ©es sur sa carte SD ou autre, j'ai donc fait un script qui fait une -sauvegarde globale du systĂšme sur un disque ou une clĂ© usb que l'on devra -autoriser auparavant, histoire que dĂšs que l'on branche une clĂ© usb, ça n'envoie -pas les donnĂ©es dessus. Il y a bien Ă©videment des solutions de sauvegarde en -ligne mais ayant une connexion avec peu de dĂ©bit, ça peut prendre beaucoup de -temps, la connexion peut couper et alors c'est des complications, pour moi ce n'Ă©tait pas trĂšs adaptĂ©.
-Le principe c'est que le script a deux fonctionnalitĂ©es -Une pour ajouter les supports de stockages oĂč la sauvegarde sera envoyĂ©. Le script formate la partition et il ajoute l'UUID Ă la liste des clĂ©s ou disques autorisĂ© a recevoir les donnĂ©es. Pour l'utiliser on lancera la commande ./saveonmedia create -Une pour Ă©couter avec udev les medias branchĂ©s et rĂ©aliser la sauvegarde quand elle reconnaĂźt L'UUID d'un disque. On lancera la commande ./saveonmedia make -Pour la liste, un bĂȘte fichier texte suffit pour ajouter les supports de stockage lignes par lignes, on se basera sur les UUID des partitions sur le disque qui sont normalement identifier de maniĂšre unique. Pour rĂ©aliser la sauvegarde le script lancera un script bash qui est gĂ©nĂ©ralement plus pratique si l'on veut ajouter des taches Ă effectuer ou personnaliser le truc un peu comme on veut.
-- -#!/usr/bin/python3 -# -*- coding: utf-8 -*- - -import pyudev -import subprocess -import sys -import os -import socket -from email.mime.text import MIMEText -from subprocess import Popen, PIPE - -def print_help(): - print (""" - ##### saveonusb Sauvergarde sur support USB #### - ! A executer avec l'utilisateur avec des droits root (sudo) ou en root ! - Pour autoriser un disque (clĂ© usb, disque usb) - Lancez la commande : - ./saveonusb create - Pour effectuer l'ecoute puis la sauvegarde: - ./saveonusb make - """) - -def send_msg(subject, message): - # Permet d'envoyer des mail a root via sendmail. - msg = MIMEText(message) - msg["From"] = "sauvegarde@"+socket.gethostname() - msg["To"] = "root@"+socket.gethostname() - msg["Subject"] = subject - p = Popen(["/usr/sbin/sendmail", "-t", "-oi"], stdin=PIPE, universal_newlines=True) - p.communicate(msg.as_string()) - - -def clean_df_out(df_out): -# Ici on tri les enleve les partitions de la sortir de df qui ne sont pas des supports -# de stockages -# - df_out = df_out.split('\n') - lines=[] - for line in df_out: - if line[0:4] == '/dev': - lines.append(line) - - line_clean = list() - lines_clean = list() -# On crĂ©e la liste des champs de df - for line in lines: - line = line.split(' ') - for champ in line: - if champ != '': - line_clean.append(champ) - lines_clean.append(line_clean.copy()) - line_clean.clear() - - return lines_clean - -def getMinSpaceRequirement(): -# df -k A ce schema de sorti -# Filesystem | 1K-blocks | Used | Avail | Capacity | Mounted on -# -# Pour obtenir l'espace minimum on suppose que l'on veut sauvegarder toutes les -# donnĂ©es de tout les supports de stockages. - - df = subprocess.check_output(['/bin/df', '-k']).decode('utf8') - df_list = clean_df_out(df) - print (df_list) - space_used = 0 - for line in df_list: - space_used = space_used + int(line[2]) - - return space_used - -def get_uuid(device): - cmd = subprocess.check_output(['sudo', 'blkid', device]) - cmd = cmd.decode('utf-8') - for line in cmd.split(' '): - if 'UUID=' == line[0:5]: - return line[6:len(line)-1] - return '' - -def make_save(save_directory, storages): - context = pyudev.Context() - monitor = pyudev.Monitor.from_netlink(context) - monitor.filter_by('block') - done = False - with open (storages, 'r') as f: - medias_save = f.read().splitlines() - - while not(done): - device = monitor.poll() - if 'ID_FS_TYPE' in device and device.action == "add": - print ("device: {0} medias: {1}".format(device.get('ID_FS_UUID'), medias_save)) - if "ynh_save" == device.get('ID_FS_LABEL') and device.get('ID_FS_UUID') in medias_save: - print ("La sauvegarde a commencĂ©") - send_msg("Une sauvegarde a Ă©tĂ© lancĂ©","Ne retirez pas votre disque ou clĂ© usb. Merçi.") - - retcode = subprocess.call("mount " + device.device_node + " "+ save_directory, shell=True) - if retcode != 0: - subject = "Bon ... ça s'est mal passĂ©" - message = """Impossible de monter la clĂ© USB :( """ - send_msg(subject, message) - - retcode = subprocess.call( save_script + " " + save_directory, shell=True) - if retcode != 0: - subject = "Bon ... ça s'est mal passĂ©" - message = """Le script de sauvegarde a remontĂ© une erreur, -comment dire ... je le ferai autrement moi """ - send_msg(subject, message) - - retcode = subprocess.call("umount " + device.device_node, shell=True) - if retcode != 0: - subject = "Bon ... ça s'est a peu prĂšs bien passĂ©" - message = """Ăa a montĂ© le support et tout, le script pas de problĂšmes, -mais ca dĂ©monte pas le support correctement le script ne peut rien faire seul vous pouvez -voir ce qu'il se passe""" - else: - subject = "Confirmation de sauvegarde" - message = """Votre sauvegarde est prĂȘte vous pouvez retirer votre -support de stockage en toute sĂ©curitĂ©. Rebranchez ce mĂȘme support quand vous - souhaitez effectuer une sauvergarde. Attention! Toutes modifications de la partiton - rendra le support invalide""" - send_msg(subject, message) - - -def create_key_save(storages): - context = pyudev.Context() - monitor = pyudev.Monitor.from_netlink(context) - monitor.filter_by('block') - with open (storages, 'r') as f: - medias_save = f.read().splitlines() - done = False - while not(done): - device = monitor.poll() - if device.device_type == "partition" and device.action == "add": - if "ynh_save" == device.get('ID_FS_LABEL') and device.get('ID_FS_UUID') in medias_save: - subject = "Ce support de stockage est dĂ©jĂ initialisĂ©" - message = "Il n'est pas nĂ©cĂ©ssaire d'initialisĂ© ce pĂ©riphĂ©rique" - send_msg(subject, message) - else: - size = subprocess.check_output("fdisk -s " + - device.device_node, - shell=True) - size = int(size) - size_requirement = getMinSpaceRequirement() - if size > size_requirement: - done = True - retcode = subprocess.call("mkfs.ext4" + " -F -L ynh_save" + - " "+ device.device_node, shell=True) - - if retcode != 0: - subject = "Impossible de formatter la clĂ©" - message = """ Il y a eu un problĂšme durant le formatage de la clĂ©""" - send_msg(subject, message) - # On rĂ©cupere le nouvel uuid - - with open (storages, 'a') as f: - f.write(get_uuid(device.device_node)+ '\n') - subject = "Autorisation d'un support de sauvegarde" - message = """ Vous venez de crĂ©er un support pour votre sauvegarde. -Cela s'est deroulĂ© normalement. Pour effectuer une sauvegarde maintenant -rebrancher votre support de stockage; un mail vous signalera quand vous pourrez -enlevez votre support en toute sĂ©curitĂ©.""" - send_msg(subject, message) - done = True - else: - subject = "Votre support de stockage est de taille insufisante !" - message = """Il n'y a pas assez d'espace disque sur le support que -vous venez de brancher; essayer avec une media de plus grande capacitĂ© (minimum """ + - str(size_requirement/1000000) + "Gb)" - send_msg(subject, message) - - -save_directory = "/media/save" -save_script = "/etc/saveonusb/scripts/save.sh" -conf_path = "/etc/saveonusb/" -storages = conf_path+"storages" - -if os.geteuid() != 0: - raise OSError("Ce programme doit s'executer avec les droits root") - -if not(os.path.exists(save_directory)): - raise OSError("Le repertoire "+ save_directory +" n'existe pas") - -if not(os.path.exists(conf_path)): - raise OSError("Le repertoire "+ conf_path +" n'existe pas") - -if not(os.path.isfile(save_script)): - raise OSError("Le fichier "+ save_script +" n'existe pas") - -if not(os.path.isfile(storages)): - raise OSError("Le fichier "+ storages +" n'existe pas") - -if len(sys.argv) > 1: - if sys.argv[1] == 'create': - create_key_save(storages) - if sys.argv[1] == 'make': - make_save(save_directory, storages) - if sys.argv[1] == '--help' or sys.argv[1] == '-h': - print_help() -else: - print_help() - - --
On installe pyudev:
-
- apt install python3-pyudev
-
-On créé les répertoires et les fichiers nécessaires:
--mkdir /media/save -mkdir -p /etc/saveonusb/scripts -touch /etc/saveonusb/storages && touch /etc/saveonusb/scripts/save.sh -chmod +x /etc/saveonusb/scripts/save.sh --
Je me suis fait tout d'abord un petit script afin de gĂ©nĂ©rer -une image prĂȘte a ĂȘtre flasher sur une carte SD
-- -#!/bin/bash - -set -e -#set -x - -#Implementer un TRAC error avec exit qui clean quand ca foire -# Implementer des logs - - -#Fonction pour check les programmes nĂ©cĂ©ssaire. -#lance apt install quand les programmes manques -# modprobe loop - -# Test les medias disponibles et passer en parametre le disk a monter pour mettre l'image -# Demande confirmation pour commencer tout les Ă©tapes ou a toutes les Ă©tapes -_apt_install_dep() -{ - echo "on passe ici avec $1 comme argument" - case $1 in - truncate) - apt-get -y install --no-install-recommends coreutils - ;; - mkfs.ext4) - apt-get -y install --no-install-recommends e2fsprogs - ;; - *) - apt-get -y install --no-install-recommends $1 - ;; - esac -} - -check_dep() -{ - bins=(dd truncate rsync parted mkfs.ext4 ) - for i in "${bins[@]}"; do - if ! which "${i}" &> /dev/null; then - echo "${i} command is required" - _apt_install_dep ${i} - fi - done - echo "check_dep ok" -} - - - -create_img() { - local folder=$1 - local image=$2 - -# Espace utilisĂ© sur / - local usage=$(df -BM | grep ^/dev | head -1 | awk '{print $3}' | tr -cd '[0-9]. \n') -# Espace libre - local avaible=$(df -BM $folder | grep ^/dev | head -1 | awk '{print $4}' | tr -cd '[0-9]. \n') - - if [[ $usage -gt $avaible ]]; then - echo "No space left" - echo "Required: $usage MB " - echo "Free space in $folder : $avaible MB " - exit 1 - fi - #On laisse 1024M d'espace libre sur l'image - local image_size=$(($usage+1024))'M' - truncate -s $image_size $folder/$image -} - - -prepare_part() { - local loop=$1 - local folder=$2 - local image=$3 - local mount_image=$4 - - losetup $loop $folder/$image - parted -s $loop -- mklabel msdos - parted -s $loop -- mkpart primary ext4 8192s -1s - #La carte ne boot pas avec la ligne en dessous - #parted -s $loop align-check optimal 1 - partprobe $loop - mkfs.ext4 $loop"p1" - mkdir $mount_image - mount $loop"p1" $mount_image -} - -copy_files() { -# Stopper les services avant de copie -# VĂ©rifier que les partitions soient montĂ©es -# Afficher le point de montage de la partition -# On redirige la sortie du programme vers /dev/null et la sortie erreur (2) sur la sortie standard -# On ne verra que les erreurs des fichiers ou la copie a posĂ© problĂšme - local mount_image=$1 - rsync -avrltD --delete --exclude={/dev/*,/proc/*,/sys/*,/media/*,/mnt/*,/run/*,/tmp/*} / $mount_image > /dev/null 2>&1 -} - -#Modify fstab -change_fstab() { - local mount_image=$1 - local old_uuid=$(blkid -o export `mount | grep -w / | awk '{print $1}'` | grep ^UUID) - local new_uuid=$(blkid -o export `mount | grep -w /media/$IMAGE | awk '{print $1}'` | grep ^UUID) - echo "old_uuid: $old_uuid" - echo "new_uuid: $new_uuid" - sed -i s/$old_uuid/$new_uuid/ $MOUNT_IMAGE/etc/fstab - if [ -e $MOUNT_IMAGE/boot/armbianEnv.txt ]; then - sed -i s/$old_uuid/$new_uuid/ $MOUNT_IMAGE/boot/armbianEnv.txt - fi -} - -write_mbr() { - -# On cherche le uboot_sunxi_with_spl.bin selon si on est sur armbian ou non - local $uboot_mbr - local $loop - loop=$1 - uboot_mbr=$2 - - if [ ! -f $uboot_mbr ]; then - exit 1; - fi -# on Efface la zone pour le mbr - dd if=/dev/zero of=$loop bs=1k count=1023 seek=1 status=noxfer > /dev/null 2>&1; - -# on flash le mbr - dd if=$uboot_mbr of=$loop bs=1024 seek=8 status=noxfer > /dev/null 2>&1; -} - - -clean() { - local loop=$1 - local mount_image=$2 - - sync - umount $mount_image - losetup -d $loop - rmdir $mount_image -} - -## DĂ©but du script -show_usage() { - cat << EOF -Ce script gĂ©nĂšre une image qui peut ĂȘtre flasher sur une carte SD pour les cartes -Olimex LIME LIME2 et orange pi pc (plus) - - $(basename $0) - - -d Dossier oĂč sera stockĂ© l'image - - -u uboot_sunxi_with_spl.bin - - -EOF - - exit 1 -} - -if [ ! $(id -u) = 0 ]; then - echo "L'utilisateur doit ĂȘtre root" - exit 1 -fi - - - -## PossibilitĂ© d'aller chercher le uboot_sunxi_with_spl.bin sur une adresse http - - -#Check arguments - -if [ $# -eq 0 ]; then - show_usage -fi - -# GĂ©rer les options https://www.tutorialspoint.com/unix_commands/getopt.htm - - -while getopts ":d:u:h" opt; do - case $opt in - - d) - FOLDER=$OPTARG - ;; - u) - UBOOT_MBR=$OPTARG - ;; - h | *) - show_usage; - ;; - esac -done - -if [ -z $FOLDER ]; then - show_usage -fi - - -if [ ! -d $FOLDER ]; then - echo "$FOLDER isn't a directory"; - #echo "Le dossier $FOLDER n'existe pas" - show_usage -fi -if [ -z $UBOOT_MBR ]; then - show_usage -fi - -if [ ! -f $UBOOT_MBR ]; then - echo "This file $UBOOT_MBR doesn't exist"; - show_usage -fi - -IMAGE=snapshot_`date +%Y%m%d`.img -LOOP=$(losetup -f) -MOUNT_IMAGE="/media/"$IMAGE - -check_dep -echo "check_dep : OK" -#On crĂ©e un image de la taille minimale avec 1024M de place disponible. -create_img $FOLDER $IMAGE -echo "create_img: OK" - -#On crĂ©e l'interface Loop et les partitions qui vont bien -prepare_part $LOOP $FOLDER $IMAGE $MOUNT_IMAGE -echo "prepare_part: OK" -#On copie la / -copy_files $MOUNT_IMAGE -echo "copy_file: OK" -# -change_fstab $MOUNT_IMAGE -echo "change_fstab: OK" - -#On Ă©crit le MBR -write_mbr $LOOP $UBOOT_MBR -echo "write_uboot: OK" -#demonte l'image et detache l'interface loop -clean $LOOP $MOUNT_IMAGE - --
je copie ce script dans /usr/local/bin/make_img -chmod +x /usr/local/bin/make_img
-Puis dans mon fichier /etc/saveonusb/script/save.sh
-- -DIR_SAVE=$1 - -if [ ! -d "$DIR_SAVE" ]; then - echo "Le repertoire $DIR_SAVE n'existe pas" 1>&2; - exit 1; -fi - - -/usr/local/bin/make_img -f $DIR_SAVE -u /usr/lib/linux-u-boot-next-orangepipcplus_5.90_armhf/u-boot-sunxi-with-spl.bin - - -if [ $? -eq 1 ]; then - echo "Il y a eu une erreur durant la copie des fichiers" 1>&2; - exit 1; -fi - -{% endhighlight %} - - -Version pour les personnes qui sont sous yunohost: -{% highlight bash %} -#!/bin/bash - -DIR_SAVE=$1 - -if [ ! -d "$DIR_SAVE" ]; then - echo "Le repertoire $DIR_SAVE n'existe pas" 1>&2; - exit 1; -fi - - -/usr/bin/yunohost backup create -o $DIR_SAVE -if [ $? -eq 1 ]; then - echo "Il y a eu une erreur pendant l'exécution de yunohost backup" 1>&2; - exit 1; -fi - --
Il y a biensur des choses à améliorer, mais c'est fonctionnel. On pourrait par exemple avoir plusieurs scripts ou vérifier si le support de sauvergarde a encore la place suffisante. Mais pour mes besoins ça me suffit. Une fonction pour la restauration ça serait pas mal aussi :).
- - - -