You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
4.7 KiB
139 lines
4.7 KiB
using Tiobon.Core.OPS.Tool.OPS.Tool.Helper;
|
|
using Tiobon.Core.OPS.Tool.OPS.Tool.Model;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.IO;
|
|
using Tiobon.Core.OPS.Tool.OPS.Tool.Src;
|
|
using System.Threading;
|
|
|
|
namespace Tiobon.Core.OPS.Tool.OPS.Tool.View
|
|
{
|
|
public partial class Frm_DataExport : Form
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="sSH"></param>
|
|
public Frm_DataExport(string install_dir, string install_dir_item, Main_method _method, string path, string user, string password)
|
|
{
|
|
bool IsOver = false;
|
|
|
|
InitializeComponent();
|
|
this.Path = path;
|
|
this.User = user;
|
|
this._Method = _method;
|
|
this.Install_dir = install_dir;
|
|
this.Install_dir_Item = install_dir_item;
|
|
this.Password = password;
|
|
}
|
|
public string Password { set; get; }
|
|
public bool IsOver { set; get; }
|
|
/// <summary>
|
|
public string Path { set; get; }
|
|
public string Host { set; get; }
|
|
public string User { set; get; }
|
|
public string Port { set; get; }
|
|
public Main_method _Method { set; get; }
|
|
public string Install_dir { set; get; }
|
|
public string Install_dir_Item { set; get; }
|
|
/// <summary>
|
|
/// 更新信息
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void DataExport_Load(object sender, EventArgs e) { }
|
|
/// <summary>
|
|
/// 导出功能
|
|
/// </summary>
|
|
/// <param name="host"></param>
|
|
/// <param name="user"></param>
|
|
/// <param name="password"></param>
|
|
/// <param name="port"></param>
|
|
private void ExportALl(string user, string password, string Path)
|
|
{
|
|
try
|
|
{
|
|
|
|
|
|
string path = $"{Install_dir}/back/temp{DateTime.Now.ToString("yyyyMMdd")}";
|
|
if (!_Method.sFTP.Exists(path))
|
|
{
|
|
if (!_Method.sFTP.Connected)
|
|
{
|
|
_Method.sFTP.Connect();
|
|
}
|
|
_Method.sFTP.CreateDirectory(path);
|
|
}
|
|
string file = $"{path}/ihdis{DateTime.Now.ToString("yyyyMMdd")}.sql";
|
|
string cmd = $"sudo docker-compose -f {Install_dir_Item}/docker-compose.yml exec -T mysql mysqldump -u{user} -p{password} -hlocalhost --default-character-set=utf8 --skip-triggers \"hdis\" > {file}";
|
|
if (!_Method.sSH.Connected) _Method.sSH.Connect();
|
|
_Method.sSH.Excute_cmd(cmd, out string log);
|
|
_Method.sFTP.Get(file, Path);
|
|
Const.write_log(log);
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
Const.write_log(error.ToString());
|
|
MessageBox.Show("导出错误");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 展示日志
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void Showlogs(object sender, EventArgs e)
|
|
{
|
|
Task.Factory.StartNew(() =>
|
|
{
|
|
Task.Run(() =>
|
|
{
|
|
//DataExpotor expotor = new DataExpotor(Host, User, Password, Port);
|
|
//expotor.ExportAll("ihdis", Path, out string log);
|
|
//Task.Delay(50000);
|
|
ExportALl(User, Password, Path);
|
|
Task.Delay(2000);
|
|
IsOver = true;
|
|
});
|
|
string txt = "正在下载.";
|
|
string temp = string.Empty;
|
|
int count = 0;
|
|
while (!IsOver)
|
|
{
|
|
if (count == 0)
|
|
{
|
|
temp = txt;
|
|
count += 1;
|
|
}
|
|
else if (count > 10)
|
|
{
|
|
count = 0;
|
|
}
|
|
else
|
|
{
|
|
count += 1;
|
|
temp = string.Concat(temp, ".");
|
|
}
|
|
this.Invoke(new Action(() =>
|
|
{
|
|
lb_info.Text = temp;
|
|
}));
|
|
Thread.Sleep(1000);
|
|
}
|
|
this.Invoke(new Action(() =>
|
|
{
|
|
MessageBox.Show("导出完成!");
|
|
this.Dispose();
|
|
}));
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|