如何转储一个mysql数据库并传输到远程ftp在一行 – 为crontab – ?

我需要每周备份一个mySQL表,然后使用ftp将它传输到远程机器上。
这是我现在在crontab中的命令:

0 18 * * 1 /usr/bin/mysqldump --add-drop-table --extended-insert -user -ppass db [table] > /home/myuser/backups/bdd-`date +%d-%m-%Y`.sql 

我需要replace命令的最后部分,以便生成的sql文件可以使用ftp协议传输到另一台服务器。

我search了一些关于“使用curlftpfs在/ mnt / ftpserver /下永久安装远程ftp服务器”的信息, 但没有在我的linux中find这样做的步骤

提前感谢您提供给我的任何提示

如果你有一些需要多行shell的任务,一个常用的方法是把它放在一个小的shell脚本中,然后从cron调用这个shell脚本。

 0 18 * * 1 /home/myuser/backups/backup-and-ftp-db.sh 

/home/myuser/backups/backup-and-ftp-db.sh包含类似的东西

 #!/bin/sh dumpfile=/home/myuser/backups/bdd-$(date +%d-%m-%Y).sql /usr/bin/mysqldump --add-drop-table --extended-insert -user -ppass db [table] > $dumpfile lftp -e "put $dumpfile backupdir/$dumpfile ; quit" -u username,password backupserver 

还值得注意的是,如Mike所做的那样,在命令replace中多次调用date会导致不同的结果。 如果date包括小时/分钟/秒,则更有可能,但是,考虑如果您的cron作业在午夜前开始会发生什么 – 您的第一个date调用给出,比如bdd-19-05-11.sql ,如果mysqldump花费足够的时间那午夜过去了,你进入第二天,你的第二个命令将需要一个文件名bdd-20-05-11.sql 。 出于这个原因,我调用date一次,并将其存储在一个variables。

你可以使用ncftpput,如果你可以在你的crontab中join一个ftp密码。或者ncftpput cfg文件的path

 0 18 * * 1 /usr/bin/mysqldump --add-drop-table --extended-insert -user -ppass db [table] > /home/myuser/backups/bdd-`date +%d-%m-%Y`.sql && ncftpput -u user -p pass host.remote.com /home/myuser/backups/bdd-`date +%d-%m-%Y`.sql remotePath//bdd-`date +%d-%m-%Y`.sql