Skip to content

Instantly share code, notes, and snippets.

@tibr
Created March 8, 2012 09:42
Show Gist options
  • Save tibr/1999985 to your computer and use it in GitHub Desktop.
Save tibr/1999985 to your computer and use it in GitHub Desktop.
Setting the do not backup attribute in different iOS versions
@interface NSFileManager (DoNotBackup)
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL;
@end
#import "NSFileManager+DoNotBackup.h"
#include <sys/xattr.h>
@implementation NSFileManager (DoNotBackup)
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
if (&NSURLIsExcludedFromBackupKey == nil) { // iOS <= 5.0.1
const char* filePath = [[URL path] fileSystemRepresentation];
const char* attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;
int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
return result == 0;
} else { // iOS >= 5.1
NSError *error = nil;
[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
return error == nil;
}
}
@end
@interface NSFileManager (DoNotBackup)
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL;
@end
#import "NSFileManager+DoNotBackup.h"
#include <sys/xattr.h>
@implementation NSFileManager (DoNotBackup)
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
if (&NSURLIsExcludedFromBackupKey == nil) { // iOS <= 5.0.1
const char* filePath = [[URL path] fileSystemRepresentation];
const char* attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;
int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
return result == 0;
} else { // iOS >= 5.1
return [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:nil];
}
}
@end
@Sandeep28
Copy link

please let me know how to use this function in my application ??

@joshluongo
Copy link

Usage Example:

[[NSFileManager defaultManager] addSkipBackupAttributeToItemAtURL:yourFileNSURL];

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment