Opened 12 years ago

Closed 9 years ago

Last modified 9 years ago

#1281 closed Bug (fixed)

Time Machine exclusions leaves trace of everything downloaded

Reported by: matsw Owned by: livings124
Priority: Normal Milestone: 2.70
Component: Mac Client Version: 1.33
Severity: Normal Keywords: Time Machine privacy
Cc:

Description

Transmission uses CSBackupSetItemExcluded to exclude items from Time Machine while they are being downloaded. It then uses the same function when the download is finished to tell Time Machine that it can back it up. This is very good but unfortunately it leaves a trace of everything that Transmission has ever downloaded in /Library/Preferences?/com.apple.TimeMachine?.plist. This could cause privacy and/or other concerns. It is Apple's fault.

Another possible approach for Time Machine exclusion that would not suffer this drawback would be to use setxattr on the downloaded file or root folder to set the com.apple.metadata:com_apple_backup_excludeItem xattr while the download is not complete.

Change History (9)

comment:1 Changed 12 years ago by charles

  • Component changed from Transmission to Mac Client
  • Owner set to livings124

comment:2 Changed 12 years ago by livings124

  • Resolution set to wontfix
  • Status changed from new to closed

This sounds to me more of an Apple bug than a Transmission bug. I'd rather not hack around this. Have you reported this to Apple?

comment:3 Changed 12 years ago by matsw

  • Resolution wontfix deleted
  • Status changed from closed to reopened

I have not reported it to Apple and I don't think they would fix this if it were reported. I think CSBackupSetItemExcluded is meant to be a way to manipulate the Time Machine preferences, not the attributes of individual files.

Anyway I think there is a good reason to fix the issue: if the downloaded file is on a file server, then using CSBackupSetItemExcluded will have no effect because it will be called on the local machine and server volumes are not backed up by time machine. So if time machine is used on the server, then partial versions of the downloaded file will be backed up.

If the xattr mechanism were used instead, then the server would also see it and not back up until the file is complete.

Moreover, the CSBackupSetItemExcluded documentation states that you need admin privileges to call it, so files downloaded by a non-admin user get backed up in incomplete states anyway.

And I think the privacy issue really could be nasty in some cases.

comment:4 Changed 12 years ago by livings124

  • Resolution set to wontfix
  • Status changed from reopened to closed

I really don't plan on reimplementing this, but will gladly accept a patch. In regards to CSBackupSetItemExcluded not meant for individual files, it's documentation specifically mentions that it's for including/excluding files/folders. The xattr method definitely looks to be a hack. Please mention these issues to Apple, as they are issues with Time Machine and the related APIs.

comment:5 Changed 9 years ago by bogdansrc

The problem with CSBackupSetItemExcluded is the excludeByPath (last one) parameter.

CSBackupSetItemExcluded((CFURLRef)url, YES, false); // works fine without admin privileges
CSBackupSetItemExcluded((CFURLRef)url, YES, true); // works only with admin privileges

I haven't looked over your code, but the fix should be to simply change the "true" to "false", so that you don't request an exclusion by path and just set the exclusion on a file-by-file basis (which I guess you already do).

comment:6 Changed 9 years ago by 0ptional

This should be fixed by [13419].

comment:7 Changed 9 years ago by 0ptional

  • Resolution wontfix deleted
  • Status changed from closed to reopened

comment:8 Changed 9 years ago by 0ptional

  • Resolution set to fixed
  • Status changed from reopened to closed

comment:9 Changed 9 years ago by livings124

  • Milestone changed from None Set to 2.70
Note: See TracTickets for help on using tickets.