#1 Le 18/01/2013, à 20:17
- Math
Script automatique de sauvegarde CD multisupport
Bonjour,
Je recherche à faire une sauvegarde sur CD/DVD d'un répertoire volumineux (>30Gio).
J'ai donc besoin de faire un multi-support ; mais je ne veux pas de tar/zip multivolume. (sinon, ce serait très facile).
En effet, j'ai besoin de graver ces fichiers sans compression.
J'ai donc pensé à un script qui me ferai une copie (lien symbolique/dur) de mon répertoire en gérant la taille pour ne pas dépasser la limite.
En gros, mon répertoire actuelle est :
~/medias
/2012
/01
/02
/06
/07
/2013
/01
/02
/06
/07
Donc, l'idée serait peut être d'avoir un script qui reprioduirait :
~/medias
/CD1
/2012
/01
/02
/CD2
/2012
/06
/07
/CD3
/2012
/07 <== parce qu'il n'avais plus la place sur le CD2
/2013
/01
/02
/06
/07
Est-ce que vous connaissez un script qui me permettrai de faire ceci de manière automatique ?
Ou alors connaissez vous une aurte solution ?
Merci
Hors ligne
#2 Le 20/01/2013, à 07:34
- pingouinux
Re : Script automatique de sauvegarde CD multisupport
Bonjour,
La seconde arborescence est-elle censée remplacer la première, et contenir réellement les fichiers ? L'autre possibilité est qu'elle soit créée en plus, éventuellement dans un autre répertoire de base, et contienne des liens symboliques vers les fichiers d'origine.
Hors ligne
#3 Le 20/01/2013, à 09:27
- Math
Re : Script automatique de sauvegarde CD multisupport
Oui, je pense que le plus simple est effectivement d'avoir une "copie" sous forme de symlinks ; c'est ce que j'imaginais déjà..
Hors ligne
#4 Le 20/01/2013, à 09:48
- pingouinux
Re : Script automatique de sauvegarde CD multisupport
Dans ce cas, voici un script qui peut éventuellement convenir.
#!/bin/bash
ORIG=~/medias
A_SAUVER=.
DEST=/tmp/tst
LON_MAX=700000000;
cd "$ORIG"
n=0;
while read fic
do
lon=$(stat -c "%s" "$fic")
n_=0
for k in $(seq 1 $n)
do
LON=$((${N[$k]}+lon))
((LON <= LON_MAX)) && { n_=$k; break; }
done
((n_==0)) && { ((n++)); LON=$lon; n_=$n; }
orig="$ORIG/$fic"
dest="$DEST/CD$n/$fic"
printf "%3d %8d %8d %s\n" $n_ $lon $LON "$dest"
mkdir -p "$(dirname "$dest")"
ln -s "$orig" "$dest"
N[$n_]=$LON
done < <(find "$A_SAUVER" -type f)
for k in ${!N[@]}; do printf "%3d %8d\n" $k ${N[$k]}; done
ORIG : Répertoire de départ
A_SAUVER : Répertoire à sauvegarder (situé dans $ORIG)
DEST : Répertoire de destination
LON_MAX : Longueur max en octets de chaque CDn
Remarque :
Ce script ne s'occupe que des fichiers de l'arborescence (à l'exclusion des liens), et ne tient pas compte de la place prise par les répertoires.
Hors ligne
#5 Le 20/01/2013, à 14:24
- Math
Re : Script automatique de sauvegarde CD multisupport
Hello,
Merci beaucoup ; l'effet désiré me semble très bien..
Il faut juste bien faire attention au "/bin/bash" ;
Ensuite, je fais un
mkisofs -J -r -f -o ./CD1.iso ./CD1/
pour préparer mes iso.
LON_MAX=680000000; #680Mo avec un peut de marge
LON_MAX=4294967296; #4Go avec pas mal de marge :-)
LON_MAX=4504682496; #4,2Go avec un peut de marge
Hors ligne