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.

#1 Le 24/12/2008, à 19:53

frafa

sauvegarde de peripherique avec avancement en utilisant dd

Bonjour,

je ne suis pas sur de moi car pas l'habitude d'utiliser dd
pouvez me confirmer que ce bout de code est juste ?

adaptation personnelle de: http://www.xgarreau.org/aide/devel/lang … dialog.php

src=/dev/sdc
dest=Sauvegarde.img
taille=$(sfdisk -s $src)
i=0
(while [ $i -lt $taille ]; do
dd if=$src of=$dest bs=1000 count=1 skip=$i seek=$i >/dev/null 2>&1
i=$(($i+100))
echo -e "$(((100*$i)/$taille)) \n#Pourcentage de la copie de $src effectué: $(((100*$i)/$taille))%"
done) | zenity --progress --width 600 --auto-close

Dernière modification par frafa (Le 24/12/2008, à 20:05)

Hors ligne

#2 Le 28/10/2011, à 14:42

obibann

Re : sauvegarde de peripherique avec avancement en utilisant dd

Hello,

Je déterre ton sujet car celui-ci m’intéresse. Cette version est-elle fonctionnelle ? Pas trop lente ? L'as-tu optimisée depuis ?

Pour mon besoin, je fais l'inverse (restauration d'une image vers une partition). Ça ne change pas grand chose cependant j'aimerai savoir comment intégrer la décompression dans ce script : ça m'arrangerait de pouvoir stocker mon image en bz2 smile

Merci


Ubuntu 16.04
Avec Windows, on fait ce qu'on peut... Avec Linux, on fait ce qu'on veut !! :p

Hors ligne

#3 Le 28/10/2011, à 16:05

frafa

Re : sauvegarde de peripherique avec avancement en utilisant dd

Bonjour,
Ca date ce truc ...
pour restaurer un volume amovible via un fichier image disque il y à un outiil graphique
pratique dans les depots Ubuntu ==> usb-imagewriter

Sinon depuis je fait autrement j'utilise toujours dd,
mais en fait dd ne fait pas de retour, sauf quand tu l'arrete
donc depuis je stoppe dd sur un timeout defini dans une boucle et je recupère son retour
si usb-imagewriter ne te convient pas reposte,
je fouillerai dans mes script pour te donner une base de depart ...

mais de toute façon il te faudra decompresser ton fichier image avant d'utiliser dd,
et en plus on ne gagne quasi rien à compresser un fichier image disque.

Hors ligne

#4 Le 28/10/2011, à 16:29

obibann

Re : sauvegarde de peripherique avec avancement en utilisant dd

Hello,

Merci pour ta réponse sur ce vieux topic ! En effet, usb-imagewriter ne me convient pas. Il ne s'agit pas ici de restaurer un volume amovible, mais la partition système en cas de crash.

L'idée est que je créé une image une fois le PC installé nickel, et que via un live CD, l'utilisateur puisse restaurer l'image.

Voici une ébauche de ce que j'ai commencé à faire :

#!/bin/sh

# Some useful vars
user=`whoami`
dest=/dev/sda1
src=/usr/lib/restoration/sda1.img
part_size=$(sfdisk -s $dest)
home=/dev/sda6
home_archive=/usr/lib/restoration/home.bz2

# User control
if [ "$user" != "root" ] ; then
    zenity --error --text "Vous devez disposer des droits d'administration pour lancer la restauration"
    exit 127
fi

# Confirm
zenity --warning --text="Voulez-vous vraiment continuer ?\nLa configuration d'origine va être restaurée : \nVos données personnelles peuvent être perdues !!!"
if [ $? != 0 ] ; then
    exit 0
fi

# Testing file
if [ ! -f "$src" ] ; then
    zenity --error --text "Fichier de restauration introuvable"
    exit 127
fi

# Restoring... (merci frafa)
i=0
(while [ $i -lt $part_size ]; do
    dd if=$src of=$dest bs=4096 count=1 skip=$i seek=$i conv=notrunc,noerror > /dev/null 2>&1
    i=$(($i+100))
    echo -e "$(((100*$i)/$part_size)) \n#Restauration en cours..."
done) | zenity --progress --width 600 --auto-close

# Home
mount $home /mnt
cd /mnt
cd /mnt/mediatv
find . -maxdepth 1 -mindepth 1 -name ".*" -type f -exec rm -f {} \;
find . -maxdepth 1 -mindepth 1 -name ".*" -type d -exec rm -rf {} \;
cp $home_archive .
tar xjf $home_archive > /dev/null 2>&1
rm -f $home_archive
umount /mnt

# Ok !
zenity --info --text="Restauration terminée. Veuillez redémarrer votre ordinateur."

Ubuntu 16.04
Avec Windows, on fait ce qu'on peut... Avec Linux, on fait ce qu'on veut !! :p

Hors ligne

#5 Le 28/10/2011, à 16:49

frafa

Re : sauvegarde de peripherique avec avancement en utilisant dd

C'est du brut de decoffrage à adapter,
une fonction extraite de multisystem qui me permet de gérer sauvegarde et restauration.
reenseigner source="...img" et destination="/dev/sd?1"


#Régler
export source="$HOME/file.img"
export destination="/dev/sdx1"
export optiondd=""
function dd_restaur()
{
#Pas touche en dessous si vous ne savez pas ce que vous faites ...
taille="$(du -sb "$source" | awk '{print $1}')"
message="Restaurer"
dd if="$source" of="$destination" $optiondd 2>/tmp/tampondd &
sleep 1
pid=$!
echo $pid >/tmp/pid-save
echo ${destination} >/tmp/path-save
while kill -USR1 $pid
do
sleep 2 #ne pas régler trop féquement car cela ralenti la copie!
copie="$(sed -n 3p /tmp/tampondd | awk '{print $1}')"
taillemio="$(echo $copie/1024/1024|bc 2>/dev/null)"
if [ "$taillemio" ]; then
echo "# ${message} ${taillemio}Mio de $(($taille/1024/1024))Mio $(echo "scale=2; $copie/$taille*100;"|bc)%"
echo "$(echo "scale=2; $copie/$taille*100;"|bc)"
fi
>/tmp/tampondd
done | zenity --progress --auto-close --width=400 --auto-kill
rm /tmp/pid-save 2>/dev/null
rm /tmp/path-save 2>/dev/null
}
#Démonterle disque avant d'appliquer cette fonction !
sudo umount $destination
dd_restaur

Dernière modification par frafa (Le 28/10/2011, à 16:58)

Hors ligne

#6 Le 29/10/2011, à 20:58

obibann

Re : sauvegarde de peripherique avec avancement en utilisant dd

Merci, je travaille actuellement dessus, cependant j'ai un soucis : simpossible de faire un mount dans le script hmm

"mount /dev/sda6 /mnt" fonctionne dans le terminal, mais rien ne se passe dans le script sad


Ubuntu 16.04
Avec Windows, on fait ce qu'on peut... Avec Linux, on fait ce qu'on veut !! :p

Hors ligne

#7 Le 30/10/2011, à 01:49

frafa

Re : sauvegarde de peripherique avec avancement en utilisant dd

Bonjour,
- Pour mount fo etre root dans le script,

- Donc soit ton script est executé genre dans un xterm et tu met un sudo devant la commande,

- Soit tu lance le script en sudo user avec gksudo,

- Soit si tu est genre sous gnome tu peut utiliser cette commande sans être root pour monter un volume

gvfs-mount -d /dev/sdx1

Hors ligne

#8 Le 30/10/2011, à 14:42

obibann

Re : sauvegarde de peripherique avec avancement en utilisant dd

Nan c'est bon, j'avais fait une boulette ^^

Bon et bien le script semble fonctionner correctement. Je vais tester ça plus rigoureusement en milieu de semaine prochaine wink

A+


Ubuntu 16.04
Avec Windows, on fait ce qu'on peut... Avec Linux, on fait ce qu'on veut !! :p

Hors ligne