2010-10-11 64 views
0

我想對我的Projects文件夾進行備份。它主要包含.NET項目的子文件夾(VS2005,VS08和VS10)。執行備份前清理.net項目文件夾

做備份前應該刪除什麼(例如TestResults,bin,obj);如果有什麼我不應該刪除,但應該忽略,那可能是什麼;最重要的是,如何最好地實現整個過程的自動化(我正在考慮批處理文件或更好)?

我需要注意哪些問題?

回答

2

(編輯:看起來像其他人,包括Jeff Atwood,創建工具做到這一點。)

好了,想通了,這是很難遞歸搜索子文件夾,並刪除那些匹配使用批處理文件和cmd模式文件夾。幸運的是,PowerShell的(這是默認安裝在Windows 7上,IIRC)可以做到這一點(kudos):

get-childitem C:\Projects\* -include TestResults -recurse | remove-item -recurse -force 

這是基於關閉Remove-Item幫助條目的例子4。它遞歸地搜索名爲「TestResults」的任何東西(文件或文件夾)(如果需要,可以在其中放入通配符)並將結果傳遞給Remove-Item命令,該命令將刪除它們。要測試它,只需將管道移除到Remove-Item即可。

我們如何爲每個語句刪除多個文件夾?輸入文件夾的PowerShell的array syntax名單:

get-childitem C:\Projects\* -include bin,obj,TestResults -recurse | remove-item -recurse -force 

您可以從命令提示符下運行這樣或類似像這樣(reference

powershell.exe -noexit get-childitem C:\Projects\* -include bin,obj,TestResults -recurse | remove-item -recurse 

明顯免責聲明

不要使用此方法如果您將必要文件保存在名爲bin,obj等的文件夾或文件中

3

我會推薦使用源代碼管理和備份源代碼管理庫。如果這只是個人項目,我會建議SubversionMercurial。它們易於使用,與Windows資源管理器集成,可以設置爲忽略某些目錄,並提供其他備份以外的其他well published benefits

如果備份源代碼庫,則不需要自行備份項目。

至於你可能會考慮忽略的其他事情,你可以放心地忽略.user和.suo文件,這些只是用戶設置,比如你在項目中打開了哪些文件。根據您的開發環境,您也可以忽略.sln文件(解決方案文件)。解決方案文件很容易重建,如果您在團隊環境中工作,可能會更容易擁有單個解決方案。

+0

好點。我已經使用版本控制(SVN),但我不同意這會使備份變得不必要 - 我經常在這些文件夾中保存與項目相關的大型文件(但對於構建它們或使用它們不是必需的)。我不想在SVN中使用這些文件,但我想要備份它們以防我需要恢復計算機。 – Pat 2010-10-11 19:33:41

+0

出於好奇,當你說「大」時,你說話有多大?也許你可以把這些文件備份起來?他們是你的項目的一部分嗎?或者解決方案的一部分?如果他們是解決方案的一部分,他們可以在硬盤上的任何位置,包括在Dropbox目錄中:)。對於我個人的機器,我使用Carbonite進行備份。它使我不必擔心備份垃圾文件(如bin,obj和TestResults)。 – Brian 2010-10-11 22:45:53

+0

好的,這些文件不是非常大,但有時它們是200MB視頻或700MB Linux ISO - 它們確實不屬於版本控制。 目前,我的項目文件夾大約7GB。當我運行PowerShell腳本來刪除三個命名文件夾時,它減少到5.5GB。如果我可以節省1.5GB不必要的備份,我說這是一件好事(尤其是因爲它是通過網絡備份的)。 – Pat 2010-10-12 16:56:46