其實用的也頗不錯,但是後來因為討論區的功能要廢止掉,而且xoops的版本更新也出現了些斷層
所以,毅然決然的決定把電子相簿從 xoops 跳槽到 gallery
幸好當時的 xoops xcgal 竟然很神奇的有支援相簿原始檔存在中文目錄名稱
所以只要把照片從伺服器備份出來再丟到新裝好的gallery上面就可以 (不過也是花了好多時間)
換到gallery之後,速度不錯、模組也很豐富,上傳又有方便的工具 :)
不過,更新了幾次伺服器 ( 硬體更新 and 版本升級 ),搬來搬去的,又覺得實在是有點麻煩了
更要命的是,因為量變大了以後,只有用script把mysql丟到遠端伺服器、用rsync把相本同步到 NAS 備份
原始目錄檔案這麼龐大,就沒辦法再留一份啦 @@
維護伺服器加上gallery VS 維護這種磁碟陣列的網路相本,後者即使彈性不如前者
但是就當相本來說,實在是沒有不勝出的理由了
好了,講了半天,總是該進入正題,換台機器跟這篇「還原Gallery2中的相本目錄名稱」有啥關係?
( 其實泰國淹大水後還有這台機器在共同供應契約裡,你有錢還沒廠商想賣你的插曲! )
所以,如果想把相片原始檔重新丟到 DS2411+ 上頭,根本就不知道那是什麼活動的相簿阿 @@
小小研究了一下,總算也是成功找回來了,寫ㄧ篇紀錄一下好了 @@
首先,從 gallery 資料庫中,可以發現 g2_item 這個資料表紀錄的是物件名稱 ( item,可能是相簿或者相片 )
判斷的方式就從 g_canContainChildren 這個欄位可見端倪,可以裝載子目錄的,肯定就是個目錄(相簿)囉!
SELECT * FROM `g2_Item` WHERE `g_canContainChildren` = 1
先找出所有的目錄名稱後,接著就是要找出每一本相簿對應在硬碟中的路徑
g_itemId 可以用來參照前面提到的 g2_item 資料表,g_parentSequence 就是目錄結構了!
啥? 「7/118424/118522/19/」這是目錄結構?!
沒錯,以這筆資料來說,就是存放在 item 7 底下的 item 118424 底下的 118522 底下的 19
那........參照在哪裡呢?秘密就藏在 g2_FileSystemEntity 這個資料表中
g_id 是 item 的唯一編號、g_pathComponent 就是 item 的實際名稱!哈哈~找到這邊,就跟中獎了一樣開心 ^O^
SELECT `g2_Item`.`g_id`,`g2_Item`.`g_title`,`g2_FileSystemEntity`.`g_pathComponent`,`g2_ItemAttributesMap`.`g_parentSequence` FROM `g2_Item` left join g2_ItemAttributesMap on (g2_Item.g_id = g2_ItemAttributesMap.g_itemId ) left join g2_FileSystemEntity on (g2_Item.g_id = g2_FileSystemEntity.g_id ) WHERE `g_canContainChildren` = 1
得到類似這樣的結果
到這裡為止,可以把資料先倒出來囉 :)
資料庫操作的部分到這邊算是到一段落,接下來,你可以用程式來解析
當然,也可以不要想的太複雜,其實 excel 也就可以處理了 ^^
只是要記得,匯出成csv之後的檔案不要直接用excel打開,會亂碼滴...
先開個空白的 excel 使用匯入外部資料的方式,依照匯出的分隔條件再讀回來欄位裡面
AND 不要太信任電腦,還是稍微檢查一下有沒有分割字元錯誤的資料
選取整欄之後,利用「資料剖析」的工具,可以把 / 當成分割字串,拆解開來
( 總不會找不到第一層是放在伺服器裡面的哪個路徑吧?! )
例如: A \ B \ C 想要變更成 甲 \ 乙 \ 丙 那麼就非得從 C 這個目錄作起
否則,先作了A目錄的更名,接著想找 A \ B 這個目錄時,就已經不存在了,因為它變成了 甲 \ B
( ㄟ~~ 想不通的話,照做就是了 )
接著用 excel 的 VLOOKUP 函式把目錄名稱對照出來
=VLOOKUP(E4,$A$2:$C$1195,3,FALSE)
四個引數分別是 要參照的值 , 參照資料的範圍 , 回傳第幾個欄位的值 , 是否模糊比對
看你原本的資料有幾層目錄,記得通通都要做到喔!
接著,把這些個參照完的路徑名稱拼湊拼湊
再記得把空路徑重覆了的 / 去除掉,基本上就算完成路徑參照囉!
哈哈~~看著這樣的畫面,很有成就感吧?
剩下來我的做法就是把這些個檔案配上正確的絕對路徑,丟到系統裡面配合 mv 這個語法
把一千多本相簿通通改回正確名稱,也不過幾秒鐘的時間阿!!
花了大半天的時間,總算一切就緒,把整個目錄結構丟到 DS2411+ 裡面去,大功告成!
寫下這篇紀錄,是不知道哪天還會用到,也希望有同樣需求的朋友們少些摸索的時間囉~
其中有幾點要稍微留意一下
1.先備份相簿再做更名,千萬不要直接對 gallery 當中的相簿目錄做更名,否則 gallery 就毀了
2.目錄名稱如果有特殊字、符號,使用 mv 語法的時候可以加上 "path\目錄名稱" 才不會出現錯誤
3.關於 mv 語法 「 mv "路徑\原目錄名稱" "路徑\新目錄名稱" 」 ,參考:鳥哥的linux私房菜
4.如果 excel 處理完指令的部分,可以直接貼到一個文字檔案後加上 x 的執行屬性,ㄧ次解決 :)
花了大半天的時間,總算一切就緒,把整個目錄結構丟到 DS2411+ 裡面去,大功告成!
寫下這篇紀錄,是不知道哪天還會用到,也希望有同樣需求的朋友們少些摸索的時間囉~
其中有幾點要稍微留意一下
1.先備份相簿再做更名,千萬不要直接對 gallery 當中的相簿目錄做更名,否則 gallery 就毀了
2.目錄名稱如果有特殊字、符號,使用 mv 語法的時候可以加上 "path\目錄名稱" 才不會出現錯誤
3.關於 mv 語法 「 mv "路徑\原目錄名稱" "路徑\新目錄名稱" 」 ,參考:鳥哥的linux私房菜
4.如果 excel 處理完指令的部分,可以直接貼到一個文字檔案後加上 x 的執行屬性,ㄧ次解決 :)
留言
張貼留言
留個話吧 ^O^