在ASP.NET将程序中将上传的附件存储到另一台文件服务器上的实现

假定有两台服务器:A和B,其中A为Web服务器(IP:192.123.1.1, 为iis发布程序的服务器 ),B为文件服务器(IP: 192.123.2.2)

  1. 在文件服务器B中某个磁盘下创建一个共享文件夹DocShare,同时在该服务器上创建一个用户,如docUser, 并给此用户分配共享文件夹的读写权限
  2. 在WEB服务器A中也创建同一个用户,如 docUser, 同时密码与B中的docUser必须保持一致。并将用户docUser加入到IIS_WPG用户组
  3. 创建一个新的应用程序池docPool, 并设置权限认证,输入用户名docUser及密码。
  4. 将IIS发布的程序其应用程序池设置为docPool
  5. 在IIS发布的程序根目录下添加一个虚拟目录,名称为files,虚拟目录映射到服务器B的共享目录路径,如:\192.123.2.2DocShare 同时设置特定用户访问,输入用户名docUser,密码。
  6. 在程序代码中,设置文件的保存路径为 Server.MapPath(“files”) 即:虚拟目录的路径。

公司服务器使用的挂载盘有问题经常出现数据损坏问题,故需要进行文件备份操作。

备份的数据为用户使用应用时上传的附件,其更新时间为其上传时间,并且上传后不会进行修改操作,所以处理方案为:先手动复制文件至备份文件目录下,windows配置定时任务每日晚上11点开始执行备份操作,备份近2天上传的文件,旧数据不会删除。

bat语句如下:

ROBOCOPY D:originalPath D:ackupPath /E /MAXAGE:2 /R:5 /LOG+:D:ackupLog.txt
说明:
路径前者为需要备份的文件路径,后者为备份路径。
/E  表示复制子目录,包括空的子目录(不设置这个就只复制当前文件夹文件不复制子文件夹)
/MAXAGE:2 表示最长的文件存在时间,排除早于2天的文件(没有这个就是全部复制)
/R:5 表示失败副本的重试次数(建议要设,默认值为一百万 = =)
/LOG+:Dxxx.txt  将状态输出到日志文件(附加到现有日志中)
更多用法可在cmd中输入:help robocopy查看
测试结果说明:
每次运行只拷贝近2天内修改的文件,对早于2天的文件不会进行任何操作。
原目录下近2天文件被修改,同步时会在相应备份文件中执行同样的修改操作。
原目录下文件被删除,对应的备份文件不受影响。
每次执行后同步了哪些文件可查看日志。其中,多余文件和失败字节数表示备份目录有、而原目录没有的文件。
windows定时任务配置步骤:
可详见http://blog.csdn.net/woshixuye/article/details/18050769
---------------------
作者:屎大小仙女
来源:CSDN
原文:https://blog.csdn.net/wxzhangxin/article/details/78215347
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/tianxiang2046/p/4705275.html