大家都知道在數字計算機領域內指的文件在磁盤上的存儲是依賴於文件的命名的。
而關於文件的命名在Windows平台和Linux平台式不一樣的。比如說,Linux系統對文件名稱的大小寫字母敏感,而Windows不敏感。詳情請查閱“Windows操作系統文件命名規范”和“Linux操作系統文件命名規范”,文章見http://www.linuxidc.com/Linux/2012-03/56993.htm。
昨天我偶然的機會處理了一個在RHEL6.1操作系統上的EXT4分區中的文件夾,這個文件夾盛放的是一個標准用戶的Home目錄(家目錄)。在執行備份過程中,我錯誤的將其備份(復制)到一個NTFS分區的磁盤中,然後用Windows Server 2008 R2操作系統打開了這個分區。但是我馬上認識到了錯誤,既然已經造成了這個錯誤就趁機看看Windows是如何處理這個目錄的。
下面是此目錄(此目錄假設以home命名)在EXT4文件系統中的部門文件結構。
/home
根目錄中有兩個文件夾
/home/workspace
/home/Workspace
兩個文件夾中的文件不相同
分別為
/home/workspace/documentcatalog/computing
/home/workspace/documentcatalog/cloudcomputing
和
/home/Workspace/cprograming_desigan/chroot.c
/home/Workspace/cprograming_desigan/a.out
結果當將這個磁盤連接到Windows系統時,首先系統沒有報錯,可以正常訪問磁盤。
接下來我有意識的打開根目錄,發現了這個目錄中的確有兩個文件夾/home/workspace和/home/Workspace,但是當我要訪問這兩個文件夾時,奇妙的現象就出現了。
結果令我感到很震驚,兩個目錄中的文件完全相同。所謂的完全就是時間、權限和屬性都是完全一樣的。
那麼沒有出現的那些文件哪裡去了呢?我還能夠正常訪問它們嗎?
結果肯定是不能。
然後我嘗試了復制這個目錄(home),發現復制成功,但是不能粘貼,粘貼是有效的,但是實際上執行粘貼命令後沒有任何反應。
怎麼辦?
首先我考慮到了Windows平台中的使用工具CHKDSK,
我在CMD中執行了chkdsk /f G:(假設磁盤分區分配的符號為G:)。
果然在意料之中出現了各種掃描到的錯誤,都是關於文件索引的錯誤(可惜我當時忘記了截圖)。
當修復完成後,發現可以正常的使用該磁盤分區了。
但是後來遇到的結果依然令我驚訝!原來,CHKDSK這一工具將有以上錯誤的目錄和文件全部都“清除了”!我發現不任何原先有類似錯誤的文件的位置。
這肯定是我不希望看到的。
當時我很驚恐,因為所備份的磁盤的備份在另一台遠程計算機的磁盤上,且處於保護(沒有實現共享,即其他主機不可見)狀態,而裡面又有我當天需要使用的文件。
怎麼辦?
我想切換到RHEL環境中再試一試,但想了想這個方案不可行,因為Windows已經修復並保存了磁盤的文件系統。
嘗試文件恢復?使用文件恢復工具?這個在Windows Server平台上又沒有支持較好的軟件,這也是一大缺憾。應該是兼容性吧!測試了幾次,效果依然不太好。
此刻我又想到了,每次運行CHKDSK這一工具後都會在其分區中產生FOUND.000文件夾,我查看了一下此文件夾中的文件和目錄,正好有我要尋找的目錄和文件。只是存在錯誤的目錄或文件名稱全都變了。總之還好,在RHEL上能正常識別出來。
這次的事故讓我體會到了平時關於在文件的命名和備份分區的選擇上的注意事項。當當前計算環境中有多個不同的操作系統或者分區類型時就應該本著通吃通用的原則,以保證文件的可用性。