Windows

網路共享上的桌面備份維護

  • April 22, 2014

我已經在 Windows 7 Professional 桌面上配置了 Windows 備份和還原功能,以便在 Windows Server 2012 上的網路共享上進行每日備份。(順便說一句,遺憾的是,該實用程序沒有使用目前登錄使用者憑據的選項,尤其是 Active目錄使用者的憑據。相反,必須輸入固定使用者的憑據。因此,在 Active Directory 中更改密碼時不會更新。)該實用程序也沒有任何自動刪除舊備份版本的維護機制。因此會產生大量過時的數據,迅速填滿伺服器的磁碟空間。

現在我在目錄結構中遇到了這種情況(這僅適用於一個使用者,但“使用者”目錄中有許多其他使用者的文件夾):

Users  
├─agnes.microt  
│   ├─AGNES-PC  
│   │   ├─Backup Set 2014-02-24 060001  
│   │   │   ├─Backup Files 2014-02-24 060001  
│   │   │   ├─Backup Files 2014-02-25 091044  
│   │   │   ├─Backup Files 2014-02-26 092458  
│   │   │   └─Catalogs  
│   │   └─Backup Set 2014-02-27 091933  
│   │ ++      ├─Backup Files 2014-02-27 091933  
│   │ ++      └─Catalogs  

我想要做的是刪除(通過在每日計劃任務中執行批處理文件)所有日期早於一天的“備份集”文件夾,只為每個使用者留下最新的備份集。這很簡單,但也有幾天不在公司的使用者。因此,他們最新的備份集應該保留在伺服器上,儘管它已經過時。

我做了這麼一批:

forfiles /D -1 /P D:\User /M "Backup Set *" 
   /S /C "cmd /c if @ISDIR==TRUE (dir /b /a:d | find /c \"Backup Set\") 
   | (if not %1==\"1\" (rmdir /s /q @file))"

我不知道如何將“dir+find”結果傳遞給它後面的“if”命令。

任何幫助都是不言而喻的。以及有關此問題/問題主題的任何其他開放思想建議。

好的,我設法使用 PowerShell 並基於http://nisanthkv.blog.com/2012/07/30/removing-backup-folders-solution-1
來做到這 一點,結果如下:

Get-ChildItem MediaID.bin -Path D:\Users -Recurse | ForEach-Object {$_.DirectoryName} | ForEach-Object {Get-ChildItem "Backup Set*" -Path $_ | Sort-Object LastWriteTime -descending | Select-Object -Skip 1 | ForEach-Object {“Removing file $($_.FullName)”; Remove-Item $_.FullName -Recurse -Force}}

我只是問作業系統哪個目錄是最新的,然後從那裡開始。

批處理(笨重,但它起作用——它通過從最舊到最新排序來找到最新的,將文件夾移動到臨時目錄,將最新的移回,然後刪除臨時目錄):

FOR /F " tokens=*" %%i IN ('dir "c:\temp\backup*" /b /ad-h /od') DO (SET a=%%i) 
mkdir temp
FOR /F " tokens=*" %%i IN ('dir /b /ad-h /od') DO (move "%%i" temp)
cd temp
move "%a%" ..
cd ..
rd /s /q temp 

PowerShell(查找最新目錄,刪除不是最新的目錄):

$latest = get-childitem c:\temp\backup* | ? { $_.PSIsContainer } | sort CreationTime -desc | select -f 1
Get-ChildItem -Path  'C:\temp\backup*' -Recurse | ? { $_.PSIsContainer } | Select -ExpandProperty FullName | Where {$_ -notlike $latest} |sort length -Descending | Remove-Item -force 

引用自:https://serverfault.com/questions/579347