Windows 7 以舊版檔案覆蓋Linux Ubuntu在NFTS分割區所建立檔案的解決方式

1 前言

筆者於2013年3月初所日常使用的筆電是安裝雙系統,分別是先安裝到第一個硬碟partition分割區的 Windows 7 以及後續安裝到第二個硬碟分割區的 Linux Ubuntu 12.04。而且日常使用的是 Ubuntu 系統,萬不得已才於 Ubuntu 中執行虛擬機器管理軟體 VMware Workstation 9 來開啟安裝 Windows 7 的虛擬機器。同時,筆者的筆電硬碟容量為 500GB,所以另外再分割兩個共用的 NTFS 資料分割區。而且在 Ubuntu 中執行 Windows 7 的虛擬機器時也可以存取這兩個 NTFS 資料分割區的資料。

這也意謂者,筆者很少直接在開機時選擇以第一個硬碟分割區中所安裝的 Windows 7。但是 Windows 7時常釋出許多的更新,以及在某些情況下,直接安裝在第一個硬碟分割區的 Windows 7 系統在投影至外接投影機時是比較穩定的。因此在2013年3月初的某一天,筆者心血來潮好心的想把安裝在第一個硬碟分割區的 Window 7 進行更新。於是就直接在啟動電腦電源時,選擇以 Windows 7來開機。

沒想到,在啟動 Windows 7時,系統的螢幕突然出現一堆訊息,大意是說硬碟出現嚴重的錯誤,並且系統就立即的進行檢查與自動「修復」的作業,此時畫面就逐一的顯示每一個分割區中的每一個檔案名稱。結果當 Windows 7開機完成後,我發現之前在 Ubuntu系統中於兩個 NTFS 資料分割區中所建立的新檔案全部消失不見了。天哪!!當下真是欲哭無淚,痛不欲生啊!!細細回想,以前似乎也同樣發生過類似的情況,只不過,過去那一次所消失的檔案重要性沒有那麼嚴重,但這一次消失的檔案都沒有備份,而且很重要,真得是讓我血脈噴張,火冒十丈!

再細細回想,原因可能就是出在 Windows 7 預設會開啟建立系統還原點的功能,而且是為每一個 NTFS分割區都自動開啟建立系統還原點的功能,而且是每一天皆儲存最新的還原點資料檔。因此當例如在1/15日以第一個硬碟分割區的Windows 7開機後,Windows 7為每一個 NTFS分割區所建立的系統還原點是1/15日的資料。此後,若一直使用 Ubuntu 開機,並持續對每一個NTFS 分割區新建與更新許多的資料檔。又,假設直到 1/31日才又重新選擇以第一硬碟分割區中的 Windows 7開機,則 Winodws 7便會先檢查 1/15所儲存的還原點資料是否與現存的每一NTFS 分割區的資料檔案內容是否一致,當發現不一致時,就會「自動進行復原」,因此就會將舊資料檔覆蓋掉1/15至1/31 期間所建立之新資料檔的慘況,也就是說,新建立或更新的資料皆會完全消失不見。

本文就是在說明如何解決此一天大的問題。

2 解決方式一:關閉 Windows 7 建立系統還原的功能

依微軟有關系統保護及系統還原點的原始文件(請按此處的連結)的說明,Windows 7預設會為每一個硬碟分割區開啟系統保護,每日建立系統還原點,建立還原點時會備份當下要被還原檔案的備份,而這些所建立的備份還原檔案,微軟稱為舊版檔案。若想要取消此一自動建立還原點的功能,則要透過如下的方式來設定:

  1. 在Windows 7中,點選「開始」的微軟圖示,再於「電腦」上點選滑鼠右鍵,再點按「內容」。
  2. 於畫面中的左邊窗格中,點按「系統保護」,此時系統會要求輸入Administrator的密碼以取得 Administrator的權限。
  3. 再點選每一個共用的 NTFS 資料分割區(磁碟機),並點按「設定」。
  4. 再點按「關閉系統保護」後再點按「確定」。

如此就可以取消對某一NFTS分割區進行建立系統還原點的功能。

下圖是在Windows XP中要關閉系統保護的畫面:

Windows XP 關閉系統保護(復原)功能  

又,建立還原點資料的儲存位置是放在每一個分割區中的一個隱藏系統目錄System Volume Information。如下圖所示。

20-SystemVolumeInformation  

(註:上圖中的System.dll那個目錄是否某些防毒軟體所建立的目錄)。若取消Windows系統自動建立系統還原點的功能後,System Volume Inforamtion 此一目錄就可以被刪除了。當然,要刪除此一目錄前,並須取消隱藏此一目錄,以便讓使用者可以看得見此一目錄。若使用者是從Windows 開機,則開啟檔案總管後,於Windows XP環境下,點選「工具/文件夾選項/檢視」去取消勾選隱藏檔案的選項;而在Windows 7的環境下,在檔案總管畫面中,點選「組合管理/資料夾和搜尋選項/檢視」去取消勾選隱藏檔案的選項

若是由Linux系統開機,則進入檔案總管後,點選「檢視/顯示隱藏檔案」後就可以顯示隱藏的檔案了。

3 解決方式二:以後只從 Linux Ubuntu 中開啟 Windows 虛擬機器

由於筆者實在被微軟的Windows 系統捉弄過太多次,有過太多不堪回首的慘痛經驗,筆者非常不信任 Windows 作業系統,因此筆者就採取斬草除根的方式。也就是狠下心來,將原本筆電中第一個硬碟分割區所安裝的 Windows 7給重新格式化成一個 NTFS 分割區,專門做為共用資料分割區用。這也意謂者筆者的筆電只留下由 Ubuntu 系統來開機。

若要使用 Windows 作業系統時,就利用在 Ubuntu 中筆者所安裝的 VMware Workstation 或是 Oracel Virtaulbox 來開啟 Windows 虛擬機器。然後這些 Windows 虛擬機器也都可以順利的共享與存取每一個 NFTS 資料分割區。

4 解決方式選擇的說明

由於上述的解決方式二確實是有一些極端激烈,如果讀者您有如下的需求,則建議讀者採用解決方式一:

  1. 若您要安裝的Windows 應用軟體不能安裝在虛擬機器中時,而且一定要使用這些應用軟體時,則就要採用上述的解決方式一。這些軟體大多屬於多媒體的軟體,例如, iClone影片製作軟體目前就無法安裝於虛擬機器中,原因是該軟體的安裝程式會判斷出該機器是否是虛擬機器,若是為虛擬機器,就不允許安裝。

不管是採用那一種解決的方式,唯一不變且要時常做的一件事,那就是要隨時進行資料的備份,絕對不要偷賴!

5 Windows 7 預設開啟建立系統還原點的理念分析

Windows 7建立系統還原點的功能,若純就技術的層次來說,本來是一件不錯的事,但是現在所處的磁碟資料分割區的處理需求環境已有所變化,這種原本看似很好的功能,再加上 Windows 7過度雞婆,不問使用者是否同意要進行復原,就強制自動復原的動作,導致讓 Linux Ubuntu的使用者欲哭無淚的慘事發生。以下就稍為分析一下此一情形的邏輯概念。

Windows 7建立系統還原點的功能,基本上是想掌控所有的本地硬碟中的 partition 分割區(亦即微軟所稱的磁碟機),而每一個分割區原本就都會建立一個目錄表,用以記錄儲存在該分割區中所有檔案之間的結構關係與實際儲存單元  (sector磁區) 的位置。因此,不管是那一個作業系統,只要認得每一分割區的儲存格式 (或稱為檔案系統),例如,ext4, FAT32, NTFS等檔案系統,就會先去讀取該分割區中的檔案系統目錄表,如此就可以依序正確的存取目錄中的每一個檔案的內容。然而 Windows 7系統還原點建立與復原的功能,是要牢牢的掌控每一個分割區中的目錄表的改變活動,只能是由Windows 7自已來改變,若別人,亦即別的作業系統,例如,Linux系統擅自改變了某一NTFS分割區中目錄表的內容,Windows 7是不認帳的,是會認為那是小偷或駭客來故意對該分割區來搞破壞,自然就想要自動復原至最近的一個還原點的狀態了。

然而,目前的情況是USB外接式硬碟開機的 Linux系統或是由本地硬碟所開機的Linux系統的使用者與作業系統,都是善良的使用者,並不會平白無故的去對本地硬碟中的NTFS分割區搞破壞,Windows 7上述自動對NTFS分割區進行「強制自動復原」的動作,就真得是管太多了。而且其中 Windows 7最要命的是在進行復原之前不允許使用者選擇是否要進行復原動作,因此就會造成不可挽回的遺憾。有時後想一想,這是否也是長期以來微軟所養成的老大心態,不以使用者的角度來將心比心的思考,這種思維絕對是會離顧客愈來愈遠,後果可想而知了!

文章標籤
創作者介紹
創作者 xx3d2ybnf 的頭像
xx3d2ybnf

xx3d2ybnf-不圖3日但2年精進勇者不懼的部落格

xx3d2ybnf 發表在 痞客邦 留言(0) 人氣()