2012-07-30 94 views
0

如何在单个命令行中使用ftp协议和ftp命令将备份传输到远程服务器?Mysqldump使用ftp命令备份o远程服务器

我的MySQL转储命令

mysqldump -u _admin -p'pass&word' _maindb --add-drop-table --ignore-table=_maindb.emailstatstics > backup$(date '+%d_%m_%y_%H_%M').sql 

和FTP这样的:

ftp 64.xx.xx.xx 
myUserName 
myPassword 
put myMysqlBackup.sql 

我需要这个命令在管理向导

回答

1

在cronjobs执行这将让上传的文件。你可以把这两行放到一个shell脚本中并使其成为可执行文件,从crontab中使用它应该没有问题。只要确保你使用输出文件的绝对路径。

ftp -u ftp://myUserName:[email protected] myMysqlBackup.sql 
+0

我需要备份对完成后以进行传输。如何在shell中写入? im beginer到linux命令 – Hamidreza 2012-07-30 14:14:51

+1

只需将两行放在某个带'.sh'扩展名的文件中,并在顶部添加'#!/ bin/sh'作为单独的行。这告诉加载器使用'sh' shell来运行你的脚本。然后你只需要用'chmod + x/path/to/script.sh'标记为可执行文件。 – 2012-07-30 15:11:42

+1

对不起,你注意到你提到过DirectAdmin。如果将此脚本放在用户的主目录中(Web根外部 - 这很重要),那么您应该能够在DirectAdmin中将脚本的完整路径指定为“命令”。 – 2012-07-30 15:14:14

1

推测:

FILENAME=backup$(date '+%d%m_%y_%H_%M').sql ; mysqldump -u _admin -p'pass&word' _maindb --add-drop-table --ignore-table=maindb.emailstatstics > $FILENAME ; scp $FILENAME USERNAME:[email protected]/. 
+0

它对我不起作用,'ftp 64.xx.xx.xx myUserName myPassword把$ FILENAME'不做任何事情,我给这个消息'usage:ftp host-name [port]' – Hamidreza 2012-07-30 14:35:34

+0

啊..我假设你在你的问题中写的ftp命令是可行的。那么我会修改回应。 – troelskn 2012-07-31 09:08:08

0

试试这个:

#/bin/bash 
archive=$(date +%Y-%m-%d-%H-%M).gz 
mysqldump --all-databases | gzip -9 > $archive 
HOST=backupserver 
USER=user 
PASS=password 
ftp -inv $HOST << EOF 
user $USER $PASS 
put $archive 
bye 
EOF 
rm -f archive 
相关问题