Welk gzip-attribuut voor automatische naamgeving backup?

Pagina: 1
Acties:

  • duderuud
  • Registratie: Mei 2000
  • Laatst online: 17:52

duderuud

Sliden is koel

Topicstarter
Ik ben bezig met om een bestaand script aan te passen die automatisch backups maakt van databases, ze gzipt en opslaat.

Het script werkt nu goed, maar de naamgeving is niet goed. De gzip-files krijgen nu vanuit het script een datumcode mee als naam, ik wil daar graag de naam van de desbetreffende db bij hebben.

Zo ziet de naamgeving er nu uit: mysql.2005-10-07_00.34.13_.tar.gz
Ik wil daar dus graag een naam in hebben, bijvoorbeeld: <naamdb>.mysql.2005-10-07_00.34.13_.tar.gz

Stukje code uit script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
$backup_gzip_file     = $backup_tar_file . "$gzip_ext";
$upload_gzip_filename = $file_prefix . "." . $date_text . "_.tar" . "$gzip_ext";

$compress_output = '';

if ( $compress_method eq 'z_switch' )
      {
      # compress with tar z switch
      &message('b',qq~\nNow Compressing with the Tar -z Switch ...\n~);

      $cmd = qq~$nice_cmd $tar_cmd $tar_options -c -z -f $backup_gzip_file $tar_dir~;
      &cmd_length($cmd) if $max_cmd > 0;
      $compress_output = `$cmd`;


Iemand een idee?

Motor-Forum.nl


  • Coen Rosdorff
  • Registratie: Januari 2000
  • Niet online
De datum komt weg uit regel 1 of 2 van je script. Daar kan je ook de namen van de bestanden veranderen.

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Trekt het script de data met mysqldump uit de database of backupped het script /var/lib/mysql/* ?

Wie trösten wir uns, die Mörder aller Mörder?


  • jvhaarst
  • Registratie: Maart 2000
  • Laatst online: 08-02 23:13

jvhaarst

Eendracht maakt macht

Ik gebruik zelf dit script om de structuur en de data van een aantal databases te backuppen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/bash
PASSWORD="geheim"
for name in $(mysqlshow -u root --password=$PASSWORD | grep -v "+" | grep -v "Databases" | awk '{print $2}'); do
    mysqldump \
        --opt --allow-keywords --create-options --disable-keys --extended-insert \
        --comments --complete-insert --lock-tables --user=root --password=$PASSWORD $name \
        | bzip2 -9 > ~/backup/`date +\%A`.`hostname`"."$name"_data".mysql.bz2
    mysqldump \
        --no-data \
        --opt --allow-keywords --create-options --disable-keys --extended-insert \
        --comments --complete-insert --lock-tables --user=root --password=$PASSWORD $name \
        | bzip2 -9 > ~/backup/`date +\%A`.`hostname`"."$name"_structure_".mysql.bz2

If you don’t have enough time, stop watching TV.


  • duderuud
  • Registratie: Mei 2000
  • Laatst online: 17:52

duderuud

Sliden is koel

Topicstarter
Confusion schreef op vrijdag 07 oktober 2005 @ 08:57:
Trekt het script de data met mysqldump uit de database of backupped het script /var/lib/mysql/* ?
Mysqldump.
Het mooie van dit script is dat je de /mysql-map opgeeft maar wel bepaalde db's of zelfs tabellen kan excluden. Dat is érg handig.
jvhaarst schreef op vrijdag 07 oktober 2005 @ 09:31:
Ik gebruik zelf dit script om de structuur en de data van een aantal databases te backuppen:
code:
1
2
3
4
$name \
        | bzip2 -9 > ~/backup/`date +\%A`.`hostname`"."$name"_data".mysql.bz2
.....
        | bzip2 -9 > ~/backup/`date +\%A`.`hostname`"."$name"_structure_".mysql.bz2
Daar zit het wel in ja, maar waar komt de verwijzing $name_XXX vandaan?

Motor-Forum.nl


  • Wilke
  • Registratie: December 2000
  • Nu online
Duderuud schreef op vrijdag 07 oktober 2005 @ 10:37:
Daar zit het wel in ja, maar waar komt de verwijzing $name_XXX vandaan?
Uit de 'for' loop?

code:
1
for name in $(mysqlshow -u root --password=$PASSWORD | grep -v "+" | grep -v "Databases" | awk '{print $2}'); do


Misschien tijd voor de Bash programming howto? ;)

Het idee is dat het volgende commando een lijstje database-namen geeft:

mysqlshow -u root --password=$PASSWORD | grep -v "+" | grep -v "Databases" | awk '{print $2}'

Vervolgens kun je dus zeggen 'voor elke $name in de uitvoer van dat commando, doe het volgende..'.

Dus vandaar de constructie,

for name in $(ingewikkeldcommando dat een lijstje van DB-namen genereert); do
dingen-waarbij-je-$name-wilt gebruiken
done;

Als je wilt snappen hoe dat ingewikkelde commando een lijst van database-namen genereert, voeg dan een voor een de stukken na de '|' tekens toe. Dan kun je goed zien wat voor effect het toevoegen van elk 'filter' heeft.

[ Voor 12% gewijzigd door Wilke op 07-10-2005 11:00 ]


  • jvhaarst
  • Registratie: Maart 2000
  • Laatst online: 08-02 23:13

jvhaarst

Eendracht maakt macht

En ja, het kan veel mooier, maar ik wilde het even snel en simpel.

If you don’t have enough time, stop watching TV.


  • duderuud
  • Registratie: Mei 2000
  • Laatst online: 17:52

duderuud

Sliden is koel

Topicstarter
Dank...ik ga proberen het te snappen en het dan uit te voeren ;)

Motor-Forum.nl

Pagina: 1