(一句話)前言?:暑假事多閑少,填坑一步步來,因為經(jīng)常需要整理數(shù)據(jù),所以想來還是固定一個套路比較好,不是很啰嗦,也沒多少新意,里面的一些習(xí)慣可能早就傳染給了其他人。 - 20160812,深圳
零、適用范圍 / Limitation
適用人群:有一定英文使用習(xí)慣的計算機用戶、學(xué)生、以及ICT行業(yè)從業(yè)人員。
適用范圍:數(shù)據(jù)量在2T以內(nèi),存儲設(shè)備空間充足。
用處:手動減少過量數(shù)據(jù)冗余,優(yōu)化存儲結(jié)構(gòu),降低各方面成本。
一、定義 /?Definition
1. 目錄(directory)是文件(file)的集合(set),在windows下,文件夾(folder)與目錄等價;
2. 文件所在的位置(location) + 文件名(filename) = 路徑(path);
3. 當前的文件系統(tǒng)(file system)決定了不存在一個位置允許兩個同名文件,即:文件的路徑是唯一(unique)的。
二、預(yù)設(shè)建議 / Proposals
1.?對文件進行簡單的唯一存儲管理,不使用hard link及symbol?link一類的依賴于文件系統(tǒng)的特殊功能(specialized feature);
2.?目錄嵌套一般不超過7層,最多九層,其他情況用壓縮包解決;允許例外;
3.?不嚴格限制最底層目錄下的文件數(shù),建議維持在24項以內(nèi)。如有例外,則其上層目錄的項數(shù)同樣須控制在24項以內(nèi),超過60的情況建議時序歸檔;
4.?單個分類集合的最大文件數(shù)量維持在3600/4200/6144為宜,適時使用壓縮包代替零散文件簇以提高檢索效率。
注:簡單的唯一存儲管理允許在磁盤空間富余的情況存在一定數(shù)量的冗余文件,方便快速調(diào)用和備份。
三、命名法 / rules of naming
0. 不修改已知文件的原擴展名;英文名可以忽略大小寫和復(fù)數(shù)形式要求,中文不區(qū)分的地得;除特殊情況外優(yōu)先小寫,總體以美觀方便易識別為主;
1. 文件的備注信息使用大括號{},文件夾使用方括號[],文件夾內(nèi)的備注信息允許同樣使用大括號;
2. 井號(shift+3 #)表示層級提升,下劃線(_)僅在前綴時表示類別區(qū)分,兩者在適當情況下可以混用。不需要存在同時使用兩個符號的情況;
3. 升記號(shift+6 ^)表示優(yōu)先級提升,感嘆號(shift+1 !)僅在少數(shù)情況下表示最高優(yōu)先級;感嘆號允許最多三次連用;
4. at記號(@)用于可選的關(guān)聯(lián)信息備注,and符號(&)表示先前有存檔過的冗余數(shù)據(jù);
5. 百分號(%)表示未知內(nèi)容,波浪號(~)表示不重要,全角問號(?)表示不確定;建議用文字描述替代此類符號連用;
6.?下劃線(半角)、加號(+)與減號(-)同為連字符,半角句點(.)和反引號(`)用作層級連接表示;
7. 允許中英文共存,優(yōu)先使用英文,但中文優(yōu)先級高;默認使用各自的符號體系,除以上符號外,盡量限制全半角符號的混用;
8.?允許使用某些通用的擴展名用作集合名稱進行歸類,例如:apk, ppt, pdf 等。
注:getElementById這種歷史命名規(guī)則屬于混用大小寫的特殊情況之一;下劃線前綴參見python pep8的private?variable/method。
四、主分類 / meta set
1. _collection?? -- 主要指從外部收集而來的數(shù)據(jù)
2. Archive? ?--?主要指屬于自己的需要歸檔或超過時效的數(shù)據(jù)
3. #essential?? -- 主要指基礎(chǔ)必備數(shù)據(jù),允許通1和2有重復(fù)內(nèi)容
4. _cache.collection?? -- 臨時未歸檔的collection數(shù)據(jù)
5. ~cache?? -- 可有可無的臨時數(shù)據(jù)
6.?^merge.* ? --?最近需要合并的數(shù)據(jù);處于鎖定狀態(tài)(即不可)
7. _workspace?? -- 主要工作區(qū)
注1:類似_cache.collection.driver的情況,可以縮略寫作_cache.driver;
注2:以上六個為常見示例,諸如_cache.driver一類的主目錄視需求增減。
五、分類 / categorizing
1.?類別優(yōu)先:_collection下有win32分類,如有集合game下的程序全屬于win32,但游戲本身是個上層分類,所以game和win32平級。
2. 任務(wù)優(yōu)先:為了完成某個project,可以把相關(guān)資源(resource)統(tǒng)一調(diào)度到一個分類下。
3. 備份時序優(yōu)先:備份數(shù)據(jù)通過合理的時間備注和數(shù)據(jù)冗余防止版本沖突。
4. 歸檔結(jié)構(gòu)優(yōu)先:不常用的數(shù)據(jù),則其目錄結(jié)構(gòu)也不能經(jīng)常變動,容易忘。
5. 記憶優(yōu)先:同樣是照片,可以按拍照設(shè)備和拍照地點分類。這個主要看數(shù)據(jù)本身的重要性和個人習(xí)慣。
注:其他細節(jié)會在末尾進行補充。
六、副分類 / sub set
#essential、~cache、~else、_tool,大部分主分類同樣可以作為某個集合下的副分類(二級目錄的作用比較難解釋,接受這個設(shè)定就好)
七、主要詞法前綴及建議性保留關(guān)鍵詞 / prefix &?keyword
參考資料、教程、影視、圖片、照片、音樂、音頻、通知、學(xué)業(yè)、項目、數(shù)據(jù)、備份、同步、設(shè)備、驅(qū)動、系統(tǒng)鏡像、軟件、工具、系統(tǒng)工具;3rd(third party), archive, animate, audio, backup, cache, collection, cycle, data, database, dev(develop), delete, device, doc(document),?download, else, env(environment), essential, exchange, external, extra, global, hardware, img(image), internal, junction, kb(knowledge base), key, known, local, main, merge, movie, music, node, others, path, pic(pictures), private, post, project, public, push, ref(reference), repo,?reserved, res(resources), save, self, serialized, side, software, static, study,?syn(sync), sys(system), system_images, tbd(to be done), transfer, tool, unknown, unsure, unused,?upload, video, work, workspace.
以上是個人現(xiàn)在常用和曾經(jīng)用過的一些分類目錄名和詞綴。
八、補充?or?舉例說明 / addition
關(guān)于操作:沒有備份過的文件,復(fù)制優(yōu)先于移動,以確保數(shù)據(jù)不應(yīng)遷移過程的中斷而受損。
關(guān)于類別優(yōu)先(priority):根據(jù)子節(jié)點數(shù)量進行權(quán)衡,通常屬性類型先于源類別。比如:device.mouse先于device.nokia,win32.Microsoft先于software.windows。
關(guān)于中英文混用:中英文的分類邏輯是不一樣的,我們平時用的是中文,但計算機本身是英文體系的,所以兼容的工作,最后更多的只能由我們自己來完成(不要幻想有一天中英文能夠無縫自動翻譯了)。混用的好處主要是解決一部分詞義模糊,比如英文里面photos跟picture不是那么好分,中文里面用照片跟圖片,或者一個照片一個image就一目了然了。同樣,一個詞,在中英文里的描述范圍也會是有差別的。分類主要是約束劃分,所以必要的時候縮小或放寬詞義范圍也有一定的作用,比如database跟data,在中文下,不加特別區(qū)分都可以歸類到數(shù)據(jù)里面。
關(guān)于文件的存儲及其生命周期(life cycle):有多少文件你打算真的存一輩子?又有多少文件即便不用存著網(wǎng)上一搜也能找到?數(shù)據(jù)在一個介質(zhì)上需要存多久?是否需要依靠傳播來提高可延續(xù)性?還是說什么樣的數(shù)據(jù)存在手里或是傳到網(wǎng)上我們才需要對它以及對自己的行為負責(zé)?這都涉及到數(shù)據(jù)管理的幾個基本要求。當然每個人的實際需求是不同的,要求也不能一概而論,所以這里只能概括些通用情況,批判些反面教材。先說,典型的反面教材有:一味的存數(shù)據(jù),只收藏從來不消化;到空間不夠的時候亂刪數(shù)據(jù),最后格式化把系統(tǒng)也玩壞了;存儲設(shè)備出問題了才想起來沒有備份數(shù)據(jù)可用;胡亂傳播可能涉嫌違法的或者傳播行為受約束的數(shù)據(jù)等等。片面的針對一種反面情況沒有必要,因為凡事總有例外,但就核心的幾個問題來說,是明確的。一要盡量避免類似暴飲暴食的情況,因為這樣多數(shù)是在浪費時間。二是要注意數(shù)據(jù)和自己的安全,有些不能外泄的數(shù)據(jù)拿在手里,那是要負責(zé)的。三是不能走極端,片面的斷舍離,在任何情況來看,都是愚蠢的。最后,如果想要讓文件存在的時間長一點,就多傳播出去。最極端的情況就是附在一個其他通用的數(shù)據(jù)包上,比如一個軟件或是無損cd的壓縮包,里面附上一個你需要的,隨意分發(fā)到網(wǎng)絡(luò)或是身邊需要的人。當然多數(shù)情況,我們還不需要這樣做,但有一點是需要考慮的,那就是什么樣的文件,放在什么樣的網(wǎng)盤,不會出現(xiàn)什么樣的特殊情況導(dǎo)致你上傳了卻下載不了。話說到這也就差不多了,網(wǎng)絡(luò)終究是靠不住的,需要的,自己會想辦法解決(相信說到這里也就能理解為什么有些國家的人單純靠U盤來傳,用機械硬盤來存數(shù)據(jù)了)。
關(guān)于存儲分隔(partition)以及合理定制workspace:數(shù)據(jù)的存儲和分類,一方面為了提高利用率和可維護性,另一方面也要因地制宜。從這個角度講,以多賬戶的功能劃分為例,日常賬戶最好和辦公或者開發(fā)用的user分開,這樣把東西拆開,數(shù)據(jù)備份和分類在本地環(huán)境下的妥協(xié)部分就會小很多。至于壓縮包使用細節(jié),建議將數(shù)據(jù)歸入一個文件夾之后再進行打包,便于防止命名沖突。然后對于此類可以直接解壓的壓縮包,可以將名稱改為?新建文件夾.-.rar,對于已知的直接打包多文件的壓縮包,可標記為新文件夾.+.rar或 .!.zip。
關(guān)于數(shù)據(jù)集合的持久化(persistent)和連續(xù)性:用U盤一類的閃存作為長期存儲介質(zhì),雖然在一致性(consistent)和期限上不夠可靠,但擁有極佳的攜帶體積(比如一個信封塞光盤可能會裂開,但32個64g的tf卡毫無壓力)。磁帶作為一種極端措施,雖有足夠的存儲密度,但不是常人可以或需要考慮的。軟盤跟光盤基本上也是優(yōu)先考慮光盤,硬盤優(yōu)先機械,這都是廢話,但引申出兩個實用方案,即存儲介質(zhì)的虛擬化,比如iso和vhd。對于相對固定的東西,iso要比rar等壓縮方案來得方便,雖然多點磁盤占用,但可以直接掛載,只是更新麻煩(rar之流雖也有存儲不壓縮,但系統(tǒng)層面支持直接掛在的大多不通用,除了zip)。對于相對不那么固定的,也有vhd可以差分備份,不過也損失一點點讀寫性能。再極端的情況,就是整體虛擬化,比如不常用的工作環(huán)境下的一整套對性能要求不高的軟件,放到一個虛擬機里。但最后凡是涉及到備份步驟的,不可避免涉及到一個連續(xù)的問題,跨備份的數(shù)據(jù)雖然可以通過合并快照一類的形式解決,若沒有一個介質(zhì)作為中轉(zhuǎn),則會比較麻煩。另外,隨著時間的推移,如果一個固有集合太久不去使用,也會像自己的代碼三月不見全然陌生一樣,故必要的備注描述以及日志的記錄分析還是很用幫助的。
關(guān)于簡單的必要性:文件的管理和調(diào)用可以有很多種方案,Windows NT6.x開始自帶的庫,Total commander這樣的第三方資源管理器,everything/listary這樣以搜索為主的輔助軟件,以及各種標簽式的category+tag雙分類的管理軟件,我大概都用過一些。但最后還是放棄了在文件管理這個底層環(huán)節(jié)依賴任何一種軟件。因為這種事情的環(huán)境因素是需要逆推的,以一塊移動硬盤為例,要想兼容主流操作系統(tǒng),那就只能用NTFS,你用NTFS,那就擺脫不了NTFS的各種落后或者相對多余的設(shè)定(比如ACL)。所以再往后就是文件系統(tǒng)限制了軟件,軟件限制了自己。最后整個事情就搞復(fù)雜了,或者干脆忽略了文件整理這個環(huán)節(jié)。
關(guān)于分類的重要性:我們真的需要2T的移動硬盤來存將近有1T重復(fù)且雜亂無章的數(shù)據(jù)嗎?雖然有時候為了解決問題,我們繞過文件整理分類這個環(huán)節(jié)也是可以的。但是,如果一個人沒有記憶,日復(fù)一日的重復(fù)著同樣的操作,細思你作何感想?只有在這種背景下人們才會意識到,輔助工具終究只是輔助工具,編輯器再屌也拯救不了你那屎一樣的編程水平(沒有針對emacs/vim的意思)。所以在全篇這樣的基調(diào)下我只想最后強調(diào)一點,或許也就是寫這篇總結(jié)的用意:這世上根本沒有什么拖延癥,有的只是各種類似搜索后遺癥一樣的壞習(xí)慣。我們當然可以每天用著百度google,用著拼音輸入法,但總有一天會意識到,提筆寫字的重要性,和提筆忘字的尷尬。也只有在那以后我們才有可能意識到,那些沒經(jīng)過沉淀,沒有反復(fù)訓(xùn)練和強化,沒有整理消化過的東西,終究不是自己的。