【问题标题】:Speed Up Xcopy in Batch批量加速 Xcopy
【发布时间】:2015-10-01 13:52:16
【问题描述】:

所以我正在尝试从我的应用程序中复制数据的备份。我编写了下面的批处理脚本来执行此操作,但该脚本需要永远运行。

我在凌晨 1 点启动批处理脚本,它仍在早上 8:30 运行。这对我来说似乎很奇怪,因为当我在 Windows 文件资源管理器中手动复制我的应用程序的备份时,它会在 7-15 分钟内复制,具体取决于网络流量。

REM%backupcmd% "C:\Program Files\App\App Server\Data\Backups" "%drive%\" 行。那是我用来备份数据的原始批处理脚本行,它一直有效地工作到一个月前。

所以我用/d 尝试了xcopy 命令,所以它只会复制在该日期(当前日期)或之后更改的源文件,并且我正在复制的备份是在 12 进行的:每晚凌晨 1 点,复制备份脚本从凌晨 1 点开始。

任何关于如何加快我的xcopy 的建议将不胜感激。如果您认为我也应该使用powershell 来完成此任务,我也愿意接受该选项。

@echo off
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set yyyy=%ldt:~0,4%
set mm=%ldt:~4,2%
set dd=%ldt:~6,2%

:: variables
set drive=Z:\RootSoft\App\Data Backups
set backupcmd=xcopy /s /c /d /e /h /i /r /y /f /z

echo ### Backing up Backup...
REM %backupcmd% "C:\Program Files\App\App Server\Data\Backups" "%drive%\"
xcopy "C:\Program Files\App\App Server\Data\Backups" "Z:\RootSoft\App\Data Backups" /D:%mm%-%dd%-%yyyy% /s /c /e /h /i /r /y /f /z


:: use below syntax to backup other directories...
:: %backupcmd% "...source directory..." "%drive%\...destination dir..."

echo Backup Complete!
echo %errorlevel%
pause

【问题讨论】:

  • 如果您等待的时间足够长,您的脚本是否真的完成了?您确定它没有因错误或等待用户输入而挂起吗?
  • 我已经让脚本运行了 24 小时,直到下一个计划的脚本运行时间开始,但它仍然没有完成。该脚本从不要求用户输入,/c 使xcopy 在复制时忽略错误。

标签: windows batch-file cmd xcopy


【解决方案1】:

您可以尝试使用ROBOCOPY/MT 开关来加速复制。

您还可以通过TimeThis 可以找到here(无需安装,只需在当前批处理文件夹中提取exe7z 中的TimeThis 来进行一些测试)

【讨论】:

  • 酷,我看看能不能加快复制速度
  • 它大大加快了复制速度!
  • 谢谢。 ROBOCOPY 与 XCOPY 相比,使用约 2500 个小文件实现了 3 倍的加速
【解决方案2】:
  • netsh interface tcp show global

  • netsh int tcp set heuristics disabled

  • netsh int tcp set global autotuninglevel=disabled
  • netsh int ip set global taskoffload=disabled

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    相关资源
    最近更新 更多