Чрезмерное использование дискового пространства для NSDocument FileWrappers с большими файлами
Наше приложение 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 ГБ дискового пространства.
Попытка написать небольшой пример приложения, чтобы продемонстрировать проблему сейчас.