作者woogee (woogee)
看板java
標題[問題] 求救Java程式碼救援資料庫失敗
時間Mon Jan 16 17:56:27 2017
大家好,目前小弟我已經完全束手無策的狀態下求助各位大大Q_Q
事情是這樣的,周六的時候公司的資料庫被駭客入侵
清掉所有的資料,並附上比特幣連結...Orz
因為資料庫非常龐大,我們估計有非常高的機率對方根本沒有備份我們的資料庫
我們自己有備份資料庫,可是在還原的時候發現有檔案遺失
自己搞了三天多,大致上還原回來,可是仍然有大約40%資料無法還原
好不容易找到有人有復原這個檔案的方法,可是是Java寫的
小弟本身是寫網頁前端和Python後端,對Java僅有Hello World經驗..
試了好久仍然無法執行,所以只好上來求助各位大大
https://goo.gl/Pl260k
程式碼在這邊,是stackoverflow上有人回覆的,我試著將回答的Code
新增在C:\fix\中,取名為GenSegmentInfo.java
在命令提示字元(cmd)打
cd C:\fix\
javac GenSegmentInfo.java
到這邊都正常執行,可是輸入
java GenSegmentInfo
都出現「找不到或無法載入主要類別」,找了很多資料是說classpath的問題
所以我將它要用到的lucene-core-5.4.1.jar放到C:\fix\中
並在環境變數上設定好CLASSPATH為
C:\fix\;C:\fix\lucene-core-5.4.1.jar
再執行javac GenSegmentInfo.java,編譯一樣有過,可是仍然無法執行..
也試過
java -cp . GenSegmentInfo
java -classpath C:\fix\lucene-core-5.4.1.jar GenSegmentInfo
不信邪自己寫了一個基本的Hello World,結果可以執行,囧
所以我自行猜測應該是最上頭的package org....;這裡,讓它抓不到路徑
我把它砍了改成package GenSegmentInfo;,結果反而編譯不過..
GenSegmentInfo.java:23: error: cannot find symbol
SegmentInfo info = ....
^
symbol: class SegmentInfo
location: class GenSegmentInfo
類似這樣的錯誤,5 error,看了一下可能是缺少檔案,所以CLASSPATH又補上
C:\fix\lucene-queryparser-5.4.1.jar;C:\fix\lucene-backward-codecs-5.4.1;
C:\fix\lucene-analyzers-common-5.4.1
然後把上面的java -classpath 那邊又試驗過一輪,仍然無法..
請問有人可以幫幫小弟我嗎Orz,先感謝各位大大
如果有敘述不清楚的地方再跟我說Q_Q,求各位了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.152.143
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1484560593.A.1F9.html
1F:→ realmeat: 我會直接Eclipse上跑, 掛上要的jar =.,= 01/16 18:31
2F:→ realmeat: solr log 會紀錄指令, 你確定對方沒dump? 01/16 18:34
3F:→ ssccg: java [完整的package名稱].GenSegmentInfo 01/16 18:35
這個有試驗過,會跑出
無法載入主要類別org.apache.lucene.index.GenSegmentInfo
4F:→ realmeat: 只對你們下了 delete *:* ? (看你的描述應該是這個) 01/16 18:35
我們是用Elasticsearch,底層也是用lucene,應該通用..(希望...)
另外,對方dump機率不大,我們資料庫將近要1T,我先下載Eclipse試試看
5F:→ realmeat: 不過都能留下連結, 我看資料應該是被加密了 01/16 18:39
6F:→ realmeat: 如果我是hacker不會這麼麻煩, 你的檔案放到其他地方改名 01/16 18:44
7F:→ realmeat: 這樣最快, 而且你要找不回來, 每個檔名都亂數取 01/16 18:44
伺服器本身沒有被入侵,駭客是從9200 Port進來的,因為es早期版本沒有auth的設計
本來這周就要升上5加上登入驗證的package,沒想到就悲劇...
8F:→ realmeat: 只留一份mapping table 的file加密放在某處 01/16 18:44
9F:→ yinghsun: java的class檔要放在符合package的對應目錄下 01/17 05:17
10F:→ yinghsun: 要逐層建立org/apache/lucene/index的目錄結構 01/17 05:19
11F:→ yinghsun: 把編出來的class檔放進去,cp指到最上層的目錄和jar檔 01/17 05:21
12F:→ yinghsun: 如果是 C:\fix\;C:\fix\lucene-core-5.4.1.jar 01/17 05:21
13F:→ yinghsun: c:\fix\org\apache\lucene\index\GenSegmentInfo.class 01/17 05:24
謝大大,我照1f大大的方式執行成功了,可是發現那個Code救不回我的資料
已經放棄了,選擇從前幾版的備份交叉補齊
14F:→ realmeat: 從9200進來八成是被刪了, 應該有指令留下來, 建議對一下 01/17 10:01
15F:→ realmeat: Eclipse裝上去, 用debug mode去看真的segment ID 01/17 10:10
16F:→ realmeat: 比較方便 =3=y-~ 原po加油吧 01/17 10:10
謝謝realmeat大大,我已經照你所說的用Eclipse匯入後執行成功,不過發現它
需要另一個檔案來修復,那個檔案也遺失了,應該是沒救了
17F:推 v9290026: 還在1.x版ELK表示正在發抖… 01/18 12:53
1.x我記得有auth的plugin,不過非常難用,可以的話趕快升級5.0上x-pack吧..
雖然x-pack目前只有一年試用,有總比沒有好
如果有對外的話,用IP filter過濾吧,我這邊狀況是因為Client端的IP並不固定
所以無法使用IP filter..
※ 編輯: woogee (1.171.60.99), 01/19/2017 00:13:51