Backup Strategies

why would file names matter at all though?
good luck extraction a lot of information from thousands of filenames looking like FBDE2980-559F-48E9-9B4E-6B5CA457EDB2

I think that’s a UUID which you might see in a sync store perhaps. Filenames in DT are shown in the inspector pane on the right side. Those are part of the database package, which is basically a folder.

If you encrypt files individually, an attacker can extract metadata like file size and creation date without breaking the encryption. Not only is that information potentially valuable in itself, it can also help prioritize further attacks.

Encrypted databases are handled the same way FileVault on a Mac or iOS’ device locking handles encrypting its contents.

It’s an encrypted volume containing a DEVONthink database. When it’s unmounted, the data - in this case the database package - rests in an encrypted state.

I have recently discovered RClone (https://rclone.org/) which is a nice extension on RSync for doing incremental copies between disks, but also from/to several cloud services. I have been able to backup my Dropbox folders in the cloud (I don’t have all of them on my computer now) directly on an external HD. It allows also the mounting of cloud service but I have not yet tested this possibility. Since this is a command-line utility (there is a graphical interface but the power is in the CLI), it can easily be included in automatization tasks I think (like Hazel, Keyboard Maestro, or just CRON).

2 Likes

I monthly create a .dmg from all my DT-databases, rename them by adding te backup-date, and uploading the .dmg to Tresorit.

Do you shut down Devonthink when you back up?

If not, then how do you know you are not omitting some items or backing up a Database with transactions in progress?

If you’re using a snapshot-style backup, any subsequent transactions happening while the backup is going on have to wait for the next cycle. This is normal behavior.

Interesting.

  • Are you creating individual .dmg’s of each database?
  • Are you doing this via Disk Utility?

Understood… but as an example- I have used each of these databases numerous times today. But Finder shows that they have not been Modified since yesterday. Is that just some quirk of finder and the databases are up to date? Or is there some metadata or something else in a cache somewhere which has not been committed to the database and thus will be lost in my snapshot backups?

image

Can you explain the benefits of your .dmg backup instead of the built-in .zip archive

I am using Stuffit Deluxe to create dmg’s, although I just visited their website and it seems as if they have stopped selling their applications. Normally, I drag the database-files to the DMG-tile in Stuffit Deluxe to create a .dmg with those files. I can also just select one database-file. When I need to restore the backup, I just download the dmg-file from tresorit and than I can just copy and paste the database-file from the dmg to a folder of my choice on my mac. The database-file is read only when on the dmg-file, but after copying it to a local folder, I can read and write again. This way I create (monthly) backups:

I know what I am doing when creating dmg’s and I am 100% sure I can rely on these backups. I don’t exactly understand how the built-in zip-archive works, so I am choosing for the dmg’s. I don’t know if “my” way is better or worse, but it is the way I understand and I can rely on.

I need to walk with the dog now. :grin:

You can also create dmg’s with the Disk Utility that comes with every macOS installation.

It’s fairly straight forward and also allows for AES128 OR AES256 encryption, should you want to use that.

1 Like

Disk Utility is what I was guessing might be happening.

For me, but @MaSp apparently uses other software.

I’ve always been intrigued by the large amount of very useful applications that are installed with macOS for many years, that somehow are never picked up by Apple’s marketing department.

@BLUEFROG & @Solar-Glare: thanks for that advice. Will have look at it.

UPDATE: I just had a look at it. That works really great. Thank again!!

1 Like

You’re welcome. Sheesh! I haven’t thought about StuffIt Deluxe in years. Almost as long as WinZip! :stuck_out_tongue:

Oh the days of .bin, .sit, and .hqx files :slight_smile:

2 Likes

yes, I have been using Stuffit Deluxe for many many years, indeed creating .sit-files :slight_smile:

I’ve been using the following script for a few years to backup all open DT databases. Barely understand AppleScript. No guarantees here. This was assembled from code I gathered from the support forum and elsewhere on the internet. It is on my toolbar.

It verifies, optimizes, and creates a dated zipped file of each of the open databases including the Inbox.

After it runs, I copy the files to an external HDD that is backed up to Backblaze.

use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

tell application "DEVONthink 3"
	set theDatabases to every database
	show progress indicator "Running Backup" steps (count of theDatabases)
	repeat with thisDatabase in theDatabases
		set this_database to thisDatabase
		step progress indicator (name of this_database as string)
		set this_date to do shell script "date +%Y-%m-%d-%H-%M-%S"
		set this_path to path of this_database
		set {od, AppleScript's text item delimiters} to {AppleScript's text item delimiters, "/"}
		set this_name to the last text item of this_path
		set AppleScript's text item delimiters to ""
		if this_name ends with ".dtBase2" then set this_name to (characters 1 thru -9 of this_name) as string
		set this_archive to "~/DT_Backup/" & this_name & " " & this_date & ".dtBase2.zip"
		set AppleScript's text item delimiters to od
		
		with timeout of 1200 seconds
			set thisMsg to "Verified: " & the name of thisDatabase & " with result "
			set thisResultV to verify database this_database
			set thisLog to log message (thisMsg & thisResultV & " errors and/or missing files")
			if thisResultV = 0 then
				set thisMsg to "Optimized: " & the name of thisDatabase & " with result "
				set thisResultO to optimize database this_database
				if not thisResultO then
					set thisLog to log message (thisMsg & " Optimization of database failed.")
				else
					set thisLog to log message (thisMsg & " Optimization of database success.")
				end if
				
				if thisResultO then
					set thisMsg to "Zipped: " & the name of thisDatabase & " with result "
					set thisResultC to (compress database this_database to this_archive)
					if not thisResultC then
						set thisLog to log message (thisMsg & " zipped of database failed.")
					else
						set thisLog to log message (thisMsg & " zipped of database success.")
					end if
				end if
			end if
		end timeout
	end repeat
	
	hide progress indicator
	
	display notification "DT backup finished."
	
end tell
1 Like