【发布时间】:2014-06-14 01:06:00
【问题描述】:
我在备份一个包含大量 (10 000 000 +) 个小文件的共享时遇到了很大的问题。据我所知,这些文件的总兆字节不是那么大,但最大的问题是文件数量。
首先要做的事情: - 共享或多或少是“常规”,因此有一个根目录,其中包含 30 个目录。所有这些第一级目录都包含日期格式为:yyMMdd 的子文件夹。
我创建了一些 PowerShell 脚本来根据名称中的日期压缩这些目录,所以,现在,我只在 .zip 文件上运行备份,但是...
我观察到脚本运行时间每天都在增加(因为这个脚本仍然需要检查所有文件夹)。而且文件夹的数量每天都在增加
我的问题是: 是否有任何 - 比方说 - 标记以这种方式使用它: - 当脚本运行并将目录添加到存档时,将今天的文件夹标记为“已存档”,以便在下次脚本运行时跳过那些已经存档的文件夹。
这将给我每天或多或少相同的脚本运行时间,因为它将或多或少地“检查和归档”尚未归档的目录数量。
谁能给点建议?任何想法?我现在没有办法了。
脚本不是很复杂:
$zip = "C:\apps\7-zip\7z.exe"
$days_behind = -1
$folder_data = (Get-Date).AddDays($days_behind).ToString("yyMMdd")
$archive = "X:\SHARE_ARCH\Archive_$folder_data.zip"
$to_zip = (gci X:\SHARE_ROOT -Recurse | ?{ $_.PSIsContainer } | ?{$_.Name -contains ($folder_data)}).FullName
$options = "a", "-tzip", "-y", $archive, $to_zip;
$zip $options;
我认为最有问题的是这一行:
$to_zip = (gci X:\SHARE_ROOT -Recurse | ?{ $.PSIsContainer } | ?{$.Name -contains ($folder_data)}).FullName
【问题讨论】:
-
您的脚本是什么样的,您如何检查文件夹以及检查什么?给我们看代码
-
添加到原帖
-
你运行的是什么版本的powershell?
-
谢谢大家,我重新设计了“搜索查询”,现在它可以按我的意愿工作了。
-
您是否尝试过@TheMadTechnician 或我的解决方案(如果是,哪个更快)?
标签: powershell backup archive