【问题标题】:Can I mark Documents directory with "do not backup" attribute?我可以用“不备份”属性标记文档目录吗?
【发布时间】:2013-04-15 07:19:38
【问题描述】:

我读过我可以用“不备份”属性标记文件夹。
据我了解,在这种情况下,目录的所有内容都将从备份中排除。
在我们的应用中,我们需要从备份中排除 Documents 目录中的所有文件(这些文件可以在应用执行期间从 Documents 中添加或删除)。
我们需要将文件存储在 Documents 中,因为我们使用“应用程序支持 iTunes 文件共享”功能。
我们可以用“不备份属性”标记文档目录吗?
苹果允许这样做吗?
这会成为拒绝我们应用的理由吗?

【问题讨论】:

    标签: ios backup


    【解决方案1】:

    根据苹果

    在 iOS 5.0 及更早版本中,将文件放在 /Library/Caches 目录以防止它们被 已备份

    在 iOS 5.0.1 及更高版本中,将文件放在 /Library/Application Support 目录并应用 com.apple.MobileBackup 为它们扩展属性。此属性可防止将文件备份到 iTunes 或 iCloud。如果你 有大量的支持文件,您可以将它们存储在自定义 子目录并将扩展属性仅应用于目录。

    据我所知 您不能使用不备份属性标记文档目录

    1)您可以使用下面的代码 sn-p 标记文档目录中的各个文件

    - (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *)filePathString {
            NSURL *fileURL =
            [NSURL fileURLWithPath:filePathString];
    
            assert([[NSFileManager defaultManager] 
            fileExistsAtPath: [fileURL path]]);
    
            NSError *error = nil;
    
            BOOL success = [fileURL setResourceValue:[NSNumber numberWithBool:YES]
                                          forKey:NSURLIsExcludedFromBackupKey
                                         error:&error];
            return success;
        }
    

    2)您可以在文档文件夹中创建一个子目录并为其应用扩展属性。

    您可以使用以下语法设置扩展属性。

    int result = setxattr(path, attrName, myDataBytes, [myData length], 0, 0);
    

    您可以在以下link中找到更多关于读写扩展属性的信息

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-04-25
      • 2013-11-26
      • 2013-06-24
      • 2022-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多