所有的附件需要存儲在本地忱嘹,對于舊有的存儲在數(shù)據(jù)庫中的文件需要保證其在“磁盤存儲”下可用,因此提供了一個將數(shù)據(jù)庫中的文件遷移到磁盤中工具俱饿。下面詳細的介紹此工具的使用糟港。
請注意本說明中的紅色字體部分!?毙玻!
一、遷移準備和注意事項
1.檢查{nchome}/hotwebs目錄下是否有dc文件夾廊散。
2.檢查{nchome}/modules/uap/classes/nc/document/pubservlet
3.檢查{nchome}/modules/uap/classes/nc/document/pubservlet
4. 上述3個目錄如有相同的文件夾和文件就將NC附件DB遷移工具釋放到對應(yīng)文件夾下桑滩。
5.在遷移的過程中,請暫停下載允睹、更新运准、刪除等相關(guān)的操作。在遷移操作開始之前缭受,將文檔存儲配置中的文檔存儲類型設(shè)置為“本地文件存儲”!
做完以上之后重新部署系統(tǒng)胁澳。
二、文件遷移
準備完畢后贯涎,啟動NC中件間并在瀏覽器中輸入如下地址听哭,即可開始文件的遷移。文件遷移操作不會刪除數(shù)據(jù)庫中的數(shù)據(jù)記錄塘雳,遷移完成后驗證文件一致性沒有問題陆盘,可以手動刪除數(shù)據(jù)庫中的數(shù)據(jù),刪除時請謹慎操作败明。
遷移地址:http://IP:PORT/dc/move/index.html
注:ip地址和端口號按照具體情況設(shè)置隘马,端口號即為nc服務(wù)端口號。
點擊上述遷移地址妻顶,這個頁面中有兩個輸入框酸员,輸入的需要遷移的文件的時間范圍蜒车,(對應(yīng)數(shù)據(jù)庫中的sm_document_file.ts字段),如:如果輸入框分別輸入的是“2014-01-01” “2014-02-18” 那么遷移的文件為后臺數(shù)據(jù)庫中ts>'2014-01-01 00:00:00' and ts<='2014-02-18?00:00:00'的文件幔嗦。
注意: ts時間取值是大于左邊小于等于右邊的值酿愧;所遷移時間段的數(shù)據(jù)量不能超過1萬條數(shù)據(jù),如超過1萬條數(shù)據(jù)邀泉,需分批遷移嬉挡。數(shù)據(jù)量可根據(jù)字段sm_pub_filesystem.ts查詢
如果兩個輸入框不輸入任何數(shù),或者格式無效汇恤,那么就對后臺數(shù)據(jù)庫中的所有數(shù)據(jù)進行遷移庞钢。
注:遷移完成后,由于可能存在部分文件在遷移過程中出錯因谎,因此遷移完成后基括,查看后臺日志,檢查是否有錯誤輸出财岔。建議將舊數(shù)據(jù)庫文件進行備份风皿。
ftp存儲方式:
upload(String localfilename, String remotefilename)? {
OutputStream os = null;
FileInputStream is = null;
try {
// 將遠程文件加入輸出流中
os = (OutputStream) ftpClient.putFileStream(remotefilename, true);
// 獲取本地文件的輸入流
File file_in = new File(localfilename);
is = new FileInputStream(file_in);
// 創(chuàng)建一個緩沖區(qū)
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
}
// 下載
download(String remoteFile, String localFile) {
InputStream is = null;
FileOutputStream os = null;
is = (InputStream) ftpClient.getFileStream(remoteFile);
File file_in = new File(localFile);
os = new FileOutputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
}