c#实现调用XCopy命令实现目录备份的应用代码实例

编程开发
104
C#
XCopy命令
文件夹备份
实时同步备
目录备份

元旦前接了一单小私活,之所以找到我大概是因为是 TK精灵-进程守护工具 的用户,觉得体验还不错就找到了我这边希望定制一款文件夹备份小工具.

用户需求大概描述

  1. 核心需求A、B两个目录 监听A的所有文件内容变动备份至B目录
  2. 界面做好看点,集成多个备份任务(原本用的是运行多个bat脚本执行xcpoy进行备份)
  3. 界面需要输出运行日志 以及失败的日志记录 便于后续排查

原本听完需求觉得功能挺简单的,元旦放完假后就开始开发,很快就做出了雏形功能,功能实现的也比较简单,就是简单的目录遍历 然后加一个目录监听。自我测试感觉还挺不错的,于是就交给用户试用,然而用户反馈软件使用却不太理想,比原先使用的xcpoy方式要慢非常多,中间还电话沟通了几次需求,沟通过程总体给人感觉还是很舒适的,理解万岁。

做了很多次备份效率测试,最终结果都是.net 提供的目录遍历 进行大批量(大概有200多GB的数据量)进行复制备份的效率始终比xcopy方式差非常多,最终还是使用了c#调用cmd执行xcpoy的方式进行被反然后读取返回结果输出到前端日志界面。

以下是实现c#调用xcopy备份目录的核心代码

Process XCopyProcess;

string xcopy = $"xcopy \"{this.sourcePath}\" \"{this.outputPath}\" /c/e/I/d/h/r/y";
ProcessStartInfo processStartInfo = new ProcessStartInfo()
{
     UseShellExecute = false, 
     FileName = "cmd.exe",
     CreateNoWindow = true,
     RedirectStandardInput = true,  
     RedirectStandardError = true,
     RedirectStandardOutput = true
};

this.XCopyProcess.StartInfo = processStartInfo;
this.XCopyProcess.Start();
string cmdstr = xcopy;
await this.XCopyProcess.StandardInput.WriteLineAsync(cmdstr); 
this.XCopyProcess.StandardInput.AutoFlush = true; 
await this.XCopyProcess.WaitForExitAsync();

完工的界面效果图

c#实现调用XCopy命令实现目录备份的应用代码实例

vs编译时报错 不安全代码只会在使用 /unsafe 编译的情况下出现
C#编程怎么使用正则表达式提取或匹配内容
 C# 实现 Rsa字符串非对称加密简单例子
 C#实现图像以中心点任意角度旋转
WPF 数据转换器 IValueConverter例子
C# 去掉去除文本字符中的空格\换行\html标签
Web上传文件请求报错超过了最大请求长度
c# 获取本机电脑名称、Ip信息
C#如何利用(Windows Script Host)COM组件来创建快捷方式
VS错误提示无法嵌入互操作类型“IWshShell_ClassClass”,请改用适用的接口的解决方法
C# 操作DOS添加端口防火墙名单
C# 引用NPOI组件实现泛型实体集合转换成表格Excel
暂无相关内容...
C#结合虫洞软件(Wormhole)实现自动登录到手机版百度网盘的流程源码
.NET5+C# WPF实现图片添加倾斜文字平铺水印工具源码
[人脸检测]基于C#OpenCvSharp+haarcascade人脸、人眼模型实现人脸检测源码
基于.NET4.0实现的目录文件新增监视并自动化上传至ftp完整流程工具源码
C#基于OpenCVSharp实现图片对比相似度百分比源码下载
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删