Чрезмерное использование дискового пространства для NSDocument FileWrappers с большими файлами - PullRequest
0 голосов
/ 15 ноября 2018

Наше приложение NSDocument использует FileWrappers для хранения нескольких json и больших видеофайлов в Пакетах документов .Мы бы хотели использовать возможности управления версиями и восстановления NSDocuments, если это возможно.Файлы json часто меняются, а видео файлы - нет.Когда мы возвращаем true для preservedVersion , сохранение этих пакетов документов приводит к чрезмерному использованию дискового пространства.Полные копии всего пакета сохраняются в системном каталоге для каждой сохраняемой версии документа, даже если видеофайлы не изменились.

Мы переопределяем fileWrapper в NSDocument следующим образом.

override func fileWrapper(ofType typeName: String) throws -> FileWrapper {

    var fileWrappers = [String:FileWrapper]()

    // Simple Txt File
    let metaFileText = try packageMeta.serialize()
    let metaFileData = metaFileText.data(using: .utf8) ?? Data()
    let metaFileWrapper = FileWrapper(regularFileWithContents: metaFileData)
    fileWrappers["file.meta"] = metaFileWrapper

    // Very large Video directory
    if let fileUrl = self.fileURL {
        let videoWrapper = try FileWrapper(url: fileUrl.appendingPathComponent("Video"), options: [])
        fileWrappers[DocumentPackage.VideoDirectory] = videoWrapper
    } 
    return FileWrapper(directoryWithFileWrappers: fileWrappers)
}

Кто-нибудь может посоветовать какие-либо способы ограничения использования дискового пространства?Нам нужна возможность получить все преимущества NSDocument, восстановления, автосохранения и т. Д. Мы просто хотим избежать дублирования одинаковых больших видеофайлов.

Обычно у нас есть документы размером 20 ГБ и более.В этой ситуации эти дополнительные резервные копии занимают более 100 ГБ дискового пространства.

Попытка написать небольшое приложение-образец, чтобы продемонстрировать проблему сейчас.

...