我正在使用PowerShell对上一天修改的所有文件进行夜间备份。
目标是创建一个未压缩的 zip(或任何其他格式),使用PowerShell将备份文件夹中的所有内容分组到一个文件中。
以下代码适用于压缩,但速度太慢:
function Add-Zip
{
param([string]$zipfilename)
if(-not (test-path($zipfilename)))
{
set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
(dir $zipfilename).IsReadOnly = $false
}
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
foreach($file in $input)
{
$zipPackage.CopyHere($file.FullName)
Start-sleep -milliseconds 1000
#500 milliseconds was too short....
}
}
有什么想法吗?
谢谢!
答案 0 :(得分:5)
我建议将powershell与7-Zip命令行结合使用。 7-Zip有command line option,允许无压缩。
-mx0
答案 1 :(得分:4)
PowerShell Community Extensions有一个Write-Tar
cmdlet,可能会在这里使用。
答案 2 :(得分:0)
借鉴Eld's answer到another question,我想出了:
function ZipFiles( $zipfilename, $sourcedir )
{
[Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem")
$compressionLevel = [System.IO.Compression.CompressionLevel]::NoCompression
[System.IO.Compression.ZipFile]::CreateFromDirectory($sourcedir,
$zipfilename, $compressionLevel, $false)
}
Eld还谈到了他的解决方案,这也适用于此:
与Powershell 3和.NET 4.5一起使用的纯Powershell替代方案(如果可以使用的话):
他回答的更改是为该级别指定NoCompression
而不是Optimal
。