@echo off set path=%SystemRoot%\system32;%SystemRoot%;%ProgramFiles%\7-zip set host=218.88.206.110 set tempdir=C:\CIMation\tmp_trans move C:\CIMation\CMQMR\*.xml %tempdir% if exist %tempdir%\XML-archive.tar.xz ( 7z e %tempdir%\XML-archive.tar.xz -o%tempdir% del /q %tempdir%\XML-archive.tar.xz ) 7z a -sdel -ttar %tempdir%\XML-archive.tar %tempdir%\*.xml 7z a -sdel -txz %tempdir%\XML-archive.tar.xz %tempdir%\XML-archive.tar ping -n 1 "%host%" | findstr /r /c:"[0-9]*ms" if %errorlevel% == 0 ( "C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /script="C:\Program Files (x86)\WinSCP\5-xml-use-7z-archive-and-update.sh" ) else ( echo VFPA server: %host% network PING Failure. echo .. rem echo ...Waiting for 1 min, end this process. rem ping 127.0.0.1 -n 60 >nul )
通过一段时间使用,发现一些逻辑上的问题: 在上传服务器不可达的状况下, 上传失败的文件在本地会积累不少。虽然最终会被压缩,但在周期性计划执行期间,每次被解压后,将会占用磁盘空间;逻辑上在7zip运行过程当中,甚至会产生2份未压缩的打包文件; 极端状况下(新增文件足够多、或上传服务器中断时间过长), 将会耗尽磁盘全部空间。服务器
在这种状况下, 须要另加判断逻辑:若是未上传的打包文件超过5M,就将其加注时间戳更名,再另产生新文件; 更名后的打包文件,另行处理。this
修改版本以下:code
@echo off set today=%date:~10,4%-%date:~4,2%-%date:~7,2% set ctime=%TIME: =0% set tname=%today%-%ctime:~0,2%%ctime:~3,2%%ctime:~6,2% set path=%SystemRoot%\system32;%SystemRoot%;%ProgramFiles%\7-zip set HP-host=218.88.206.110 set tempdir=C:\CIMation\tmp_trans if exist C:\CIMation\CMQMR\*.xml ( move C:\CIMation\CMQMR\*.xml %tempdir% if exist %tempdir%\XML-archive.tar.xz ( for /f "delims=" %%i in ("%tempdir%\XML-archive.tar.xz") do ( if %%~zi GTR 5120000 ( ren %tempdir%\XML-archive.tar.xz XML-archive-%tname%.tar.xz ) else ( 7z e %tempdir%\XML-archive.tar.xz -o%tempdir% del /q %tempdir%\XML-archive.tar.xz ) ) ) 7z a -sdel -ttar %tempdir%\XML-archive.tar %tempdir%\*.xml 7z a -sdel -txz %tempdir%\XML-archive.tar.xz %tempdir%\XML-archive.tar ) ping -n 2 "%HP-host%" | findstr /r /c:"[0-9]*ms" if exist %tempdir%\XML-archive.tar.xz ( if %errorlevel% == 0 ( cd "C:\Program Files (x86)\WinSCP" WinSCP.exe /console /script=5-xml-use-7z-archive-and-upload.sh ) else ( echo VFPA server: Network PING Failure. echo .. ) )
不得不说,LZMA2压缩率真变态,对文本文件竟然达到了将近100:1 。 我一个压缩后不到100M的文件,解压后竟然有10GB ...server