I'm writing a bash shell script to backup several mysql databases. This script will run on a daily basis and send a copy to a remote FTP repository. The filenames are in the format DATE.backup.sql. How do I store the DATE variable so I can delete/move/etc the file on the FTP server the next time the script runs?
#!/bin/bash
DATE=$(date +%d%b%y_%k.%M.%S)
cd /web/.hhome/mysql.backup/data
mysqldump -ubackup -ppassword --databases db1 db3 > $DATE.backup.sql
gzip -9 $DATE.backup.sql
crypt key < $DATE.backup.sql.gz > $DATE.backup.sql.enc.gz
rm -rf $DATE.backup.sql.gz
ftp -inv ftp.somehost.com<<ENDFTP
user hoover90 password
put $DATE.backup.sql.enc.gz
bye
ENDFTP
I can use pretty much any method, but it has to be done within this bash script.
Thanks!
At the top of the script:
read LASTDATE < .last_date
During the FTP session:
del $LASTDATE.backup.sql.enc.gz
After the FTP session:
echo $DATE > .last_date
Of course you will need some conditional logic there to deal with .last_date not existing... you could create the first .last_date file manually yourself. If you need help with that as well let us know.
Alright, everything you suggested works except for writing $DATE to .last_date. From bash, I can use the same command format (replacing $DATE with $(date +%d%b%y_%k.%M.%S), or just echo "asdfqwer1234blahblah" > .last_date), but it will not write $DATE to .last_date when the script is executed.
#!/bin/bash
read LASTDATE < .last_date
DATE=$(date +%d%b%y_%k.%M.%S)
cd /web/.hhome/mysql.backup/data
mysqldump -ubackup -ppassword --databases db1 db2 db3 > $DATE.backup.sql
gzip -9 $DATE.backup.sql
crypt asdfqwer1234 < $DATE.backup.sql.gz > $DATE.backup.sql.enc.gz
rm -rf $DATE.backup.sql.gz
ftp -inv ftp.somehost.com<<ENDFTP
user hoover90 password
del $LASTDATE.backup.sql.enc.gz
put $DATE.backup.sql.enc.gz
bye
ENDFTP
echo $DATE > .last_date
That is because you are reading the .last_date from your current working directory, then changing to /web/.hhome/mysql.backup/data before writing out the variable.
I'm guessing if you check /web/.hhome/mysql.backup/data/.last_date it will be there.
I would move the "read LASTDATE < .last_date" to AFTER the cd /web/.hhome/mysql.backup/data.
You guessed right! It works!
Thank you!