bash mysql dump geeft vreemde file

Pagina: 1
Acties:

  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
Hi,

ik heb mijn eerste bash script geschreven.

Het idee is om dit script via cron uit te voeren (dit lukt me wel)

Ik wil iedere dag een gzip van een database backup maken. Via google ed. heb ik het volgende script gemaakt:

code:
1
2
eval datum=`date "+%Y_%m_%d"_joost.sql.gz`
/usr/bin/mysqldump -u [username] -p[password] [database] | gzip > /home/joost/$datum


Dit script lijkt te werken, hij maakt netjes '2009-11-25_joost.sql.gz' aan. (met de correcte file size).

Alleen als ik dan bv. via filezilla de file wil ophalen krijg ik de melding 'no such file or directory'. Als ik via putty de directory lees dan krijg ik '2009-11-25_joost.sql.gz?' Er is dus een ? achter de file name geplakt.

Wie kan er mij vertellen waarom er een ? achter de filenaam wordt gezet, of wat ik verkeerd doe in mijn script?

Indien er meer info nodig is dan geef ik die graag :)

This space for rent. Serious inquiries only please.


  • hostname
  • Registratie: April 2009
  • Laatst online: 25-01 21:44
Geen idee waarom die ? er komt, maar de datum lijn kan een stuk beter (waar waarschijnlijk ook de fout in zit):
Bash:
1
datum=$(date "+%Y_%m_%d")_joost.sql.gz

$(command) voert een commando uit. Die eval is overbodig wegens je backticks. De _joost_sql.gz kan je beter uit het date commando halen, misschien dat die er nog wat mee doet.

  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
@hostname: ik heb het gelijk aangepast maar helaas met het zelfde resultaat.

Het is mij wel duidelijk dat het iets met $datum te maken heeft,

als ik hem op de volgende manier uitvoer

code:
1
/usr/bin/mysqldump -u [username] -p[password] [database] | gzip > /home/joost/joost.sql.gz


krijg ik wel een correcte file.

Maar goed, ik wil graag de datum in de filename.

Het aanmaken van de datum gaat prima
code:
1
2
3
4
5
datum=$(date "+%Y_%m_%d")_joost.sql.gz
echo $datum

return:
2009_11_25_joost.sql.gz


Het lijkt mij dus uiteindelijk in het laatste stuk te zitten:
code:
1
/home/joost/$datum


Doe ik daar iets verkeerd?

This space for rent. Serious inquiries only please.


  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Kan me niet voorstellen dat het helpt, maar probeer eens:

code:
1
2
DATUM=`date "+%Y_%m_%d"`
mysqldump .... > /home/joost/${DATUM}_dump.sql.gz

[ Voor 27% gewijzigd door Rainmaker op 25-11-2009 15:43 ]

We are pentium of borg. Division is futile. You will be approximated.


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
Rainmaker schreef op woensdag 25 november 2009 @ 15:41:
Kan me niet voorstellen dat het helpt, maar probeer eens:

code:
1
2
DATUM=`date "+%Y_%m_%d"`
mysqldump .... > /home/joost/${DATUM}_dump.sql.gz
De file die is aangemaakt heet nu 2009_11_25?_dump.sql.gz

in filezilla zie ik hem als 2009_11_25 (geen extentie oid)

This space for rent. Serious inquiries only please.


  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
Ik gok dat je script windows regeleindes heeft (CRLF ipv alleen LF).

Schrijf je je script onder windows en upload je het dan naar je server?

"He took a duck in the face at two hundred and fifty knots."


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
ik schrijf het script in zend, en via het 'ftp upload systeem' van zend sla ik de file op.

Slim opgemerkt, want inderdaad bij het eerste geval kreeg ik het '?' na .gz (stond op eerste regel)
en nu krijg ik deze na 2009_11_25 (einde van eerste regel).

Ik heb nu de file aangemaakt via putty, en inderdaad deze is nu wel correct.

Problem solved, beginners fout :(

Thnx!

[ Voor 15% gewijzigd door toost op 25-11-2009 17:05 ]

This space for rent. Serious inquiries only please.


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

toost schreef op woensdag 25 november 2009 @ 17:00:
ik schrijf het script in zend, en via het 'ftp upload systeem' van zend sla ik de file op.

Slim opgemerkt, want inderdaad bij het eerste geval kreeg ik het '?' na .gz (stond op eerste regel)
en nu krijg ik deze na 2009_11_25 (einde van eerste regel).

Ik zal de file morgen eens via putty aanmaken.
In de meeste editors/ide's kun je gewoon direct je bestand switchen van crlf naar lf (windows naar unix).

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 07-01 22:10
Maak er ook een gewoonte van je interpreter in de eerste regel van het script te zetten:
code:
1
2
#!/bin/bash
echo Hello world

Als je dit had gedaan, had je gelijk een foutmelding gekregen:
$ ./bashtestje
bash: ./bashtestje: /bin/bash^M: ongeldige interpreter: Bestand of map bestaat niet

Bovendien krijg je dan geen verrassingen als je ooit eens een andere default system shell installeert die bash-specifieke constructies zoals $(commando) niet kent.
Pagina: 1