# [script] pour sauvegarde sur critére (résolu)

## alpha_one_x86

Bonjour  :Smile:  , la j'ai un probleme que je peu vraiment pas résoudre tous seul  :Sad:  :

```
#! /bin/bash

echo "Lancement de la sauvegarde"

cd /www_backup/

rm -f `date +%e_%B_%Y.*`

find /var/www/localhost/htdocs/ -size -100k | xargs tar cfj `date +%e_%B_%Y.tar$

mysqldump -u root -p***** first-world > `date +%e_%B_%Y.sql`

echo "Sauvergarde fini"
```

J'ai remarquer 2 truc avec mon script, il aime pas les fichiers avec des espace, j'ai mit de guillemet partout et ça marche pas.

il sauvegarde tout les fichiers, même ceux de + de 100ko.

Qui peu me donner un petit coup de main, s'il vous plait?

Merci de votre aide.Last edited by alpha_one_x86 on Fri Nov 17, 2006 10:47 pm; edited 3 times in total

----------

## ultrabug

Salut,

J'ai pas de réponse rapide à ta question mais je te conseille de modifier ton post en changeant le mot de passe root de ta base SQL dans ta citation de code... C'est pas très très safe ca  :Smile: 

J'essaierai de jeter un oeil complet à ton pb plus tard

Bon courage

----------

## alpha_one_x86

 *ultrabug wrote:*   

> Salut,
> 
> J'ai pas de réponse rapide à ta question mais je te conseille de modifier ton post en changeant le mot de passe root de ta base SQL dans ta citation de code... C'est pas très très safe ca 
> 
> J'essaierai de jeter un oeil complet à ton pb plus tard
> ...

 

Merci j'avais pas vu.

----------

## Il turisto

Je pense que tu dois mettre +100k pour les fichiers de plus de 100k. je dis ca sans avoir vérifié mais bon.

Pour les espaces c'est parce que la technique de backup est pas très bonne. Si tu nous dis ce que tu veux faire on va pouvoir te pondre un truc plus joli.

edit : en plus la longue ligne de ton script est coupé ...

----------

## Enlight

 *alpha_one_x86 wrote:*   

>  *ultrabug wrote:*   Salut,
> 
> J'ai pas de réponse rapide à ta question mais je te conseille de modifier ton post en changeant le mot de passe root de ta base SQL dans ta citation de code... C'est pas très très safe ca 
> 
> J'essaierai de jeter un oeil complet à ton pb plus tard
> ...

 

Nous si!  :Mr. Green: 

----------

## alpha_one_x86

Je veux sauver tout les fichiers de - de 100ko, en tar.bz2

----------

## Il turisto

chez moi : find . -size -100k fonctionne

maintenant pour le prob des espaces il faudrait que tu postes la ligne du tar complète que l'on puisse voir

----------

## widan

 *alpha_one_x86 wrote:*   

> 
> 
> ```
> find /var/www/localhost/htdocs/ -size -100k | xargs tar cfj `date +%e_%B_%Y.tar`
> ```
> ...

 

Les guillements n'aideront pas, avec ça normalement ça devrait passer:

```
find ... -print0 | xargs -0 ...
```

----------

## alpha_one_x86

Avec cette commande:

```
find /var/www/localhost/htdocs/ -size -100k -print0 | xargs -0 tar cfj `date +%e_%B_%Y.tar.bz2`
```

Tout n'est pas sauver et en + les fichiers des + de 100k sont sauver comme ceux de - de 100k. En + dans un dossier, mes images y sont 3x avec les meme nom dans le meme dossier.

----------

## alpha_one_x86

J'aimerai avoir des conseilles, qu'es que je peu virer sans danger dans ca:

```

             apache2 |      default

            bootmisc | boot

             checkfs | boot

           checkroot | boot

               clock | boot

            coldplug |      default

         consolefont | boot

            hostname | boot default

             hotplug |      default

             keymaps | boot

               local |      default nonetwork

          localmount | boot

             modules | boot

               mysql |      default

            net.eth0 |      default

              net.lo | boot

            netmount |      default

                noip |      default

             proftpd |      default

           rmnologin | boot

               samba |      default

                sshd |      default

           syslog-ng |      default

             urandom | boot

```

Je m'en fiche que le démarage soit long, mais je veux des perf quand le system est lancer. J'ai mit, pour mon utilisation (serveur web et réseau), apache2, mysql, samba, noip, proftpd, sshd.

----------

## Scullder

 *alpha_one_x86 wrote:*   

> J'aimerai avoir des conseilles, qu'es que je peu virer sans danger dans ca:

 

rmnologin, comme ça ça t'apprendra à chercher sur google =)

----------

## alpha_one_x86

 *Scullder wrote:*   

>  *alpha_one_x86 wrote:*   J'aimerai avoir des conseilles, qu'es que je peu virer sans danger dans ca: 
> 
> rmnologin, comme ï¿½a ï¿½a t'apprendra ï¿½ chercher sur google =)

 

Justement je cherche, mais je comprend pas toujour trÃ©s bien ce que c'est par exemple nologin, je sais toujours pas ce que c'est, mais je vais le supprimer.

Paar exmple urandom, sert a faire des truc alÃ©atoire, mais c'est vraiment utile? et est aparament syslog-ng est pour gerer des log en rÃ©seau, mais je consolute que les log local en local, je le laisse?

----------

## Scullder

 *alpha_one_x86 wrote:*   

> Justement je cherche, mais je comprend pas toujour trÃ©s bien ce que c'est par exemple nologin, je sais toujours pas ce que c'est, mais je vais le supprimer.

 

Très mauvaise idée, supprime le fichier nologin qui est je sais plus où pour pouvoir te loguer au prochain reboot xD

 *alpha_one_x86 wrote:*   

> Paar exmple urandom, sert a faire des truc alÃ©atoire, mais c'est vraiment utile? et est aparament syslog-ng est pour gerer des log en rÃ©seau, mais je consolute que les log local en local, je le laisse?

 

urandom c'est pour initialiser le générateur de nombre aléatoire. Donc oui, tu le laisses parce que la fiabilité des programmes que t'utilises en dépend.

syslog-ng, c'est pas fondamental, mais pour la sécurité, c'est mieux de l'avoir (possibilité d'analyse des log).

Pour google, tu dois pas chercher correctement xD

----------

## nemo13

 *alpha_one_x86 wrote:*   

>  je le laisse?

 Aphorisme : chez unix/linux tout est réseau même ta machine   :Wink:   donc ...

----------

## alpha_one_x86

Moi je m'egar, qui peu m'aider pour mon probleme?

----------

## Scullder

Indice : exécute la commande find seule et lit la sortie texte que tu envoies à tar.

Le forum va pas te sortir les réponses à tous tes problèmes basiques et non spécifiques à gentoo chaque jour, cherche, debug (ou apprends à débugger), et lit les pages de man.

Pas un bonjour, pas un svp, t'attends qu'on te fasse ton travail ?

----------

## alpha_one_x86

 *Scullder wrote:*   

> Indice : exécute la commande find seule et lit la sortie texte que tu envoies à tar.
> 
> Le forum va pas te sortir les réponses à tous tes problèmes basiques et non spécifiques à gentoo chaque jour, cherche, debug (ou apprends à débugger), et lit les pages de man.
> 
> Pas un bonjour, pas un svp, t'attends qu'on te fasse ton travail ?

 

J'ustement je ne m'en sort pas, voila ca que la commande find me donne un truc fou. Je trouve vraiment pas comment faire ce script, j'ai pas envie de devoir les faire en php. Je veux le faire en bash en sh ou en python.

Voici ce que je vien de faire vite fait, ca marche pas non  plus:

```
#!/bin/sh

echo "Lancement de la sauvegarde"

cd /www_backup/

echo "Lancer la sauvegarde? (y/n)"

read ans

if [ "$ans" == "y" ]; then

  rm -f `date +%e_%B_%Y.*`

  echo "Sauver les fichiers? (y/n)"

  read ans

  if [ "$ans" == "y" ]; then

    rm -Rf var/

    mkdir /www_backup/var

    mkdir /www_backup/var/www

    mkdir /www_backup/var/www/localhost/

    for pkg in `find /var/www/localhost/htdocs/ -size -100k -print`

     do

      if [ -f $pkg ]; then

#        echo "cp $pkg /www_backup$pkg"

        cp $pkg /www_backup$pkg

      else

        mkdir /www_backup$pkg

      fi

  done

  fi

  echo "Sauver mysql? (y/n)"

  read ans

  if [ "$ans" == "y" ]; then

    mysqldump -u root -p******* first-world > `date +%e_%B_%Y.sql`

  fi

  echo "Sauvergarde fini"

fi

```

----------

## Scullder

```
find /var/www/localhost/htdocs/ -size -100k -print | less
```

Regarde la première ligne, puis les autres quand t'auras compris que la commande inclut les répertoires (de la taille d'un bloc = 4096octets) =)

----------

## alpha_one_x86

 *Scullder wrote:*   

> 
> 
> ```
> find /var/www/localhost/htdocs/ -size -100k -print | less
> ```
> ...

 

Je vois pas comment tu vois ça. Dans mon script le seul truc qui a l'air de ne pas marcher c'est les fichiers avec des espaces.

Si quelqu'un a une idee, pour me débloquer je suis preneur.

----------

## Scullder

résultat de la commande chez moi :

```
$ find /var/www/localhost/htdocs/ -size -100k -print | head -n 3

/var/www/localhost/htdocs/

/var/www/localhost/htdocs/phpmyadmin

/var/www/localhost/htdocs/phpmyadmin/server_engines.php

...

```

Tu passes ça à tar, il cherche pas à comprendre, il te tar tout le /var/www/localhost/htdocs/

Avec 

```
find /var/www/localhost/htdocs/ -size -100k -not -type d -print
```

ça devrait aller mieux.

Effectivement, c'est aussi problématique pour les espaces dans les noms des fichiers.

----------

## truc

```
cd /www_backup/
```

dans un script plutôt que de changer le répertoire courant il est souvent préférable de travailler avec des chemins complet. (on ne sait jamais ce qui peut arriver pendant l'execution du script etc..  imagine un petit rm -rf * en tant que root alors que le cd /www_backup/ avait échoué.... )

Sinon, 

```
    mkdir /www_backup/var

    mkdir /www_backup/var/www

    mkdir /www_backup/var/www/localhost/
```

tu dispose d'une option sympa pour faire ça mkdir -p /www_backup/var/www/localhost/ (cf tes grandes amis man pages..)

Sinon, je n'ai pas tout regarder précisément mais je me dit que pour éviter le problème avec les noms de fichiers bizarres etc.. tu pourrais utiliser l'option -exec de find (de mémoire un truc  comme ça find /dir -option... -exec cp '{}'  /www_backup \; )

tada  :Smile: 

----------

## alpha_one_x86

il reste plus qu'a resoudre les problemes de espaces, car mon script régler le blem de dossier.

----------

## alpha_one_x86

```
find /var/www/localhost/htdocs/ -size -100k -not -type d -exec cp '{}' /www_backup \;
```

Ca copie tout tel quel sans faire d'aborésaance, ou je me suis tromper?

On peu creer le dossier si il n'existe pas avec un argument de la commande cp?

Par exemple si /www/ est vide il faut que la comande: cp toto.txt /www/d1/d2/ marche et donc creer /www/d1 puis /www/d1/d2/Last edited by alpha_one_x86 on Fri Nov 17, 2006 4:25 pm; edited 1 time in total

----------

## Il turisto

non ca doit en effet tout copier sans faire d'arbo car cp ne copie pas les dossier.

Je pense que tu te complique la vie. 

Pq tu ne fais pas un tar de tout le dossier simplement?

----------

## alpha_one_x86

 *Il turisto wrote:*   

> non ca doit en effet tout copier sans faire d'arbo car cp ne copie pas les dossier.
> 
> Je pense que tu te complique la vie. 
> 
> Pq tu ne fais pas un tar de tout le dossier simplement?

 

Car mon tar ferai 80Go j'ai deja tester, car dans mon site il y a aussi de gros fichier, dont certain sans extexion ou aevc une mais aléatoire?

----------

## Il turisto

un site web de 80 gigas? c du warez ca.

moi dans ce cas je fais un rep qui contient ces fichiers la et j'eclut ce rep (et ses sous rep) de mon tar avec la commande qui va bien et qui est decrite dans le man.

----------

## truc

ouais, bah, j'imagine que pour recréer l'arborescence copmme tu semble le souhaiter le plus facile serait de passer par un fichier temporaire, du style

find /dir -options > temp_file

ensuite, il doit y avoir des exemple dans le forum sur la syntaxe exate, je ne m'en souviens plus mais quelque chose du style

```
while read line

do

   mkdir -p /var_bakup/"${line%/*}"

   cp /dir/"${line}" /var_bakup/"${line%/*}"/"${line##*/}"

done < temp_file

```

J'suis coincé sur du windows là, donc je ne peux bien évidemment pas faire grand chose... DOnc à vérifier d'abord  :Smile: 

----------

## alpha_one_x86

Non c'est pas du warez, mais iso prenne 20Go. Et pour les commande linux sous windows il y as cygwin ou ssh. Merci truc pour ton idee, j'essaye d'approfondir. Si tu pouvez developer un peu ce serai sympa.

----------

## alpha_one_x86

comment je fait pour sauver tout sauf ce qu'il y a dans le dossier /var/www/localhost/htdocs/cache/ ?

Voila mon script fini:

 *Quote:*   

> #!/bin/sh
> 
> clear
> 
> echo -n "Lancement de la sauvegarde "
> ...

 

PS: qui a une commende pour faire rammer le cpu et que le cpu?

Comment intégrer mon script au system? je veux que quelque soit l'emplacement en tapan: "backup" mon script ce lance, je l'ai mit dans /bin, la commande backup est bien creer mais rien ne ce passe.Last edited by alpha_one_x86 on Fri Nov 17, 2006 10:36 pm; edited 2 times in total

----------

## truc

y'a une commande pour find pour lui faire ignorer des repertoires il me semble, donc tu lui la colle avec le repertoire machin/cache en option, puis tu rajoute un étape ou tu copie ce répertoire dans ton backup, et ensuite seulement tu pourras tar'er tout ça

----------

## alpha_one_x86

J'ai mit un simple rm bien placer   :Wink:  , si non qui a une commande pour mettre mon cpu a 100%, car je veux voir la température, a fond, et la compil du noyau ne dure pas asser.

----------

## Tuxicomane

 *Quote:*   

> si non qui a une commande pour mettre mon cpu a 100%, car je veux voir la température, a fond, et la compil du noyau ne dure pas asser.

 

emerge openoffice ?   :Laughing: 

----------

## kernelsensei

un truc tout bête comme ça 

```
while true ; do true ; done
```

 peut faire monter la charge cpu à 100%

----------

## Scullder

 *kernelsensei wrote:*   

> un truc tout bête comme ça 
> 
> ```
> while true ; do true ; done
> ```
> ...

 

La commande yes, c'est plus court  :Smile: 

----------

## alpha_one_x86

 *Scullder wrote:*   

>  *kernelsensei wrote:*   un truc tout bête comme ça 
> 
> ```
> while true ; do true ; done
> ```
> ...

 

Yes ca fait planter ssh, et ca sature le réseau.

----------

## Scullder

je savais pas que t'étais en ssh :p Ca affiche yes en boucle ou la chaîne de caractère passée en paramètre.

----------

## alpha_one_x86

pour moi 

```
while true ; do true ; done
```

 marche

----------

