2015-04-08 34 views
-1

嘿,我的shell腳本中有一個問題,我無法處理,這就是爲什麼我需要你的幫助。Mysql Shell轉儲腳本不工作

所以這是我的腳本:

MYSQL_DUMP=/usr/bin/mysqldump 
BACKUP_DIR=/backup/mysql 
TAR=/bin/tar 
RM=/bin/rm 
DB_NAME=Homepage 
DB_USER=root 
DB_PASS=liron3211 
AKT_DATUM=`date +%Y%m%d%H%M` 


$MYSQL_DUMP $DB_NAME -u $DB_USER --password=$DB_PASS > \ 
$BACKUP_DIR/$AKT_DATUM.backup.sql 


cd $BACKUP_DIR 
$TAR -cvzf $AKT_DATUM.backup.sql.tgz $AKT_DATUM.backup.sql 


$RM $AKT_DATUM.backup.sql 

所以我想,該腳本創建我的數據庫「主頁」,並把它放在文件夾/備份/ MySQL的,我怎麼能轉移它的SQL文件從我的根服務器到另一個FTP服務器?

編輯:這是我的錯誤:

./backup.sh: line 11: syntax error near unexpected token `newline' 

將是真棒,如果u能幫助我:)

問候 oRxx

+0

什麼不起作用? – Devon

回答

1

如果你將它上傳trought SSH,使用SCP :

scp <file to upload> <username>@<hostname>:<destination path>

添加到您的文件底部: 請注意,您應該有與主機無密碼連接!

scp $BACKUP_DIR/$AKT_DATUM.backup.sql.tgz [email protected]:/my/mysql/backups

這種方式是安全得多。但是如果您使用ftp,您可以使用heredoc來完成此操作,例如

ftp -n $FTP_SERVER <<End-Of-Session 
# -n option disables auto-logon 

user anonymous "$FTP_PASS" 
binary 
cd $FTP_DIR 
put "$AKT_DATUM.backup.sql.tgz" 
bye 
End-Of-Session 
  • 不要忘記添加變量,在腳本的開頭:

    FTP_PASS=password1 
    FTP_SERVER=my.ftp.server 
    FTP_DIR=/remote/dir/ 
    
+0

奧萊特我編輯我的腳本是這樣的: $ TAR -cvzf /backup/$AKT_DATUM.backup.tgz /備份/ 而 放「/backup/$AKT_DATUM.backup.tgz」 但他把它的現在Ftp服務器,但後焦油他給我的命令,並在他完成上傳我的文件後在我的FTP上被刪除 /bin/tar:/backup/201504081645.backup.tgz:文件在我們讀取時改變了 ?無效的命令 – oRxx

+0

這就是爲什麼因爲你正在歸檔/backup/$AKT_DATUM.backup.tgz所在的目錄/backup/$AKT_DATUM.backup.tgz所在的目錄,因爲你將同一個文件添加到你的存檔中,就像遞歸一樣。 保留完整的命令: '$ TAR -cvzf $ AKT_DATUM.backup.sql.tgz $ AKT_DATUM.backup.sql' 之後,您需要上傳ftp上的相同文件。改爲使用ssh,它更安全和簡單。 –

0
./backup.sh: line 11: syntax error near unexpected token `newline' 

這個錯誤是因爲你有意外的換行符。您需要將要重定向stdout的文件放在同一行上或使用反斜槓來表示續行:

$MYSQL_DUMP $DB_NAME -u $DB_USER --password=$DB_PASS > \ 
$BACKUP_DIR/$AKT_DATUM.backup.sql 
+0

工作謝謝<3 – oRxx