1.背景 windows server 2008 下 每天會有 *.sql數據文件 需要上傳到linux 中的mysql資料庫中 而運維人員是在 windows server 下使用 xshell 連接 linux 下進行導入導出來進行操作 客戶要求:1.點擊桌面上的程式達成 上傳到linux下的m ...
windows server 2008 下 每天會有 *.sql數據文件
需要上傳到linux 中的mysql資料庫中
而運維人員是在 windows server 下使用 xshell 連接 linux 下進行導入導出來進行操作
客戶要求:1.點擊桌面上的程式達成 上傳到linux下的mysql資料庫中。
2.要解決的問題
1.通過什麼來讓數據文件 上傳到 linux 下
2.怎麼才可以點擊一下就達成 window下的數據文件 上傳到linux下
3.數據文件到達後 怎麼做才可以 在window下 讓數據同步到資料庫中
1.解決第一個問題
1.通過什麼來讓數據文件 上傳到 linux 下
可用方法 FTP samba NFS 文件共用服務
因為問題2 要在window下實行 優先想到 使用ftp 因為 ftp在windows 下可以通過cmd 直接執行
2.解決第二個問題
怎麼才可以點擊一下就達成 window下的數據文件 上傳到linux下
問題一、如何才可以 把windows下的數據文件上傳到ftp上呢???
問題二、我怎麼才可以點擊一下就可以完成這樣的操作呢
我想到了windows下的批處理文件.bat
首先 ftp 客戶端是windows下自帶的
所以可以直接調用 但是我又需要在ftp下有這麼多的操作怎麼才可以呢
ftp -s腳本 可以把你在ftp的指令 直接寫入文件中 而用-s 直接在ftp下運行
但是又有了一個新的問題
每次上傳一個sql文件都要 yes 一下 ???
這個問題困擾了我很久
直到我發現了這個命令
交互模式:關閉
3.解決第三個問題
數據文件到達linux 怎麼樣才可以 在windows操作同步到資料庫中呢???
首先 :在linux下如果同步到庫中呢
mysql -uroot -p 庫名 < 路徑
就這一個指令 ,我完全可以在linux寫的shell腳本中去運行
這樣就解決了備份 但是 你怎麼 在windows端下 進行操作呢
我首先想到了putty.exe
如果 可以在cmd 直接調用putty 我就直接可以寫批處理文件 來達成我要做的事情
putty登錄linux需要什麼
ip地址 用戶名 密碼 埠 我怎麼才可以把他們一起 啟動呢
putty.exe -ssh -pw 123789456 [email protected]
但是我們的最終目的是什麼???
在windows 下運行 shell 腳本 同步資料庫
putty.exe -m 腳本
putty.exe -ssh -pw 123789456 -m 腳本名字 [email protected]
這樣就可以 在windows 下運行 shell 腳本 同步 linux 資料庫
下麵放成品的代碼 代碼只是為了功能 完全可以再縮短很多
註意:將這個批處理 與putty.exe 放到有sql的文件夾下運行
@echo off
color 0a
cd /d %~dp0
if exist *.sql (goto next) else (goto baddir)
:next
@Echo Off
color 3E
set /p var=請輸入你要配置的IP地址:
set /p pass=請輸入root密碼:
cls
title 阿姆斯特朗噴氣式阿姆斯特朗上傳同步工具(2018.4.21)
echo.【功能說明】
echo.通過FTP把當前目錄下的.sql文件同步到目標mysql中
echo.一鍵搭建環境、一鍵上傳、一鍵同步增加工作效率
echo.
echo.【特別提醒】
echo.1. 如果首次運行,獲取秘鑰請手動點擊確定
echo.2. 工具使用順序(1)(2)單獨使用(2)會無效
echo.3. 需要保證yum源可以正常安裝FTP服務
echo 4. window7下完美運行,win10下可能會出現putty啟動慢
echo.5. sql文件預設存放在/LT/date下
echo.6. 同步完成預設放進/LT/lajixiang下 預設保存5天
echo.7. 如sql過大,上傳時間長屬於正常現象,請勿關閉
echo.8. 最終解釋權為作者所有
echo. 如果當前伺服器安裝了FTP服務請謹慎使用 謹防數據丟失!!
echo.
echo.
:on
cd /d %~dp0
choice /c 1234 /m "請輸入編號:(1)創建;(2)同步;(3)卸載;(4)關閉;
if %errorlevel%==4 goto guanbi
if %errorlevel%==3 goto xiezai
if %errorlevel%==2 goto tongbu
if %errorlevel%==1 goto dajian
:dajian
@echo off
echo 搭建環境並上傳......
echo ^#!/bin/bash^ >linux.sh
echo ^yum -y install vsftpd^ >>linux.sh
echo ^useradd -p 123789456 litong^ >>linux.sh
echo ^echo 'litong:123789456'^|chpasswd^ >>linux.sh
echo ^mkdir /LT/data -p^ >>linux.sh
echo ^mkdir /LT/lajixiang -p^ >>linux.sh
echo ^chmod 777 /LT/data^ >>linux.sh
echo ^chmod 777 /LT/lajixiang^ >>linux.sh
echo ^echo anonymous_enable=YES ^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo local_enable=YES ^>^> /etc/vsftpd/vsftpd.conf ^ >>linux.sh
echo ^echo write_enable=YES ^>^> /etc/vsftpd/vsftpd.conf ^ >>linux.sh
echo ^echo local_umask=022 ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo dirmessage_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo xferlog_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo connect_from_port_20=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo xferlog_std_format=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo listen=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo pam_service_name=vsftpd ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo userlist_enable=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo tcp_wrappers=YES ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo local_root=/LT/data ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo userlist_deny=NO ^>^> /etc/vsftpd/vsftpd.conf^ >>linux.sh
echo ^echo litong ^> /etc/vsftpd/user_list^ >>linux.sh
echo ^service iptables stop^ >>linux.sh
echo ^setenforce 0^ >>linux.sh
echo ^service vsftpd restart^ >>linux.sh
putty.exe -ssh -pw %pass% -m linux.sh root@%var%
del linux.sh
Echo open %var% >up
Echo litong>>up
Echo 123789456>>up
Echo prompt >>up
Echo mput *.sql>>up
Echo bye>>up
FTP -s:up
del up
echo 上傳成功
goto on
:tongbu
pause
set /p zhanghu=資料庫賬戶:
set /p mima=資料庫密碼:
set /p kuming=將要同步的庫名:
del
echo 同步到資料庫中......
echo #/bin/bash >peizhi.sh
echo mysql -u%zhanghu% -p%mima% %kuming% ^</LT/data/*.sql >>peizhi.sh
echo mv /LT/data/*.sql /LT/lajixiang/ >>peizhi.sh
echo find /lt/lajixiang/*.sql -mtime +5 ^|xargs rm -rf >>peizhi.sh
putty.exe -ssh -pw %pass% -m peizhi.sh root@%var%
del peizhi.sh
echo 同步成功
goto on
:xiezai
echo 卸載環境中......
echo rm -r /LT >xiezaihuanjing.sh
echo userdel -r litong >>xiezaihuanjing.sh
echo yum -y remove vsftpd >>xiezaihuanjing.sh
putty.exe -ssh -pw %pass% -m xiezaihuanjing.sh root@%var%
del xiezaihuanjing.sh
echo 卸載成功
goto on
:baddir
echo.
echo 警告:請將本工具放在要上傳的sql文件夾下再運行,否則將出現不可預料的後果!
echo.
echo (例:若sql文件在目錄為【D:\date】,則將該工具放在【D:\date】目錄下後再執行。)
echo.
pause
echo 退出腳本
exit
:guanbi
exit
以上腳本中有很多可以優化的地方 只是自己不願在去弄了 有興趣的可以 優化一下 比如 shell中的查找替換可以用sed來做
轉載請標註