Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#301 Le 23/06/2025, à 23:18

eric63

Re : script d’automatisation sauvegardes

@iznobe
Je suis sincèrement désolé de ne pas arriver à comprendre tes recommandations qui te semble évidentes mais je tiens compte de tes remarques au mieux de mes capacités de compréhension.

@steph810
j’ai longuement lu tes infos
tu fais appel à des commandes qui ne semble pas trouver d’écho chez moi

kubu@kubu-System-Product-Name:~$ sudo apt install findmnt
Notification : Le fichier « ookla_speedtest-cli.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « syncthing.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « arntanguy-head.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Erreur : Impossible de trouver le paquet findmnt
kubu@kubu-System-Product-Name:~$ sudo apt install awk
Le paquet awk est un paquet virtuel fourni par :
  original-awk 2025-01-16-1
  mawk:i386 1.3.4.20250131-1
  gawk:i386 1:5.2.1-2build3
  mawk 1.3.4.20250131-1
  gawk 1:5.2.1-2build3
Vous devez explicitement sélectionner un paquet à installer.

Notification : Le fichier « ookla_speedtest-cli.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « syncthing.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « arntanguy-head.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Erreur : Le paquet « awk » n'a pas de version susceptible d'être installée
kubu@kubu-System-Product-Name:~$ sudo apt install ping
Le paquet ping est un paquet virtuel fourni par :
  inetutils-ping 2:2.5-6ubuntu1
  iputils-ping 3:20240905-1ubuntu1
Vous devez explicitement sélectionner un paquet à installer.

Notification : Le fichier « ookla_speedtest-cli.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « syncthing.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « arntanguy-head.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Erreur : Le paquet « ping » n'a pas de version susceptible d'être installée
kubu@kubu-System-Product-Name:~$ sudo apt install flock
Notification : Le fichier « ookla_speedtest-cli.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « syncthing.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « arntanguy-head.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Erreur : Impossible de trouver le paquet flock
kubu@kubu-System-Product-Name:~$ sudo apt install mailx
Le paquet mailx est un paquet virtuel fourni par :
  mailutils 1:3.18-1
  bsd-mailx 8.1.2-0.20220412cvs-1build1
Vous devez explicitement sélectionner un paquet à installer.

Notification : Le fichier « ookla_speedtest-cli.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « syncthing.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « arntanguy-head.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Erreur : Le paquet « mailx » n'a pas de version susceptible d'être installée
kubu@kubu-System-Product-Name:~$ sudo apt install mail
Notification : Le fichier « ookla_speedtest-cli.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « syncthing.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Notification : Le fichier « arntanguy-head.list.migrate » dans le répertoire « /etc/apt/sources.list.d/ » a été ignoré car il possède une extension non valable
Erreur : Impossible de trouver le paquet mail
kubu@kubu-System-Product-Name:~$ 

Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR

Hors ligne

#302 Le 24/06/2025, à 07:27

steph810

Re : script d’automatisation sauvegardes

Bonjour,
Normalement, elles devraient déjà être installés, car eles font partie du paquet util-linux.

sudo apt update && sudo apt install rsync sshfs fuse mailutils util-linux coreutils findutils gawk sed

Ajout au README

Dernière modification par steph810 (Le 24/06/2025, à 15:30)

Hors ligne

#303 Le 24/06/2025, à 08:02

iznobe

Re : script d’automatisation sauvegardes

Bonjour , pour un script qui doit contenir une paire de commande rsync et le contrôle des sources / destination , ca devient vraiment n ' importe quoi .

Exactement , le pourquoi il ne faut pas suivre des indications portant vers des " wget " avec des scripts dont il n ' y a pas trace sur le forum , surtout si le demandeur suit " aveuglement " les consignes ... et dont seul l ' aidant a la main dessus .

@eric63 , tu devrais arrêter ça si tu veux mon avis , il est tout à fait possible d ' inclure un code malveillant et de changer ensuite le code sans que personne ne voit rien . ( je dis pas que c ' est ce qui est fait , mais c' est tout à fait possible ! )
là , j ' ai l' impression que c ' est très très limite et proche de la cata ! , tout ça ne sert à rien , a part perdre du temps et noyer le poisson ...


j ' attends le prochain wget roll


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#304 Le 24/06/2025, à 08:23

steph810

Re : script d’automatisation sauvegardes

iznobe a écrit :

Bonjour , pour un script qui doit contenir une paire de commande rsync et le contrôle des sources / destination , ca devient vraiment n ' importe quoi .

Exactement , le pourquoi il ne faut pas suivre des indications portant vers des " wget " avec des scripts dont il n ' y a pas trace sur le forum , surtout si le demandeur suit " aveuglement " les consignes ... et dont seul l ' aidant a la main dessus .

@eric63 , tu devrais arrêter ça si tu veux mon avis , il est tout à fait possible d ' inclure un code malveillant et de changer ensuite le code sans que personne ne voit rien . ( je dis pas que c ' est ce qui est fait , mais c' est tout à fait possible ! )
là , j ' ai l' impression que c ' est très très limite et proche de la cata ! , tout ça ne sert à rien , a part perdre du temps et noyer le poisson ...


j ' attends le prochain wget roll

Si ce n'est que ca donnez moi votre github je peut vous rajouter dans Collaborators and teams. Pour l'accès en ecriture admin ect...

clamscan sauvegarde.sh 
Loading:    43s, ETA:   0s [========================>]    8.71M/8.71M sigs       
Compiling:   4s, ETA:   0s [========================>]       41/41 tasks 

/home/tech/sauvegarde.sh: OK

----------- SCAN SUMMARY -----------
Known viruses: 8707556
Engine version: 1.4.2
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.07 MB
Data read: 0.04 MB (ratio 1.89:1)
Time: 47.572 sec (0 m 47 s)
Start Date: 2025:06:24 08:18:52
End Date:   2025:06:24 08:19:40

Dernière modification par steph810 (Le 24/06/2025, à 08:25)

Hors ligne

#305 Le 24/06/2025, à 10:17

Ayral

Re : script d’automatisation sauvegardes

steph810 a écrit :

je crois qu'il ne veut pas de backup les sauvegarde incrémentielle.
il ne les veut pas en double. VM + Perso.
Ont va voir se qu'il repondra. Si c'est ca il faut ajouter alors une "option" true,false ou 0,1
mais je peut me trompez.

Modération : Vraiment, steph810, fais un effort sur la rédaction de tes messages. Ils sont si étrangement rédigés qu'on en perd souvent la signification, il faut faire une analyse, une exégèse quasi doctrinale pour en découvrir le sens... Et même là, la postée du texte reste obscure. Et je n'ai rien dit de l'orthographe.


Pour mettre les retours de commande entre deux balises code, les explications sont là : https://forum.ubuntu-fr.org/viewtopic.php?id=1614731
Blog d'un retraité
Site de graphisme du fiston Loïc
Ubuntu 22.04 LTS sur un Thinkpad W540

Hors ligne

#306 Le 24/06/2025, à 11:44

steph810

Re : script d’automatisation sauvegardes

Ayral a écrit :

Modération : Vraiment, steph810, fais un effort sur la rédaction de tes messages. Ils sont si étrangement rédigés qu'on en perd souvent la signification, il faut faire une analyse, une exégèse quasi doctrinale pour en découvrir le sens... Et même là, la postée du texte reste obscure. Et je n'ai rien dit de l'orthographe.

Je prends note de la remarque, y compris sur l’orthographe. Toutefois, je trouve qu’on confond parfois rigueur de rédaction et compréhension des idées. Mon but est avant tout de faire avancer la discussion sur un sujet technique complexe, pas d’écrire des romans littéraires. Je veillerai à clarifier mes propos et à faire attention à l’orthographe, mais je refuse que l’essentiel soit noyé sous une obsession formelle qui ralentit les échanges.

Dernière modification par steph810 (Le 24/06/2025, à 11:45)

Hors ligne

#307 Le 24/06/2025, à 13:11

eric63

Re : script d’automatisation sauvegardes

pour changer le NOM de l' utilisateur , il n ' y a aucunement besoin de formater ...
Tu créés un nouvel utilisateur , tu transfères les fichiers dans son home , tu changes l' UUID du Nouvel utilisateur , et c' est tout !
Si ce n' est pas ça , précise ce que tu entends par " renommer la VM " :

je suppose que tu parles de cela

kubu@kubu-System-Product-Name:/run/user/1001/kio-fuse-eUhnLi/sftp/Multimedias@192.168.1.128/home$ ls -l
total 12
drwxr-x--- 1 kubu kubu 4096 juin   2 23:10 freebox
drwxr-x--- 1 kubu kubu 4096 mai    7 10:09 Multimedia
drwxr-x--- 1 kubu kubu 4096 juin  21 19:05 Multimedias
créer un nouvel utilisateur ici pour avoir un truc comme cela
drwxr-x--- 1 kubu kubu 4096 juin  21 19:05 VM

J’entends par «renommer la VM»le fait de changer dans la freebox le nom Multimedias n’importe ou qu’il soit
et son accès en ligne de commande:

Multimedias@192.168.1.128:/home/Multimedias 

par

VMFreebox@192.168.1.128:/home/VM 

@steph810
il me manque une solution pour des relances de sauvegardes toutes les xx minutes
ou un nombre de sauvegardes par heure de 1 à 10
dans ton script config.sh et dans sauvegarde.sh les conditions adéquates à HORAIRE_RETENTION

Je donne pas le script avec mes variables avant d’avoir soit modifié les chemins  soit de continuer sur ma lancée suivant ce qu’on me renverra comme réponse

Dernière modification par eric63 (Le 24/06/2025, à 13:27)


Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR

Hors ligne

#308 Le 24/06/2025, à 13:45

steph810

Re : script d’automatisation sauvegardes

eric63 a écrit :

@steph810
il me manque une solution pour des relances de sauvegardes toutes les xx minutes
ou un nombre de sauvegardes par heure de 1 à 10
dans ton script config.sh et dans sauvegarde.sh les conditions adéquates à HORAIRE_RETENTION

Je donne pas le script avec mes variables avant d’avoir soit modifié les chemins  soit de continuer sur ma lancée suivant ce qu’on me renverra comme réponse

Faisable, mais ça complique un peu les choses. Normalement, vous devriez déjà avoir les journalières hebdomadaires et mensuelles. N'oubliez pas de les désactiver, mettre à 0
Cela va impliquer l'ajout de nouvelles règles de modifier les boucles et fonctions.  Je parle bien sûr de sauvegarde.sh.
Config.sh, ce serait uniquement l'ajout de nouvelles variables.

Dernière modification par steph810 (Le 24/06/2025, à 13:49)

Hors ligne

#309 Le 24/06/2025, à 14:09

eric63

Re : script d’automatisation sauvegardes

Je parle bien sûr de sauvegarde.sh.
Config.sh, ce serait uniquement l'ajout de nouvelles variables.

oui j’ai bien compris cela
les sauvegardes journalières me semble un peu juste avec les documents qui mériterait un déclencheur manuel ? si un fichier avait besoin de plus de rotation de sauvegardes

j’ai oublié aussi une question sur le dossier documents fanou en local et sur le dossier documents sur le portable qui appartiennent à la même personne même uid
l’un (portable) à des sous dossiers l’autre (locale) n’en a pas . Comment mutualiser les 2 ?? ce qui est ajouté dans l’un apparait dans l’autre


Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR

Hors ligne

#310 Le 24/06/2025, à 14:21

O_20_100_O

Re : script d’automatisation sauvegardes

eric63 a écrit :

j’ai oublié aussi une question sur le dossier documents fanou en local et sur le dossier documents sur le portable qui appartiennent à la même personne même uid
l’un (portable) à des sous dossiers l’autre (locale) n’en a pas . Comment mutualiser les 2 ?? ce qui est ajouté dans l’un apparait dans l’autre

Tiens, c'est amusant smile
Tout à l'heure, dans le demi sommeil de ma sieste, je faisais le point sur ton projet, et puis j'ai pensé que pour les fichiers personnels de Fanou, c'est le même problème que pour les communs. Elle ne peut pas en avoir un peu de chaque côté.
Il faudrait les mettre tous dans une session à son nom dans la VM. big_smile

Dernière modification par O_20_100_O (Le 24/06/2025, à 14:22)

Hors ligne

#311 Le 24/06/2025, à 14:56

krodelabestiole

Re : script d’automatisation sauvegardes

iznobe a écrit :

tout ça ne sert à rien

surtout pour ce projet de mettre en place 2 ou 3 choses tout à fait simples et ordinaires : quelques répertoires partagés sur une box et une sauvegarde sur un disque externe !
(ça va être quoi le prochain fil, quelqu'un va proposer @eric63 de programmer en rust ?)

@eric63, si j'ai quelques conseils pour éviter de faire perdre du temps à toi et à d'autres - et éventuellement réussir à mettre ton léviathan en place, et être capable de le maintenir en autonomie :
quand tu ne comprends pas quelque chose, arrête-toi, et prends du temps pour poser des questions jusqu'à ce que tu comprennes, à la fois ce qu'on te conseille et ce que tu fais.
ça ne sert à rien de copier-coller des commandes et a fortiori du code sans le comprendre, on suppose que tu es là pour comprendre, c'est en tout cas le but du forum, a priori pas pour trouver quelqu'un pour faire les choses à sa place. pour ça on peut engager un technicien, ou trouver un bénévole si le projet en vaut la peine.
c'est pour ça que partir dans du script bash pour réinventer la sauvegarde est dès le début une mauvaise idée. bash est un langage de programmation. il faut donc l'apprendre au moins un minimum pour l'utiliser. et vu qu'on en est à comprendre les protocoles réseaux, et les bonnes pratiques en matière de chemins et de points de montage, et de gestion des ressources, même si bash peut avoir un intérêt didactique à un moment on ne peut pas tout apprendre en même temps.

et ça :

eric63 a écrit :

sur la VM Multimédias@192.168.1.128:/home
/VMMultimédias
                          /VMMultimediasCommuns
                                                                     /VMDocumentsPerso/VMSauvegardesDocumentsEric
                                                                     /VMDocumentsPerso//VMSauvegardesDocumentsFanou
                                                                     /VMPhotos (stock)
                                                                     /VMImages (stock) 
                                                                     /VMMusiques (stock)
                                                                     /VMDocumentsPartages (stock)
                                                                     /VMSauvegardesDocumentsPartages

sur le 8T /media/kubu/JEUX8T/
/SAUVEGARDES/SPhotos
                            /SImages
                            /SMusiques
                            /SauvegardesDocumentsPartages

Est ce clair pour vous ??

non ce n'est pas clair pour moi, et si je voyais ça sur une infra avec laquelle je dois bosser je m'arracherais les yeux de la tête.

j'ai du mal à voir le rapport entre cette "structure" et ce qui avait été planifié au départ qui était plutôt simple :
des répertoires partagés entre les utilisateurs sur la box et des sauvegardes de ceux-ci, plus des répertoires persos des utilisateurs, sur le disque dur.
ici selon les nomenclatures on trouve des sauvegardes partout (et même des sauvegardes-partages partout !??), des noms d'utilisateurs perdus dans des sous-sous-répertoires et des kilometres de verbage inutile, redondant, voire incohérent.

je ne sais pas ce qu'en pensent les autres mais à ce stade perso je conseillerais de faire table rase.

je pense que tu t'es perdu en cours de route, ce qui peut s'expliquer par exemple par le fait que quand on te dit initialement que ça ne sert à rien que des sauvegardes soient accessibles en permanence, tu penses qu'on veut contrarier tes projets; alors que c'est juste une mauvaise conception de la gestion des ressources et du rôle de chaque élément qui te fait insister sur la viabilité de ta méthode. c'est ce qui te fait dès le début de ta mise en place sauvegarder une sauvegarde sur elle-même.
dès ce moment on a un problème d'incompréhension fondamental à adresser, sur ce qu'est une sauvegarde par ex., ainsi qu'un problème de confiance par rapport à ce qu'on te dit (en tout cas c'est mon impression personnelle).

Hors ligne

#312 Le 24/06/2025, à 15:35

steph810

Re : script d’automatisation sauvegardes

eric63 a écrit :

j’ai oublié aussi une question sur le dossier documents fanou en local et sur le dossier documents sur le portable qui appartiennent à la même personne même uid
l’un (portable) à des sous dossiers l’autre (locale) n’en a pas . Comment mutualiser les 2 ?? ce qui est ajouté dans l’un apparait dans l’autre

Le paquet unison fait très bien cela il est conçu pour.

sudo apt show unison

je vien de relire ton message.

eric63 a écrit :

dans ton script config.sh et dans sauvegarde.sh les conditions adéquates à HORAIRE_RETENTION

RETENTION=vous indiquez ici un nombre qui correspond au nombre de jours pendant lesquels vous voulez garder ces sauvegardes, Une fois ce nombre de jours dépassé, le script de sauvegarde va automatiquement supprimer les anciennes sauvegardes incrémentales qui sont plus vieilles que ce délai.
Si vous mettez 0, cela va désactiver la suppression. vous pouvez ainsi choisir de purger certaines catégories de sauvegardes et d'en conserver d'autres indéfiniment

Dernière modification par steph810 (Le 24/06/2025, à 15:58)

Hors ligne

#313 Le 24/06/2025, à 23:12

krodelabestiole

Re : script d’automatisation sauvegardes

contrairement au SSD de ta box, le disque dur externe est lent.
même si il est déjà connecté il est probable que l'ouverture de n'importe quel fichier prenne quelques secondes. si son contenu n'est pas indexé (et ce ne sera jamais le cas par défaut), les recherches sur son contenu prennent une éternité comparées à la VM, pareil pour le temps de montage, qui va juste ralentir le démarrage si il est systématique avec fstab (je t'avoue que je n'ai pas tout suivi à ce sujet).
ce disque dur doit être réservé à de la sauvegarde froide, et surtout pas dédié à un travail ordinaire.

dans ces conditions, son contenu devrait ressembler à ça :
/backup
et quand tu le montes sur un ordi "client" ou depuis la VM, depuis lesquels tu effectues les sauvegardes, ça ressemblerait à
/mnt/8T
contenant ce répertoire backup :
/mnt/8T/backup

côté VM, l'organisation peut dépendre du protocole choisi (SMB, NFS, SSH, WebDAV...).
vu que tu es parti sur SSH / SFTP, on devrait utiliser les identifiants UNIX et l'architecture FHS, donc rester sur ce que propose linux par défaut :
- /home/$USER avec tous les utilisateurs ($USER) concernés, en conservant les permissions par défaut.
et pour les répertoires communs entre les utilisateurs sauf erreur la FHS ne prévoit rien de bien strict.
perso je choisirais :
- /srv/share
appartenant au groupe share (partage en anglais) créé pour l'occasion, dont les utilisateurs concernés sont membres.
avec les permissions 664 pour les fichiers et 775 pour les répertoires (pour que les membres du groupe share aient accès en écriture, quel que soit le propriétaire des fichiers), et umask correspondant (tu as peut-être déjà fait quelque chose d'équivalent il me semble, je ne me rappelle plus).

ensuite tu peux choisir l'outil de ton choix pour sauvegarder les données de la VM. si cet outil utilise encore une arborescence par système de fichiers *, celle-ci devrait ressembler à ça :
- pour les backups des /home de la VM
/mnt/8T/backup/srv/$USER (pour chaque $USER évidemment, à remplacer par les noms d'utilisateur - pas besoin de répéter home)
- et pour le backup du /srv/share de la VM
/mnt/8T/backup/srv/share
comme ça tu sais où trouver les backups du répertoire de partage du serveur sur le disque de 8T !
là où on monte les stockages -> disque dur de 8 To -> sauvegardes -> serveur -> partage commun

et pour les sauvegardes des ordis individuels :
/mnt/8T/backup/home/$USER
(note dans backup/ la différence entre srv/$USER et home/$USER)

ensuite ce que les utilisateurs mettent dans leur répertoire /home (image, vidéo, musique, documents, etc.) ne te regarde même pas ! (sauf le tien et le commun évidemment, mais il n'y a rien à prendre en charge individuellement !)

* ... et sachant qu'avec la plupart des logiciels de sauvegardes, contrairement aux bricolages bash, tu peux en fait tout mettre en vrac dans /mnt/8T/backup/, les logiciels savent parfaitement gérer et isoler les arborescences en fonction des noms des machines sources, sans avoir besoin de les reproduire en système de fichiers.


si quelque chose dans ce que je viens de décrire te semble obscur ou incohérent, n'hésite pas à demander, c'est important que tout ça soit très clair en amont, avant de se lancer dans la rédaction de scripts ou l'installation et la configuration de logiciels.

Hors ligne

#314 Le 24/06/2025, à 23:28

krodelabestiole

Re : script d’automatisation sauvegardes

et si tu as besoin de plus de finesse et de granularité dans les partages et les permissions, de groupes, et de partage de fichiers et sous-répertoires spécifiques différents du répertoire parent, malheureusement tu ne t'en sortiras pas avec SFTP et les permissions UNIX.
tu peux passer les deux prochaines années à te prendre la tête avec des ACL partagées entre plusieurs machines du réseau local, ça m'étonnerait que ça change quoi que ce soit (et bonjour la migraine pour migrer ou accueillir une nouvelle machine).

dans ce cas, la solution est à chercher du côté de nextcloud. tu y gagnes d'ailleurs le versioning au passage.
je ne prétends pas que ce soit simple à mettre en place, mais je ne vois aucune solution moins compliquée qui offre une telle souplesse (et perso c'est ce que je recommande en standard pour la plupart des besoins en travail collaboratif, mais pas forcément en laissant les non-informaticiens déployer eux-mêmes le serveur).

donc si tu ne te sens pas de déployer nextcloud, mieux vaut essayer de se débrouiller avec ce que permet le serveur qui fournit un répertoire individuel à chaque utilisateur et un répertoire commun (et allez, éventuellement un ou deux autres partages sous /srv entre deux utilisateurs au lieu de 3 par ex., mais sans que ça tourne à la fête foraine dans /srv).

Hors ligne

#315 Le 25/06/2025, à 07:48

O_20_100_O

Re : script d’automatisation sauvegardes

Bonjour krodelabestiole,
Merci pour tes contributions à ce sujet, elles posent bien les choses.

et pour les répertoires communs entre les utilisateurs sauf erreur la FHS ne prévoit rien de bien strict.
perso je choisirais :
- /srv/share
appartenant au groupe share (partage en anglais) créé pour l'occasion, dont les utilisateurs concernés sont membres.
avec les permissions 664 pour les fichiers et 775 pour les répertoires (pour que les membres du groupe share aient accès en écriture, quel que soit le propriétaire des fichiers), et umask correspondant (tu as peut-être déjà fait quelque chose d'équivalent il me semble, je ne me rappelle plus).

Sur la base, d'échanges vieux de plusieurs mois, et auxquels tu as participé, eric63 a créé sur la VM un utilisateur "commun". Ses répertoires contiennent tous les fichiers communs à partager. Ils sont montés en SSHFS à l'ouverture de leur session sur les autres PC. Quelle est ton opinion sur cette méthode ?

Hors ligne

#316 Le 25/06/2025, à 13:19

krodelabestiole

Re : script d’automatisation sauvegardes

je pense qu'on a dû foncer tête baissée - moi compris - dans le X d'un problème XY, parce qu'un utilisateur commun, ça n'existe pas.
ceci dit si on a aussi créé un groupe commun et que c'est ce qu'on utilise en pratique,  pourquoi pas...
ceci dit encore, pas besoin de créer de clé SSH et d'accès pour cet utilisateur (ni-même qu'il existe, donc) : si les permissions sont correctes, n'importe quel utilisateur membre du groupe commun devrait dans ce cas avoir directement accès au répertoire en question (en SSH/SFTP).

Hors ligne

#317 Le 28/06/2025, à 08:43

O_20_100_O

Re : script d’automatisation sauvegardes

iznobe a écrit :

Ou encore mieux , ( ce que je disais des le départ ) , se servir tout les 2 , du disque dur en réseau via la VM et la BOX comme un NAS , ( puisque c' en est un ... en fin de compte )

@eric63
Puisque tu ne parviens pas de façon simple à faire "comme un NAS" en partant d'une installation de Debian 12, et que cela ouvre la voie à trop de questions, de solutions complexes et de "je t'en rajoute une couche pour faire bonne mesure", pourquoi ne pas installer directement un NAS ?

Pour cela, il y a, entre autres, l'iso d'Openmediavault que tu pourrais installer en VM sur la Freebox.
Regarde bien la documentation avant, tu verras que la gestion se fait en mode graphique par un interface web.
Il faut mettre l'OS sur une petite partition dédiée et en avoir une autre pour y placer les partages sur le reste du disque.

https://www.openmediavault.org/
https://forum.openmediavault.org/index. … e-install/

Hors ligne

#318 Le 28/06/2025, à 11:36

eric63

Re : script d’automatisation sauvegardes

#!/bin/bash
#
# Fichier de configuration pour le script de sauvegarde 'sauvegarde.sh'
# Auteur : enRIKO ^^ =D
# Date : 2025-06-23
# Version : 2.3 (Améliorations de la gestion de la rétention et portabilité)
# Description : Configuration centralisée pour les sauvegardes avec nouvelle structure :
#               - Dossiers principaux pour les copies courantes
#               - Dossiers incrementaux séparés pour l'historique
#               - Dossiers spéciaux pour les sauvegardes sur la VM ajoutés

### SECTION 1 - OPTIONS GLOBALES DU SCRIPT ###
DEFAULT_NOM_SCRIPT="sauvegarde_script" # Nom de base pour le fichier de verrouillage (évite les conflits)

# Adresse email pour recevoir les rapports de sauvegarde. Laisser vide pour désactiver.
EMAIL_NOTIFICATION=""

# Espace disque minimum requis sur la destination (en Go)
ESPACE_DISQUE_MIN_GO=5

# Options rsync
DEFAULT_RSYNC_OPTIONS="-avh --exclude '*/.Trash-*' --exclude '*/.thumbnails' --exclude '*.bak' --exclude '*~' --exclude 'Thumbs.db' --exclude '.DS_Store' --exclude 'lost+found'"


# Mode debug (0=désactivé, 1=activé)
# Activez-le (1) si vous rencontrez des problèmes pour avoir des logs détaillés.
DEFAULT_MODE_DEBOGAGE=1

# Type de connexion pour les sauvegardes distantes :
# 0 = SSHFS (montage du système de fichiers distant - plus robuste pour rsync)
# 1 = SSH Direct (rsync via SSH - plus simple à configurer, potentiellement plus lent sur beaucoup de petits fichiers)
DEFAULT_TYPE_CONNEXION_DISTANTE=0

# Désactivation des journaux (0=activés, 1=désactivés)
# Mettez à 1 pour désactiver la journalisation des opérations. Non recommandé en production.
DEFAULT_JOURNAUX_DESACTIVES=0

# Sélection des sauvegardes à exécuter (combinaison binaire)
# Chaque chiffre représente une sauvegarde spécifique (voir sauvegarde.sh pour la correspondance).
# Exemple : "1 2" pour DocumentsPC Eric et DocumentsPortable Fanou. "ALL" pour toutes les sauvegardes.
# 1=DocsPC Eric ; 2=DocsPortable Fanou ; 4=Docs Communs ; 8=photosVM ; 16=imagesVM ; 32=musiquesVM ;64=serveur distant
DEFAULT_SELECTIONS_SAUVEGARDES="1 2 " # 1 2 4 8 16 32 64 128 ALL" automatique
##
#faire une selection manuelle kdialog --list

# Mode de sauvegarde (0=complète, 1=incrémentale)
# Mettre à 1 pour activer les sauvegardes incrémentales par défaut (recommandé pour --link-dest).
DEFAULT_MODE_INCREMENTAL=1

### SECTION 2 - INFORMATIONS D'ACCÈS (SSH/VM/Portable/Serveur) ###
# Ces informations sont pour se connecter aux machines distantes.

# Accès à la VM (Virtual Machine)
userVM="Multimedias"      # Nom d'utilisateur SSH sur la VM
ipVM="192.168.1.128"   # Adresse IP de la VM
portVM="22"           # Port SSH de la VM

# Accès au Portable
userPortable="fanou" # Nom d'utilisateur SSH sur le portable
userPortablePm="home/kubu/sftp:⁄⁄192.168.1.60⁄home⁄fanou⁄Documents.desktop"
ipPortable="192.168.1.60"    # Adresse IP du portable
portPortable="22"            # Port SSH du portable
pathPortable="/home/fanou/Documents" # Chemin de base des données sur le portable

# Accès au Serveur
userServeur="devUser" # Nom d'utilisateur SSH sur le serveur
ipServeur="192.168.1.100"   # Adresse IP du serveur
portServeur="22"           # Port SSH du serveur

### SECTION 3 - CHEMINS DES SAUVEGARDES LOCALES ET DISTANTES ###

# Dossier de base pour toutes les sauvegardes sur le disque externe (destination principale)
# C'est le point de montage de votre disque de sauvegarde externe.
# VÉRIFIEZ ET ADAPTEZ CE CHEMIN SI NÉCESSAIRE.
DEST_BASE_SAUVEGARDES="/media/kubu/JEUX8T/SAUVEGARDES"           #"/mnt/usb-Hdd/Sauvegardes"
DEST_BASE_SAUVEGARDES_SPECIALES="/home/kubu/VMMultimedias"           #"/mnt/usb-Hdd/Sauvegardes" sauvegardes spéciales destiné à recupérer les documents toutes les XX minutes sur la VM
# UUID du disque de sauvegarde cible (pour vérification de sécurité)
# À récupérer avec 'sudo blkid' ou 'lsblk -f' sur votre système.
UUID_DISQUE_SAUVEGARDE="35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa" # UUID fourni

# --- Sources locales sur cette machine (à adapter) ---
# REMPLACEZ '/home/kubu/...' par les chemins réels de vos dossiers si différents.
SOURCE_LOCAL_DOCS_ERIC="/home/kubu/Documents"
#SOURCE_LOCAL_DOCS_FANOU="/home/fanou/Documents"        # celui ci est vide et en conflit avec le dossier /home/fanou/Documents du portable

# --- Sources distantes sur les autres machines (à adapter) ---
# Ce sont les chemins sur les machines VM, Portable, Serveur.
# VÉRIFIEZ ET ADAPTEZ CES CHEMINS EN FONCTION DE VOS CONFIGURATIONS.
#SOURCE_DIST_DOCS_PORTABLE2="/home/$userPortable2/Documents"
SOURCE_DIST_DOCS_PORTABLE="/home/kubu/$userPortablePm"
SOURCE_DIST_DOCS_COMMUNS_VM="/home/$userVM/DocsCommunsVM"     #ajouté
SOURCE_DIST_PHOTOS_VM="/home/$userVM/PhotosVM"
SOURCE_DIST_IMAGES_VM="/home/$userVM/ImagesVM"                 #ajouté
SOURCE_DIST_MUSIQUE_VM="/home/$userVM/MusiquesVM"              #ajouté
SOURCE_DIST_PROJETS_SERVEUR="/var/www/projets"

### SECTION 4 - CHEMINS DES DESTINATIONS DES SAUVEGARDES PRINCIPALES (NON INCREMENTALES) ###
# Ces chemins sont les destinations pour les sauvegardes complètes (mode 0)
# ou les dernières versions synchronisées (mode 1, après la création des liens).
# Ils sont situés directement sous DEST_BASE_SAUVEGARDES.

DEST_MAIN_DOCS_ERIC="${DEST_BASE_SAUVEGARDES}/SDocumentsPcEric/"
#DEST_MAIN_DOCS_FANOU="${DEST_BASE_SAUVEGARDES}/SDocumentsFanou/"
DEST_MAIN_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES}/SDocumentsPortableFanou/"
#DEST_MAIN_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES}/SDocumentsPortableXxx/"
DEST_MAIN_DOCS_COMMUNS="${DEST_BASE_SAUVEGARDES}/SDocumentsCommunsVM/"
DEST_MAIN_PHOTOS="${DEST_BASE_SAUVEGARDES}/SPhotosVM/"
DEST_MAIN_IMAGES="${DEST_BASE_SAUVEGARDES}/SImagesVM/"
DEST_MAIN_MUSIQUES="${DEST_BASE_SAUVEGARDES}/SMusiquesVM/"
DEST_MAIN_PROJETS="${DEST_BASE_SAUVEGARDES}/SProjetsServeur/"

### SECTION 4.1 - CHEMINS DES DESTINATIONS DES SAUVEGARDES SPECIALES (NON INCREMENTALES) ###      pour toujours avoir une sauvegarde accessible depuis la VM en timing court (pas résolu)
DEST_SPE_DOCS_ERIC="${DEST_BASE_SAUVEGARDES_SPECIALES}/SDocumentsPcEric/"
###DEST_MAIN_DOCS_FANOU="${DEST_BASE_SAUVEGARDES_SPECIALES}/SDocumentsFanou/"        # question est ce que Documentfanou et documentportable compatible au mix ???
DEST_SPE_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES_SPECIALES}/SDocumentsPortableFanou/"   # question est ce que Documentfanou et documentportable compatible au mix ???
###DEST_MAIN_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES_SPECIALES}/SDocumentsPortableXxx/"   # question est ce que DocumentXxx et documentportable compatible au mix ???
DEST_SPE_DOCS_COMMUNS="${DEST_BASE_SAUVEGARDES_SPECIALES}/SDocumentsCommunsVM/"

### SECTION 5 - CHEMINS  DES DESTINATIONS DES SAUVEGARDES PRINCIPALES INCREMENTALES (DATÉES) ###
# Ces chemins sont les bases pour les sauvegardes incrémentales datées (ex: /mnt/usb-Hdd/Sauvegardes/incremental-DocumentsEric/2025-06-23/).
# Ils sont situés directement sous DEST_BASE_SAUVEGARDES.
DEST_INCR_BASE_DOCS_ERIC="${DEST_BASE_SAUVEGARDES}/incremental-SDocumentsPcEric/"
#DEST_INCR_BASE_DOCS_FANOU="${DEST_BASE_SAUVEGARDES}/incremental-SDocumentsFanou/"
DEST_INCR_BASE_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES}/incremental-SDocumentsPortableFanou/"
#DEST_INCR_BASE_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES}/incremental-DocumentsPortableXxx/"
DEST_INCR_BASE_DOCS_COMMUNS="${DEST_BASE_SAUVEGARDES}/incremental-SDocumentsCommunsVM/"
DEST_INCR_BASE_PHOTOS="${DEST_BASE_SAUVEGARDES}/incremental-SPhotosVM/"
DEST_INCR_BASE_IMAGES="${DEST_BASE_SAUVEGARDES}/incremental-SImagesVM/"
DEST_INCR_BASE_MUSIQUES="${DEST_BASE_SAUVEGARDES}/incremental-SMusiquesVM/"
DEST_INCR_BASE_PROJETS="${DEST_BASE_SAUVEGARDES}/incremental-SProjetsServeurVM/"

### SECTION 5.1 - CHEMINS DES DESTINATIONS DES SAUVEGARDES SPECIALES INCREMENTALES (DATÉES) ###  pour toujours avoir une sauvegarde accessible depuis la VM en timing court (pas résolu)
DEST_INCR_SPE_DOCS_ERIC="${DEST_BASE_SAUVEGARDES_SPECIALES}/incremental-SDocumentsPcEric/"
###DEST_MAIN_DOCS_FANOU="${DEST_BASE_SAUVEGARDES_DOCS}/incremental-SDocumentsFanou/"
DEST_INCR_SPE_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES_SPECIALES}/incremental-SDocumentsPortableFanou/"
###DEST_MAIN_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES_DOCS}/incremental-SDocumentsPortableXxx/"   # question est ce que DocumentfXxx et documentportableXxx compatible au mix ???
DEST_INCR_SPE_DOCS_COMMUNS="${DEST_BASE_SAUVEGARDES_SPECIALES}/incremental-DocumentsCommunsVM/"


### SECTION 6 - RÉTENTION DES SAUVEGARDES INCRÉMENTALES (en jours) ###
# Définissez ici le nombre de jours de rétention pour chaque type de sauvegarde.
# Mettre à 0 pour désactiver le nettoyage automatique pour cette catégorie.

# Rétention pour Documents Eric
JOURS_RETENTION_DOCS_ERIC_QUOTIDIEN=7       # Nombre de jours pour les sauvegardes quotidiennes
JOURS_RETENTION_DOCS_ERIC_HEBDO=4           # Nombre de semaines pour les sauvegardes hebdomadaires (Lundi)
JOURS_RETENTION_DOCS_ERIC_MENSUEL=12        # Nombre de mois pour les sauvegardes mensuelles (1er du mois)

# Rétention pour Documents Fanou
JOURS_RETENTION_DOCS_FANOU_QUOTIDIEN=7
JOURS_RETENTION_DOCS_FANOU_HEBDO=4
JOURS_RETENTION_DOCS_FANOU_MENSUEL=12

# Rétention pour Documents Portable
JOURS_RETENTION_DOCS_PORTABLE_QUOTIDIEN=7
JOURS_RETENTION_DOCS_PORTABLE_HEBDO=4
JOURS_RETENTION_DOCS_PORTABLE_MENSUEL=12

# Rétention pour Documents Communs
JOURS_RETENTION_DOCS_COMMUNS_QUOTIDIEN=7
JOURS_RETENTION_DOCS_COMMUNS_HEBDO=4
JOURS_RETENTION_DOCS_COMMUNS_MENSUEL=12

# Rétention pour Projets Serveur
JOURS_RETENTION_PROJETS_QUOTIDIEN=14
JOURS_RETENTION_PROJETS_HEBDO=8
JOURS_RETENTION_PROJETS_MENSUEL=24

# Rétention pour Photos VM
JOURS_RETENTION_PHOTOS_QUOTIDIEN=7
JOURS_RETENTION_PHOTOS_HEBDO=4
JOURS_RETENTION_PHOTOS_MENSUEL=12

# Rétention pour Images VM
JOURS_RETENTION_IMAGES_QUOTIDIEN=7
JOURS_RETENTION_IMAGES_HEBDO=4
JOURS_RETENTION_IMAGES_MENSUEL=12

# Rétention pour Musiques VM
JOURS_RETENTION_MUSIQUES_QUOTIDIEN=7
JOURS_RETENTION_MUSIQUES_HEBDO=4
JOURS_RETENTION_MUSIQUES_MENSUEL=12


### SECTION 7 - POINTS DE MONTAGE SSHFS ###

# Dossier de base pour les montages SSHFS temporaires sur cette machine.
BASE_MONTAGE_SSHFS="/tmp/sshfs_mounts"

# Points de montage locaux temporaires pour SSHFS. Ils seront créés/utilisés/démontés par le script.
MONTAGE_SSHFS_PHOTOS="${BASE_MONTAGE_SSHFS}/Photos_vm"
MONTAGE_SSHFS_IMAGES="${BASE_MONTAGE_SSHFS}/Images_vm" # Ajouté comme exemple si besoin
MONTAGE_SSHFS_MUSIQUES="${BASE_MONTAGE_SSHFS}/Musiques_vm" # Ajouté comme exemple si besoin
MONTAGE_SSHFS_DOCS_ERIC="${BASE_MONTAGE_SSHFS}/DocumentsEric_vm"
MONTAGE_SSHFS_DOCS_FANOU="${BASE_MONTAGE_SSHFS}/DocumentsFanou_vm"
MONTAGE_SSHFS_DOCS_PORTABLE="${BASE_MONTAGE_SSHFS}/DocumentsPortableFanou_vm"
MONTAGE_SSHFS_DOCS_PORTABLE="${BASE_MONTAGE_SSHFS}/DocumentsPortableXxx_vm"
MONTAGE_SSHFS_DOCS_COMMUN="${BASE_MONTAGE_SSHFS}/DocumentsCommuns_vm"
MONTAGE_SSHFS_PROJETS="${BASE_MONTAGE_SSHFS}/DocumentsProjetsServeur_vm"

### SECTION 8 - FICHIERS DE FONCTIONS EXTERNES ###
# Chemin vers le script contenant les fonctions de gestion d'erreur et de journalisation.
# Le chemin est construit dynamiquement basé sur l'emplacement du script principal.
CHEMIN_FONCTIONS_ERREUR="${SCRIPT_DIR}/fonctions_erreur.sh"

P.S. rectification des variables spéciales
rectification SOURCE_DIST_DOCS_PORTABLE="/home/kubu/$userPortablePm"
rectification point de montage en userPortablePm="home/kubu/PortableFanou"et SOURCE_DIST_DOCS_PORTABLE
rectification point de montage en userPortablePm="home/kubu/sftp:⁄⁄192.168.1.60⁄home⁄fanou⁄Documents.desktop"
et mise en # du fstab concernant le portableFanou

Il me reste à adapter le fichier sauvegarde.sh avec les nouvelles variables spéciales que j’ai ajoutées
partie 1 du script sauvegarde.sh modifié (lignes #AJOUT)

 #!/bin/bash
export LC_ALL=C
#===============================================================
# Sauvegarde des données
# Auteur : enRIKO (modifié par geole, iznobe, Watael, steph810 pour production)
# Date : 2025-06-23
# Version : 6.0 Beta 
# Description : Script de sauvegarde incrémentale des fichiers
#               personnels et de configuration sur un disque externe,
#               utilisant la méthode --link-dest de rsync pour optimiser l'espace.
#===============================================================

# --- PARAMÈTRES ET OPTIONS DU SHELL ---
set -o errexit   # Quitte le script si une commande échoue
set -o nounset   # Traite les variables non définies comme des erreurs (TRÈS IMPORTANT pour ce script)
set -o pipefail  # Détecte les erreurs dans les pipelines (ex: cmd1 | cmd2)

# --- VARIABLES GLOBALES DE BASE ---
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"

# --- INTÉGRATION DU FICHIER DE CONFIGURATION (config.sh) ---
# Vérifie l'existence et source le fichier de configuration.
if [ -f "$SCRIPT_DIR/config.sh" ]; then
    source "$SCRIPT_DIR/config.sh"
else
    echo "ERREUR CRITIQUE [$(date '+%Y-%m-%d %H:%M:%S')]: Le fichier de configuration '$SCRIPT_DIR/config.sh' est introuvable ou inaccessible." >&2
    echo "IMPOSSIBLE DE CHARGER LA CONFIGURATION. Arret du script." >&2
    exit 1
fi

# Validation variables critiques
validate_critical_vars

# Vérification des dépendances
check_dependencies

# --- INTÉGRATION DU FICHIER DE DIAGNOSTIC (fonctions_erreur.sh) ---
# Le chemin est maintenant défini dans config.sh et est relatif.
if [ -f "$CHEMIN_FONCTIONS_ERREUR" ]; then
    source "$CHEMIN_FONCTIONS_ERREUR"
    log_info "Fichier de fonctions d'erreur '$CHEMIN_FONCTIONS_ERREUR' source avec succes."
else
    echo "ERREUR CRITIQUE [$(date '+%Y-%m-%d %H:%M:%S')]: Le fichier de fonctions d'erreur '$CHEMIN_FONCTIONS_ERREUR' est introuvable." >&2
    echo "Impossible de charger les fonctions de diagnostic. Arret du script." >&2
    exit 1
fi

# --- DÉFINITION DES FONCTIONS DE JOURNALISATION ---
# Ces fonctions utilisent log_message pour formater la sortie des logs.
log_message() {
    local type="$1"
    local message="$2"
    local timestamp
    timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    if [ "$DEFAULT_JOURNAUX_DESACTIVES" -eq 0 ]; then
        case "$type" in
            INFO) echo "[$timestamp] [INFO] $message" ;;
            DEBUG) [ "$DEFAULT_MODE_DEBOGAGE" -eq 1 ] && echo "[$timestamp] [DEBUG] $message" ;;
            SUCCESS) echo "[$timestamp] [SUCCES] $message" ;;
            WARNING) echo "[$timestamp] [ATTENTION] $message" >&2 ;;
            ERROR) echo "[$timestamp] [ERREUR] $message" >&2 ;;
        esac
    fi
}
log_info() { log_message INFO "$1"; }
log_debug() { log_message DEBUG "$1"; }
log_success() { log_message SUCCESS "$1"; }
log_error() { log_message ERROR "$1"; }
log_warning() { log_message WARNING "$1"; }


log_info "Fichier de configuration '$SCRIPT_DIR/config.sh' source avec succes."

# --- VERROUILLAGE DU SCRIPT (Méthode flock) ---
# Empêche l'exécution simultanée de plusieurs instances du script.
LOCK_DIR="/var/lock"
if ! mkdir -p "$LOCK_DIR"; then
    log_error "Impossible de creer ou acceder au repertoire de verrouillage : $LOCK_DIR. Verifiez les permissions."
    exit 1
fi

LOCK_FILE="$LOCK_DIR/${DEFAULT_NOM_SCRIPT:-sauvegarde}.lock"

# Tente d'acquérir un verrou non-bloquant sur le fichier.
# Le descripteur de fichier 200 est arbitrairement choisi.
exec 200>"$LOCK_FILE" || { log_error "Impossible d'ouvrir le fichier de verrouillage: $LOCK_FILE. Verifiez les permissions ou l'integrité du systeme de fichiers."; exit 1; }

if ! flock -n 200; then
    log_error "Une autre instance du script de sauvegarde est deja en cours d'execution. Abandon."
    exit 1
fi
log_success "Verrou acquis sur le fichier: $LOCK_FILE"

# --- FONCTIONS GÉNÉRALES ---

# Check des dependences
check_dependencies() {
    local deps=("rsync" "flock" "sshfs")
    for dep in "${deps[@]}"; do
        if ! command -v "$dep" >/dev/null 2>&1; then
            echo "ERREUR CRITIQUE : Dépendance manquante : $dep" >&2
            exit 1
        fi
    done
}
# Contrôle des variables CRITIQUE
validate_critical_vars() {
    local missing=0
    
    [[ -n "${UUID_DISQUE_SAUVEGARDE}" ]] || { echo "Erreur : UUID_DISQUE_SAUVEGARDE non défini."; exit 1; }
    [[ -n "${DEST_BASE_SAUVEGARDES}" ]] || { echo "Erreur : DEST_BASE_SAUVEGARDES non défini."; exit 1; }    
    [[ -n "${DEST_BASE_SAUVEGARDES_SPECIALES}" ]] || { echo "Erreur : DEST_BASE_SAUVEGARDES_SPECIALES non défini."; exit 1; }              #AJOUT
    [[ -n "${DEFAULT_RSYNC_OPTIONS}" ]] || { echo "Erreur : DEFAULT_RSYNC_OPTIONS non défini."; exit 1; }
    [[ -n "${DEFAULT_TYPE_CONNEXION_DISTANTE}" ]] || { echo "Erreur : DEFAULT_TYPE_CONNEXION_DISTANTE non défini."; exit 1; }
    [[ -n "${DEFAULT_SELECTIONS_SAUVEGARDES}" ]] || { echo "Erreur : DEFAULT_SELECTIONS_SAUVEGARDES non défini."; exit 1; }
    [[ -n "${MONTAGE_SSHFS_PHOTOS}" ]] || { echo "Erreur : MONTAGE_SSHFS_PHOTOS non défini."; exit 1; }
    [[ -n "${MONTAGE_SSHFS_IMAGES}" ]] || { echo "Erreur : MONTAGE_SSHFS_IMAGES non défini."; exit 1; }
    [[ -n "${MONTAGE_SSHFS_MUSIQUES}" ]] || { echo "Erreur : MONTAGE_SSHFS_MUSIQUES non défini."; exit 1; }
    [[ -n "${userVM}" ]] || { echo "Erreur : userVM non défini."; exit 1; }
    [[ -n "${ipVM}" ]] || { echo "Erreur : ipVM non défini."; exit 1; }
    [[ -n "${portVM}" ]] || { echo "Erreur : portVM non défini."; exit 1; }
    [[ -n "${userPortable}" ]] || { echo "Erreur : userPortable non défini."; exit 1; }
    [[ -n "${userPortablePm}" ]] || { echo "Erreur : userPortablePm non défini."; exit 1; }                                                                                                                 #AJOUT
    [[ -n "${ipPortable}" ]] || { echo "Erreur : ipPortable non défini."; exit 1; }
    [[ -n "${portPortable}" ]] || { echo "Erreur : portPortable non défini."; exit 1; }
    [[ -n "${pathPortable}" ]] || { echo "Erreur : pathPortable non défini."; exit 1; }
    [[ -n "${userServeur}" ]] || { echo "Erreur : userServeur non défini."; exit 1; }
    [[ -n "${ipServeur}" ]] || { echo "Erreur : ipServeur non défini."; exit 1; }
    [[ -n "${portServeur}" ]] || { echo "Erreur : portServeur non défini."; exit 1; }

    if [ $missing -eq 1 ]; then
        echo "ARRÊT du script à cause de variables manquantes."
        exit 1
    fi
}
# Fonction pour trouver le dernier répertoire de sauvegarde incremental pour --link-dest
# Cherche le répertoire daté le plus récent (AAAA-MM-JJ) dans un chemin de base donné.
# Arguments: $1 = chemin de base ou chercher (ex: /media/disk/SAUVEGARDES/incremental-DocumentsEric/)
find_latest_backup_dir() {
    local base_path_for_search="$1"
    local latest_backup_path=""
    local latest_timestamp=0

    log_debug "Recherche de la derniere sauvegarde dans: $base_path_for_search"

    if [[ ! -d "$base_path_for_search" ]]; then
        log_debug "Le repertoire de base de recherche '$base_path_for_search' n'existe pas ou n'est pas un repertoire."
        # Retourne silencieusement si le dossier de base n'existe pas, ce qui est normal pour la premiere sauvegarde.
        return
    fi

    # Trouver les sous-repertoires qui sont des dates AAAA-MM-JJ
    while IFS= read -r -d $'\0' dir; do
        local dir_name=$(basename "$dir")
        # Verifie si le nom du repertoire correspond au format AAAA-MM-JJ
        if [[ "$dir_name" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
            local dir_timestamp=$(date -d "$dir_name" +%s 2>/dev/null)
            if [[ "$dir_timestamp" -gt "$latest_timestamp" ]]; then
                latest_timestamp="$dir_timestamp"
                latest_backup_path="$dir"
            fi
        fi
    done < <(find "$base_path_for_search" -maxdepth 1 -type d -print0)

    if [[ -n "$latest_backup_path" ]]; then
        echo "$latest_backup_path"
        log_debug "Derniere sauvegarde trouvee: $latest_backup_path"
    else
        log_debug "Aucune sauvegarde precedente trouvee dans $base_path_for_search."
    fi
}

# Fonction pour verifier l'existence et les permissions d'ecriture d'un repertoire.
# Cree le repertoire s'il n'existe pas.
# Arguments: $1 = chemin du repertoire a verifier/creer
verifier_permissions_ecriture() {
    local dir="$1"
    if [[ ! -d "$dir" ]]; then
        log_debug "Creation du repertoire de destination: $dir"
        if ! mkdir -p "$dir"; then
            diagnostiquer_et_logger_erreur "Echec de la creation du repertoire de destination: $dir. Verifiez les permissions." $?
            return 1
        fi
    fi
    if [[ ! -w "$dir" ]]; then
        diagnostiquer_et_logger_erreur "Le repertoire de destination '$dir' n'est pas accessible en ecriture. Verifiez les permissions." 1
        return 1
    fi
    return 0
}

# Fonction pour verifier l'espace disque disponible.
# Arguments: $1 = chemin du point de montage, $2 = espace minimum requis en Go
verifier_espace_disque() {
    local path="$1"
    local min_gb="$2"
    local available_gb=$(df -BG "$path" | awk 'NR==2 {print $4}' | sed 's/G//')

    if [[ -z "$available_gb" ]]; then
        diagnostiquer_et_logger_erreur "Impossible de determiner l'espace disque disponible pour '$path'." 1
        return 1
    fi

    if (( available_gb < min_gb )); then
        diagnostiquer_et_logger_erreur "Espace disque insuffisant sur '$path'. Disponible: ${available_gb}Go, Requis: ${min_gb}Go." 1
        return 1
    fi
    log_debug "Espace disque disponible sur '$path' : ${available_gb}Go (Requis : ${min_gb}Go)."
    return 0
}  

2ème partie du script pour insérer les destinations des variables spéciales à transformer

# --- FONCTIONS DE SÉCURITÉ ET NOTIFICATION ---

# Verifie que le disque de destination est bien le bon en comparant son UUID.
verifier_disque_de_sauvegarde() {
    log_info "Verification du disque de destination..."
    # S'assure que la variable de destination est bien definie
    if [ -z "${DEST_BASE_SAUVEGARDES:-}" ]; then
        gerer_erreur_fatale "La variable DEST_BASE_SAUVEGARDES n'est pas definie dans config.sh. Le script ne peut pas continuer sans chemin de destination valide." 1
    fi

    # Recupere le nom du peripherique (ex: /dev/sdb1) correspondant au point de montage
    local device
    device=$(findmnt -n -o SOURCE --target "$DEST_BASE_SAUVEGARDES")
    
    if [ -z "$device" ]; then
        gerer_erreur_fatale "Le repertoire de destination '$DEST_BASE_SAUVEGARDES' n'est pas un point de montage valide." 1
        return 1
    fi

    # Recupere l'UUID du peripherique monte
    local current_uuid
    current_uuid=$(lsblk -n -o UUID "$device")

    if [ "$current_uuid" == "$UUID_DISQUE_SAUVEGARDE" ]; then
        log_success "Le disque de sauvegarde est correct (UUID: $current_uuid)."
        return 0
    else
        gerer_erreur_fatale "ERREUR DE SECURITE ! Le disque monte sur '$DEST_BASE_SAUVEGARDES' n'est PAS le bon disque de sauvegarde. UUID attendu: '$UUID_DISQUE_SAUVEGARDES', UUID trouve: '$current_uuid'. Arret immediat." 1
        return 1
    fi
}  

Dernière modification par eric63 (Le 29/06/2025, à 13:52)


Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR

Hors ligne

#319 Le 01/07/2025, à 09:38

eric63

Re : script d’automatisation sauvegardes

@steph810
je bute pour intégrer mes SAUVEGARDES_SPECIALES pour les intégrer dans le script sauvegarde.sh
pour les 3 dossiers
DocumentsEric
DocumentsPortableFanou
DocumentsCommuns
et les faire fonctionner pour avoir des sauvegardes supplémentaires dans la Vm en plus du  8T
j’ai déclaré mes variables dans config.sh
DEST_BASE_SAUVEGARDES_SPECIALES

 ### SECTION 4.1 - CHEMINS DES DESTINATIONS DES SAUVEGARDES SPECIALES (NON INCREMENTALES) ###      pour toujours avoir une sauvegarde accessible depuis la VM en timing court (pas résolu)
DEST_SPE_DOCS_ERIC="${DEST_BASE_SAUVEGARDES_SPECIALES}/SDocumentsPcEric/"
###DEST_MAIN_DOCS_FANOU="${DEST_BASE_SAUVEGARDES_SPECIALES}/SDocumentsFanou/"        # question est ce que Documentfanou et documentportable compatible au mix ???
DEST_SPE_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES_SPECIALES}/SDocumentsPortableFanou/"   # question est ce que Documentfanou et documentportable compatible au mix ???
###DEST_MAIN_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES_SPECIALES}/SDocumentsPortableXxx/"   # question est ce que DocumentXxx et documentportable compatible au mix ???
DEST_SPE_DOCS_COMMUNS="${DEST_BASE_SAUVEGARDES_SPECIALES}/SDocumentsCommunsVM/"
 
### SECTION 5.1 - CHEMINS DES DESTINATIONS DES SAUVEGARDES SPECIALES INCREMENTALES (DATÉES) ###  pour toujours avoir une sauvegarde accessible depuis la VM en timing court (pas résolu)
DEST_INCR_SPE_DOCS_ERIC="${DEST_BASE_SAUVEGARDES_SPECIALES}/incremental-SDocumentsPcEric/"
###DEST_MAIN_DOCS_FANOU="${DEST_BASE_SAUVEGARDES_DOCS}/incremental-SDocumentsFanou/"
DEST_INCR_SPE_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES_SPECIALES}/incremental-SDocumentsPortableFanou/"
###DEST_MAIN_DOCS_PORTABLE="${DEST_BASE_SAUVEGARDES_DOCS}/incremental-SDocumentsPortableXxx/"   # question est ce que DocumentfXxx et documentportableXxx compatible au mix ???
DEST_INCR_SPE_DOCS_COMMUNS="${DEST_BASE_SAUVEGARDES_SPECIALES}/incremental-DocumentsCommunsVM/"
  

je pense que pour ces parties là c’est ok dans config.sh

Mon intention est de pouvoir faire en plus des sauvegardes normales une sauvegarde incrementielle sur la VM qui est accessible H24
que le disque 8T soit allumé ou pas
en tenant compte de la disponibilité du portable
et avec un timing des incrementielles plus court qu’une journée (x fois par heure)
ou autres solutions qui permettent de faire cela (j’ai regardé du coté d’unisson heu faudra que je m’y penche plus pour comprendre)

rsnapshot me semble plus judicieux et accessible
https://doc.ubuntu-fr.org/rsnapshot#test

Dernière modification par eric63 (Le 01/07/2025, à 11:05)


Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR

Hors ligne

#320 Le 01/07/2025, à 11:30

krodelabestiole

Re : script d’automatisation sauvegardes

O_20_100_O a écrit :

pourquoi ne pas installer directement un NAS ?

Pour cela, il y a, entre autres, l'iso d'Openmediavault que tu pourrais installer en VM sur la Freebox.

oui clairement !

on avait tenté un comparatif des distributions consacrées à l'auto-hébergement :
https://forum.ubuntu-fr.org/viewtopic.php?id=2082811
https://forum.ubuntu-fr.org/viewtopic.php?id=2082838
la plupart proposent l'installation de nextcloud (et jellyfin, et d'autres excellentes applications web) en un clic ou deux.

personnellement je n'ai pas d'expérience avec ces distros, mais c'est la direction qu'il serait le plus logique et sensé de prendre si on souhaite se lancer dans le domaine (même pour un intranet à usage personnel).

Hors ligne

#321 Le 01/07/2025, à 11:45

O_20_100_O

Re : script d’automatisation sauvegardes

je bute pour intégrer mes SAUVEGARDES_SPECIALES
...
DocumentsCommuns
...  dans la Vm en plus du  8T

Tu veux copier dans la VM ce qui s'y trouve déjà ? Ou c'est utile parce que les fichiers communs ne sont plus dans la VM ?

Hors ligne

#322 Le 01/07/2025, à 13:45

steph810

Re : script d’automatisation sauvegardes

Bonjour,
je pense le mieux le mieux serais d'utiliser une interfaces web mini-server apache en local ou l'ajouts de nouvelle sauvegardes. Quelques jours je suis dessus bientôt finalisé. Ca evitera de faire des erreurs et de ne plus touché au code principal qui est actuellement fonctionnel.

Dernière modification par steph810 (Le 01/07/2025, à 13:47)

Hors ligne

#323 Le 01/07/2025, à 20:19

eric63

Re : script d’automatisation sauvegardes

Tu veux copier dans la VM ce qui s'y trouve déjà ? Ou c'est utile parce que les fichiers communs ne sont plus dans la VM ?

pour les dossiers spéciaux
DocumentsPcEric; DocumentsPortableFanou ;DocumentsCommuns
je veux avoir une sauvegarde de ces 3 dossiers aussi dans la VM
pour l’instant c’est juste que toutes les sauvegardes se font sur le disque 8T avec le script de steph810 et
si ce disque n’est pas allumé pour une raison (pc pas utilisé) ou une autre (pc allumé mais disque éteint trop loin , flemmalgie aigüe du coté droit  smile )
je veux aussi pouvoir faire une sauvegarde de ces 3 dossiers dans la VM pour d’abord avoir une incrementielle horaire plutôt que quotidienne
et oui DocumentsCommuns aurait un dossier d’utilisation et un dossier de sauvegarde dans la Vm pour y avoir accès quand on veut.


Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR

Hors ligne

#324 Le 01/07/2025, à 22:22

O_20_100_O

Re : script d’automatisation sauvegardes

Et comment pourrais tu ne pas avoir accès au dossier partagé et avoir accès au dossier de sauvegarde sur la même machine ?

Hors ligne

#325 Le 02/07/2025, à 10:15

eric63

Re : script d’automatisation sauvegardes

Dans le cas ou l’utilisateur fanou sur son portable et depuis son portable
- qu'elle n’allume pas le disque 8T relié au Pc et que le pc est éteint parce que je ne l’utilise pas ou que je absent
- et ouvre et modifie un fichier situé soit dans le DossiersCommun ou dans le dossier DocumentsPortableFanou

il n’y a aucun moyen de faire une sauvegarde incrementielle autrement que sur la Vm qui plus est de façon plus serré que la journée

le problème ne se pose pas pour mes DocumentsPcEric sur le Pc puisqu’il est inutilisé à ce moment
c’est plus pour regrouper les sauvegardes de tous les dossiers documents au même endroit  et de fixer un timing horaire dans la Vm et un timing journalier pour le 8T ce qui est fait pour ce dernier


Kubuntu 25.04 wayland Plasma 6.4.3 KDE Qt 6.8.3 noyau 6.14.0-24 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script demonipuch
J’utilise le clavier LDLC AFNOR

Hors ligne