生活随笔
收集整理的這篇文章主要介紹了
powershell 备份文件脚本
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
由于項目需要改寫備份文件的程序.
(原來的解決方案是用vb6 去遍歷文件, 不吐槽了)
需求1: 檢查每個文件的修改時間, 如果小于日期參數(shù), 則備份(和刪除);
需求2:保留被備份文件的目錄結(jié)構(gòu)。
linux下備份文件很簡單, 可惜我們只有windows Server。
百度不到。
為了性能花了2小時寫了個powershell 腳本...
話說MS的東西跟開源方案比起來基本上都是垃圾。
例如C#比java, windows server 比linux, powershell比bash等等...
1個xargs解決的東西我tmd寫了個循環(huán)。
mdzz.
$scriptName = "archive.ps1";
if (!($args.count -eq 3)){write-host("Usage - " + $scriptName + " <<Source Path>> <<Destination Path>> <<beforeDate>>");exit -1;
}$pathFrom = $args[0];
$pathTo = $args[1];
$dateBefore = [datetime]::ParseExact($args[2],"yyyy-MM-dd",$null);
write-host("source path is: " + $pathFrom);
write-host("destination path is: " + $pathTo);
write-host("archive files whose modified date is before: " + $dateBefore);if (!((Test-path -path $pathFrom) -and (Test-path -path $pathTo))){write-host("source path or destination path is not existed!");exit -1;
}$pathCopyTo = "";
$pathFromLen = $pathFrom.Length;
$LenGap = 0;
$LenGap2 = 0;ls -r $pathFrom | ?{$_.LastWriteTime -lt $dateBefore } | Foreach-Object{$lenGap = $_.FullName.Length - $pathFromLen - $_.Name.Length - 1;$pathCopyTo = $PathTo + $_.FullName.Substring($pathFromLen, $lenGap);write-host("copying " + $_.FullName + " to " + $pathCopyTo);if(!(Test-path -path $pathCopyTo)){write-host("creating folder " + $pathCopyTo );mkdir -Pa $pathCopyTo;}copy-item $_.FullName $pathCopyTo -Force;
}exit 0;
總結(jié)
以上是生活随笔為你收集整理的powershell 备份文件脚本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。