2013-07-23 43 views
0

我用一个实例支持更多有400万级的对象露天3.3C用户。我开始遇到备份问题,因为即使在增量模式下备份alf_data/contentstore文件夹,也需要很长时间(总是需要分析所有这些文件以进行更改)。 我注意到alf_data/contentstore每几年内举办,我可以假设olders年(2012年)不再被改变了吗? (如果是,我可以创造一个例外,从备份过程与以前的完全备份删除那些迪尔斯,很明显)露天:无法备份alf_data

感谢,亲切的问候。

回答

-2

其实没有你,因为如果文件被修改/在露天更新文件系统路径不会改变。请记住,您可以热备份内容存储库(而非lucene索引文件夹)dir,并且不需要检查每个文件的一致性。只需启动一个shell /批处理脚本即可执行副本,而不需要检查,或使用诸如xxcopy之类的工具。 (我说的是节点属性,而不是节点内容)

+0

实际上,当一个内容项目被更新时,一个* new *文件就会在新内容的contentstore中被创建。因此,存储在数据库中的路径实际上*会更改,新创建的内容将与当前日期和时间一起存储。 –

+0

意志是绝对正确的位置 – alfrescian

+1

将遗憾地令人失望,这不是真的,我刚刚检查它现在。更新内容时,节点的物理路径(例如/ contentstore/2013/07/25/9/25 /)不会更改。它仅在版本控制处于活动状态时才会生效。 – Teqnology

2

是的,你可以假设没有物体会在你的内容存储库中的旧目录中创建(且从不更新的项目),但项目可以被移除通过从Alfresco的垃圾桶中删除后的存储库清理作业。

这是从org.alfresco.repo.content.filestore.FileContentStore,其生成新的内容的URL的部分。你可以很容易地看到它总是使用当前的日期和时间。

/** 
* Creates a new content URL. This must be supported by all 
* stores that are compatible with Alfresco. 
* 
* @return Returns a new and unique content URL 
*/ 
public static String createNewFileStoreUrl() 
{ 
    Calendar calendar = new GregorianCalendar(); 
    int year = calendar.get(Calendar.YEAR); 
    int month = calendar.get(Calendar.MONTH) + 1; // 0-based 
    int day = calendar.get(Calendar.DAY_OF_MONTH); 
    int hour = calendar.get(Calendar.HOUR_OF_DAY); 
    int minute = calendar.get(Calendar.MINUTE); 
    // create the URL 
    StringBuilder sb = new StringBuilder(20); 
    sb.append(FileContentStore.STORE_PROTOCOL) 
     .append(ContentStore.PROTOCOL_DELIMITER) 
     .append(year).append('/') 
     .append(month).append('/') 
     .append(day).append('/') 
     .append(hour).append('/') 
     .append(minute).append('/') 
     .append(GUID.generate()).append(".bin"); 
    String newContentUrl = sb.toString(); 
    // done 
    return newContentUrl; 
}