#1 Le 17/03/2022, à 23:01
- Franck-86180
sauvegarde de répertoires et fichiers selon existance
Bonjour,
Je souhaite écrire un script qui sauvegarde tous les répertoires et leur fichier en gardant l’arborescence
le fonction souhaité est la suivante:
Boucle1 Pour tous les répertoires et sous répertoires de /windows/Musique/*
Si le répertoires /sauvegarde/Musique/* n'existe pas
Création du répertoire /sauvegarde/Musique/*
Boucle2 dans tous les fichiers du répertoire /windows/Musique/*
Si le fichier du répertoire /sauvegarde/Musique/* n'existe pas
Copier le fichier
fin si
fin boucle2
fin si
fin boucle1
J'ai commencé a écrire ce qui suit mais ,,,,, je rame .... je rame. depuis 2 jours.....
C'est vraiment au dessus de mes capacités
Je continue quand même mais si quelqu'un a une idée pour m'aider
#!/bin/bash
base="/media/windows/Musique"
Lbase=${#base}
save="/media/sauvegarde/Musique"
Lsave=${save}
find /media/windows/Musique | rm -rf /media/sauvegarde/Musique
for inode in $(find $base -type d);
do
if [ -d $inode ]; then
#echo "Origine : "$inode
longueur=${#inode}
destination="$save${inode:${Lbase}:${longueur}}"
if [ ! -d "$destination" ];then
#echo "creation :" $destination
mkdir $destination
else
echo "répertoire existant";
fi
for file in `ls $inode | grep '.*\(wav\|txt\)'`;
do
echo $inode $file
# if (le fichier n''existe) ; then
# do
# copîer le fichier
# done
done
fi
done
Le dernier affichage echo $inode $file me découpe les fichiers en petits morceaux
...
/media/windows/Musique/Chanson/Enzo/Enzo 11-Deux
/media/windows/Musique/Chanson/Enzo/Enzo minutes
/media/windows/Musique/Chanson/Enzo/Enzo de
/media/windows/Musique/Chanson/Enzo/Enzo soleil
/media/windows/Musique/Chanson/Enzo/Enzo en
/media/windows/Musique/Chanson/Enzo/Enzo plus
/media/windows/Musique/Chanson/Enzo/Enzo (Rhum
/media/windows/Musique/Chanson/Enzo/Enzo version).wav
/media/windows/Musique/Chanson/Enzo/Enzo 12-Pacifico.wav
/media/windows/Musique/Chanson/Enzo/Enzo Titres.txt
au lieu de
...
/media/windows/Musique/Chanson/Enzo/Enzo 11-Deux minutes de soleil en plus (Rhum version).wav
/media/windows/Musique/Chanson/Enzo/Enzo 12-Pacifico.wav
/media/windows/Musique/Chanson/Enzo/Enzo Titres.txt
Autrement dit, les fichiers sont découpés à chaque caractère espace.
Dommage
Hors ligne
#2 Le 17/03/2022, à 23:12
- Qid
Re : sauvegarde de répertoires et fichiers selon existance
La joie des noms avec espace oui...
Par contre juste rassure moi ! Tu ne serais pas entrain d'essayer de réinventer rsync/grsync ? Pourquoi ?
"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique Ubuntu d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil
Hors ligne
#3 Le 17/03/2022, à 23:13
- eric63
Re : sauvegarde de répertoires et fichiers selon existance
Salut
idées
1 remplacer les espaces par %20
2a ou insérer "en debut et en fin de titre"
2b a moins que ce ne soit 'en debut et en fin de titre'
Kubuntu 24.10 Wayland Plasma 6.1.5 KDE 6.6.0 Qt 6.6.2 et noyau 6.11.0-9 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 de demonipuch
J’utilise le clavier french AFNOR
Hors ligne
#4 Le 17/03/2022, à 23:45
- kamaris
Re : sauvegarde de répertoires et fichiers selon existance
Quand une commande génère un flux, on ne fait pas
for word in $(command); do
…
done
On fait
while read line; do
…
done < <(command)
Mais à moins qu'il s'agisse d'un exercice personnel, tu devrais surtout utiliser rsync.
Dernière modification par kamaris (Le 17/03/2022, à 23:45)
Hors ligne
#5 Le 18/03/2022, à 10:52
- Franck-86180
Re : sauvegarde de répertoires et fichiers selon existance
Je ne connaissais pas rsync ni grsync.
MERCI
ceci étant, mon but était de sauvegarder (synchroniser) un répertoire contenu dans un disque
avec un répertoire contenu sur un autre disque.
Mais si le fichier d'origine a été abimé (zippé avec mot de passe par un pirate comme ça m'est arrivé) je ne veux pas de écraser mes fichiers sauvegardé par le fichier vérolé.
Après avoir lu https://doc.ubuntu-fr.org/tutoriel/sauv … avec_rsync
il me semble que ça répond à toutes ma problématique.
Je tente ça de suite en y incluant l'astuce du cron.weekly
En fait, j'utilise déjà SyncBackFree pour sauvegarder mon PC Windows sur mon PC Ubuntu
Donc, il me reste juste l'étape sauvegarde entre disques sur le PC Ubuntu
Une petite question encore,
A votre avis, est-ce que je peux dans le même script faire:
#!/bin/bash
mount -t ext4 /dev/sdc1 /media/sauvegarde
rsync /media/Windows/ media/sauvegarde/
umount /media/sauvegarde
C'est surement de la paranoïa mais je me suis fait piraté mon NAS une fois, pas 2 (enfin pas encore :-( )
merci encore
Dernière modification par Franck-86180 (Le 18/03/2022, à 11:26)
Hors ligne
#6 Le 18/03/2022, à 11:03
- Watael
Re : sauvegarde de répertoires et fichiers selon existance
Quand une commande génère un flux, on ne fait pas
for word in $(command); do … done
On fait
while read line; do … done < <(command)
et pour traiter la sortie de find de manière sûre, on lui ajoute -print0 :
find ... -print0 | while IFS='' read -d '' -r varName; do ... "$varName"... done
j'avais vu qu'il est possible de copier toute un arborescence en utilisant tar
un coup de stfw(copy directory tree) :
tar cf - * | ( cd /target; tar xfp -)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 18/03/2022, à 12:13
- Qid
Re : sauvegarde de répertoires et fichiers selon existance
Une petite question encore,
A votre avis, est-ce que je peux dans le même script faire:#!/bin/bash mount -t ext4 /dev/sdc1 /media/sauvegarde rsync /media/Windows/ media/sauvegarde/ umount /media/sauvegarde
Bah... Au delà de la commande rsync qui me semble trop simple je ne vois pas pourquoi ce script ne serait pas valide...
"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique Ubuntu d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil
Hors ligne