我有一个客户端应用程序修改文件共享上的数据文件。 基本上每次运行应用程序时,我想将数据文件备份到共享上的备份文件夹。
不幸的是,客户端和networking共享之间的联系并不总是很好。 人们通过VPN连接,执行常规文件复制可能需要很长时间。
我认为networking共享之间文件复制的标准程序是将其从第一个networking共享复制到本地机器,然后从那里到目标共享,即使这两个共享是相同的,对吗? 有什么办法可以在服务器上启动文件复制吗?
必须使用SMB客户端可用的标准命令,因为我无法控制文件服务器。
运行每隔一段时间调用一次robocopy的计划任务。 查看/MON:n或/MOT:n开关。
Repeated Copy Options /MON:n : MONitor source; run again when more than n changes seen. /MOT:m : MOnitor source; run again in m minutes Time, if changed.
只要计划的任务运行,服务器将简单地复制该文件,如果有更改的话。 但是,如果configuration文件已损坏,则只能复制损坏的数据。 可爱。
最好在robocopy之后执行文件的重命名,并在文件名中包含一个date。 这样你就有了一个文件的历史,以防你发现了某些东西。 我相信下面将按date重命名您的文件: ren myfile.foo myfile%date:~4,2%-%date:~7,2%-%date:~10%.foo Robocopy返回1,如果它复制文件没问题。 如果它不复制任何东西,则为零。
我将把batch file的逻辑作为读者的练习(主要是因为我在batch file上很糟糕)。
编辑
如果您无法访问服务器,则只需在计算机上的“计划任务”中运行Robocopy脚本即可检查文件共享以修改文件,然后在检测到更改时将其复制。 由于客户端和服务器之间的连接不可靠,请查看Robocopy的/Z开关。
/Z : Copy files in restartable mode (survive network glitch).
如果你想以某种方式使用客户端PC的触发器在服务器的CPU本身上运行备份,那么你需要访问服务器,那么更好的selectIMO就是使用Robocopy这个编辑上面的概念。