2012-07-30 67 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 
相關問題