RHEL/CentOS Linux FTP Cron作业,用于自动ftp备份

时间:2020-01-09 10:42:05  来源:igfitidea点击:

自动ftp备份将提取sql.tar.gz并上传到CentOS Linux下的远程ftp服务器。
如何自动完成整个过程以上传文件/tmp/backup/sql.tar.gz?
您可以将标准ftp客户端用于文件传输协议。
该程序允许用户在远程网络站点之间传输文件。
但是,现代的FTP客户端遵循几乎没有什么不同的语法来上传文件。

这是上传文件的快速脚本:

#!/bin/sh
USERNAME="your-ftp-user-name"
PASSWORD="your-ftp-password"
SERVER="your-ftp.server.com"
 
# local directory to pickup *.tar.gz file
FILE="/tmp/backup"
 
# remote server directory to upload backup
BACKUPDIR="/pro/backup/sql"
 
# login to remote server
ftp -n -i $SERVER <<EOF
user $USERNAME $PASSWORD
cd $BACKUPDIR
mput $FILE/*.tar.gz
quit
EOF

确保脚本具有可执行权限:

$ chmod +x /path/to/ftp.backup.script.sh

设置cron作业以在15:30(24小时制)时间运行脚本:

30 15 * * * /path/to/ftp.backup.script.sh

上面的脚本应与任何Linux/UNIX版本下的所有现代ftp客户端一起使用。

一个shell脚本来转储所有mysql数据库并通过lftp程序上传它们

确保已安装lftp客户端:

# yum install lftp
#!/bin/bash
### MySQL Server Login Info ###
MUSER="root"
MPASS="MYSQL-ROOT-PASSWORD"
# mysql server
MHOST="localhost"    
 
### FTP SERVER Login info ###
FTPU="FTP-SERVER-USER-NAME"
FTPP="FTP-SERVER-PASSWORD"
FTPS="FTP-SERVER-IP-ADDRESS"
 
 
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
BAK="/backup/mysql"
GZIP="$(which gzip)"
NOW=$(date +"%d-%m-%Y")
 
[ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/*
 
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
FILE=$BAK/$db.$NOW-$(date +"%T").gz
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done
 
lftp -u $FTPU,$FTPP -e "mkdir /mysql/$NOW;cd /mysql/$NOW; mput /backup/mysql/*; quit" $FTPS

设置cron作业:

# crontab -e

每天午夜运行mysql备份ftp脚本:

@midnight /path/to/mysql.backup.sh >/dev/null 2>&1

相关:通过FTP自动登录和宏以及与备份相关的Shell脚本提高生产率。