帮助编写Linux脚本来备份和FTP文件到另一台服务器

我在Linux系统上使用MySQL作为我的应用程序的数据库系统。 每周我都更新系统,并更改数据库的备份(mysqldump)(2个数据库)。 然后我把.tar.gz和ftp生成的文件传到远程的Windows服务器上,之后我从Linux服务器上删除原来的备份和tar.gz文件。 对于Unix系统来说,作为一个完整的新手,我想知道是否可以编写一个脚本来自动执行所有这些操作,即执行以下步骤。

1)备份数据库A到A.sql(mysqldump)2)备份数据库B到B.sql(mysqldump)3)tar -cvzf dest.tar.gz A.sql B.sql 4)ftp dest.tar.gz到ftp @ remoteserver.com 5)从本地服务器删除A.sql,B.sql,dest.tar

如果我能朝着正确的方向迈出一步,那将是一件好事! 提前感谢蒂姆

我不build议使用FTP来处理您关心的任何文件(尤其是数据库备份,如果该数据库包含客户信息的话),但这最终取决于您。

首先,在Linux服务器上创build您的备份,如下所示:

#!/bin/bash # # Call script with: # /cron-mysql_bkup.sh mysql_hostname mysql_username mysql_password /backup/directory # if [ -n "$1" ]; then MYSQL_HOST="$1" else echo "MYSQL_HOST not specified." exit 1 fi if [ -n "$2" ]; then MYSQL_USER="$2" else echo "MYSQL_USER not specified." exit 1 fi if [ -n "$3" ]; then MYSQL_PASS="$3" else echo "MYSQL_PASS not specified." exit 1 fi if [ -n "$4" ]; then DIR_BKUP="$4" mkdir -p ${DIR_BKUP} else echo "DIR_BKUP not specified." exit 1 fi # # Generate filename # BACKUP_FILENAME=`date "+%Y-%m-%d"`".sql" # # Dump all databases # mysqldump -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} --all-databases > ${DIR_BKUP}/${MYSQL_HOST}/${BACKUP_FILENAME} # # Write status of the operation to the mysql.log file in the backup directory # if [ $? -ne 0 ]; then echo `date`" - ERROR creating backups of host "${MYSQL_HOST} >> ${DIR_BKUP}/mysql.log else echo `date`" - MySQL Backup complete for "${MYSQL_HOST} >> ${DIR_BKUP}/mysql.log BACKUP_TAR_NAME=${BACKUP_FILENAME}".tar.gz" tar czf ${DIR_BKUP}/${MYSQL_HOST}/${BACKUP_TAR_NAME} ${DIR_BKUP}/${MYSQL_HOST}/${BACKUP_FILENAME} && rm ${DIR_BKUP}/${MYSQL_HOST}/${BACKUP_FILENAME} fi 

这个脚本将会:

  1. 检查是否设置了所有必需的参数
  2. 将所有MySQL数据库转储到指定备份目录下的一个名为YYYY-mm-dd.sql的文件(如果该目录不存在,将创build该目录)
  3. GZIP文件,如果GZIP操作成功,则删除原始的SQL文件

这个脚本应该是相当简单的,你可以自定义,如果你愿意的话,请参阅高级Bash脚本指南来了解更多关于这样做的信息。

…一旦你的数据库备份,并可以在特定的位置find,为什么不使用WinSCP自动化备份检索,而不是通过FTP传输文件?