如何使用 java 压缩 Lotus Notes (.nsf) 数据库以进行每周备份?

Mar*_*ell 2 java lotus-notes

全部,

我有一个简单的 java 代码,可以让我将粘贴文件从一个文件夹复制到另一个文件夹,以进行每周备份。这段代码工作正常,但我的问题是我想在保存时压缩文件。(.nsf Lotus Notes 数据库文件)的大小几乎为 1.5 GB,我计划每周运行一次备份。我尝试使用java中可用的zip包,但它没有压缩,大小仍然相同。

任何人都可以给我一些关于如何使用 java 压缩 .nsf Lotus Notes 数据库文件的有用提示或指导吗?

public static void main(String[] args) 
{
    System.out.println("Copy Paste Process Started ");

    DateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
    Date date = new Date();
    String reportDate = dateFormat.format(date);
    System.out.println(reportDate);

    File f1= new File("C:\\notes\\data\\people\\xyz.nsf");
    File f2= new File("E:\\Backup\\xyz"+reportDate+".nsf");
    FileUtils.copyFile(f1, f2);

    System.out.println("Done");

}
Run Code Online (Sandbox Code Playgroud)

Knu*_*ann 5

将数据库的属性设置为Do not locally encrypt this database. 您可以在 中找到此属性Encryption Settings...

设置属性后,您必须设置Compact数据库(数据库属性的第二个选项卡)。然后,使用 java zip 包应该会显着减小数据库的大小。

您只需设置此属性一次。

  • 当然,这样做只会降低数据的安全性。现在,任何获得该文件的人都可以在不知道 Notes ID 密码的情况下读取数据库。 (2认同)
  • 如果数据敏感,则压缩备份也需要保护,并且您可能无法依靠 TrueCrypt 等文件系统加密来实现这一点。我不相信 java.util.zip 包支持加密的 zip,但这篇文章的答案提出了一些替代方案:http://stackoverflow.com/questions/166340/write-a-password-protected-zip-file-在java中 (2认同)