Start

Working with the application

Comparing two Folders or Disks

Basic Operation

Sync Checker can compare any two folders, or file sets which behave like folders, e.g. hard drives, other disk media, memory sticks, disk image files, connected network file servers, etc. You only need to specify which folders you like to compare, and how accurate the comparison should be. Perform the following steps to initiate a sync check operation:

  1. Ensure that macOS can access the two file sets which should be compared. When the files are located on an external disk or network file server, insert the disks, or use the Finder to connect to the server, respectively.
  2. Drag the first top folder you like to check into the upper field at Compare contents of the following two folders or disks. You can also click the button Select… to navigate to the folder. Alternatively, you can select the menu item Tools > Choose First Folder… to open the folder selection sheet or press ⌘ + 1.
  3. Repeat the last step for the second folder, using the lower field. You can alternatively use the menu item Tools > Choose Second Folder… or press ⌘ + 2 to open a dialog sheet.
  4. Use the buttons to choose how accurately the comparison should be performed. Additional options can be reviewed and be set after pressing the button Advanced Options (see below for further information).
  5. Click the button Check or press the return key .

If you choose the folders via the navigation panel, Sync Checker will allow you to see hidden files and will also show macOS bundles as they really are, namely folders simulating files.

When selecting the option Compare each byte, Sync Checker will open each pair of matching files in the two folders and compare their contents byte by byte. This comparison is accurate under all circumstances, but the operation can be slow. You can speed up the compare operation by selecting the option Assume that files with identical metadata are equal. When files are updated by applications, the operating system usually makes sure that the additional information about this file (the so-called metadata), in particular the item for time and date of last modification, are updated as well. This means if no part of the metadata of an object has changed, it will be very likely that the object’s contents did not change either. The effort to compare the actual contents might not be necessary, so the program can save a lot of time not performing this exact check.

Note that this assumption could be wrong in special cases, e.g. when the storage medium holding an object has a technical defect, so some part of its contents has been damaged although the metadata records are matching.

The control window of SyncChecker
The control window of SyncChecker

General principles

All objects contained in the two folders you selected will be processed by Sync Checker. This affects the objects in the folders themselves, the objects in the subfolders of the folders, the objects in the subfolders of the subfolders, etc. However, Sync Checker will not cross disk boundaries: If you have used aliases, symbolic links, or mount points to refer to other disks in one of the specified folders, those disks won’t be included in the compare operation. In such cases, Sync Checker will only test if the aliases themselves are referring to the same objects, but it won’t test whether the referenced objects also have identical contents.

Sync Checker must have access to the actual permission settings stored in the affected file systems. This means the option Ignore ownership on this volume which can be set via the Info panel of the Finder must not be switched on for any of the volumes which should be compared. Sync Checker will automatically offer you to disable this feature if it detects such a problem. Note that the permission settings of a volume are very likely not correctly synchronized in case the ownership settings had already been inactive when that volume was written.

The whole conception of file synchronization is based on names. If there is a file named A in the first folder, the task of Sync Checker is to verify if there is also a file named A in the second folder, and if both files A have identical contents and identical attributes. If the synchronized file A has been renamed to B in the second folder, their special relationship will be lost. Even if they still have the same contents, Sync Checker won’t test if file A equals file B. Instead, it will report that the matching file for A is missing in the second folder, and the matching file for B is missing in the first folder.

Working with Advanced Options

After pressing the button Advanced Options, Sync Checker will open a dialog sheet where additional settings for the compare operation can be specified:

Advanced Options
Advanced Options

Ignore file system compression: macOS is capable of using a technique called file system compression to save storage space for operating system files. The contents of the files are not stored as they are, but in a form using less storage space by using data compression methods. This compression is completely invisible to the user and to user applications. Files are automatically compressed when they are created, and they are decompressed when opened. You won’t notice any change in file name or displayed file size, but the file uses in fact less space than visible in applications like the Finder.

Due to the invisible nature of this technique, it usually doesn’t play any role if compression has been used or not. The use of compression is a quality of the underlying file system which does not affect the files themselves. For this reason, Sync Checker can be set to ignore all aspects which are only a side effect of using data compression at the file system level.

Ignore status change times: In addition to the specification when an object on disk has been changed, the operating system also stores the information when the status of this object has changed. The term status refers to the object’s metadata here, e.g. permission settings or similar attributes. When synchronizing files or when creating backup copies, the copying applications ensure that the files’ contents and most of their metadata are transferred accurately. However, they often allow that the status update times are changing. The time of last status change is updated in the copy, reflecting the time the copy operation took place. When working with files, most applications don’t care about status change times, so these metadata entries are not critical when comparing them. Sync Checker can be instructed not to search for differences in status change times.

Ignore POSIX permissions: POSIX permissions represent the base access rights for a file system object, composed of owner and group owner data, as well as basic read/write/execute settings. In case you have been forced to synchronize files with a different computer which is not using the same user and group databases as your own computer, the ownership information cannot match between the two systems. If you really like not to be informed about such mismatches, the entire set of POSIX permission settings can be ignored during a compare operation.

Ignore Access Control Lists: macOS is capable of using advanced permission settings, known as Access Control Lists (ACLs). Not all file systems are capable of storing ACLs, however. For this reason, it might not be desired to check the Access Control Lists when comparing files located on such storage media. You can tell Sync Checker to ignore them.

Ignore Time Machine Attributes: Time Machine uses several Extended Attributes that are attached to each object in a backup set. These attributes are used for internal bookkeeping and they provide additional checksum information. Such attributes are always differing between copy and original, so it does not make sense to compare them when one or both parts of the file sets to be sync-checked are part of a Time Machine backup.

In addition, Time Machine also adds special permissions to all Access Control Lists in the backup set. To avoid loss of data, macOS automatically sets an Access Control Entry with the setting “deny delete for other users (everyone)” for each object in the backup copy, protecting the objects from accidental deletion.

When you enable the option Ignore Time Machine Attributes, both, the additional Extended Attributes and Access Control Entries typically added by Time Machine will be excluded from the Sync Check. Other Extended Attributes and ACLs will still be checked, however.

Ignore time mismatches of less than one second: Different file system types may store time specifications that are associated with each object with different precision. For example, the time of last modification is stored on an MS-DOS FAT disk with an accuracy of 2 seconds, on a Mac OS Extended (HFS+) disk with 1 second, and on modern file systems like APFS with nanosecond resolution. When you synchronize files between volumes that use different time accuracy, there must be deviations. On the graphical user interface, such times are typically presented without specifying fractions of a second, so it can make sense to ignore file synchronization mismatches where times differ by less than one second. This setting affects all time specifications stored for file system objects.

Modern versions of Time Machine support different file systems, so files from an APFS volume may be copied onto an HFS+ Time Machine disk or vice versa, for example. This usually causes time mismatches. For this reason, enabling the option Ignore Time Machine Attributes will implicitly ignore time differences due to nanosecond resolution, no matter how the option Ignore time mismatches… is set.

Cancel comparison after __ mismatches: As mentioned in the introductory chapter, it does not make sense to accept a high number of differences when checking if two file sets are in sync. You can use the pop-up menu at this option to specify what maximum number of mismatches you would like to accept. You can select different values between 1,000 and 100,000 mismatches. Setting a high value is only recommended if your computer contains an appropriate amount of free memory (RAM).

If you are running Sync Checker in demonstration mode, the maximum number of mismatches will be 200, no matter which value is set here.

Handling Emulated HFS Attributes

Apple’s family of HFS file systems, used on Macintosh computers for several generations, store some particular attributes which are considered to be important for the classic Macintosh user experience, e.g. the type codes of document files. They are a special feature built directly into HFS and cannot be stored natively on other, non-Apple file systems. Although direct storage of these attributes is not possible, macOS supports an emulation technique which allows the use of these attributes on nearly every foreign file system. This technique is based on hidden files, the so-called AppleDouble files which always have names beginning with a “dot underscore marker”. Emulated attributes for an object named ExampleFile are stored into an invisible AppleDouble file with the name ._ExampleFile.

Like file system compression, the use of this technique is usually invisible to user applications. When an application asks the file system to retrieve the type code of a document file, the file system will simply return the requested information, no matter if it is coming from an HFS+ disk, or from an AppleDouble file. For this reason, there are cases where Sync Checker should ignore the existence of AppleDouble files and handle them as technical details which do not affect the results of the comparison.

Sync Checker automatically determines whether AppleDouble files are relevant to the running compare operation or not: If the existence or non-existence of AppleDouble files could influence what information user applications can receive about file system objects, Sync Checker will process them and handle any differences accordingly. However, if the AppleDouble files can be seen as unimportant part of the technical implementation (e.g. when comparing a file stored on HFS+ with a file stored on an NFS file server, where HFS attributes must be emulated), they won’t play a role. The contents of the AppleDouble files will be tested indirectly though, because when comparing attributes, macOS will retrieve the attributes from these files if necessary.

The Time of Last Access

Some file systems are capable of storing time attributes for objects which contain the information when an application has accessed the respective object for the last time. Comparing this attribute does not make sense because it changes too often, especially when considering that Sync Checker itself has to access all objects while comparing them. For this reason, Sync Checker never compares the time stamps of last access, and it is not possible to change that policy.

Considerations on Privacy and Security

All file system objects in macOS are protected by individual permission settings. Under normal circumstances, you only have the right to access your own files and all other objects for which you have been granted read permission. However, you might like to use Sync Checker in cases where whole system disks, with files of different users and files owned by the operating system should be compared with each other. To maintain privacy and security in such a case, Sync Checker establishes the following policy:

Note that the last item may affect the privacy of other users. Although you cannot gain access to the actual content of other users’ files, system administrators will have access to the information what files exist and how they have been named. Please respect the privacy laws of your local jurisdiction.

Considerations on Offline Cloud Files

With the latest versions of macOS, Apple introduced a new feature in the APFS file system to support Cloud solutions: In addition to “real” objects, the file system can now support offline objects which act as placeholders for documents actually stored in the cloud. As soon as an application tries to access such a dataless file, the operating system will automatically materialize this file, downloading the latest version from an associated cloud server if necessary. Even when only listing the contents of a folder, such an access will take place to ensure that all metadata, such as the number of bytes in a file, is up-to-date. Apple uses dataless files for their own iCloud services. Many other vendors also use this feature for their cloud implementations as well.

When Sync Checker performs a check that would include a folder with dataless objects, it should be avoided that macOS automatically triggers a download of the associated files from a cloud service. Otherwise, this could require unnecessary storage space, time, and network communication. In addition, the affected files could change their contents during the sync-check which would create inconsistent results. For these reasons, it is the general policy of Sync Checker to just silently ignore all objects that are marked as dataless APFS files. They are not considered true items of their parent folders.

During the Sync Check

After you have pressed the Check button, the comparison will begin. Sync Checker opens a dialog sheet and displays what it is doing. You can cancel the operation any time, pressing the button Stop in the window.

The sync check can be divided in up to three different phases. At first, the application will perform an inspection of all objects in the first folder. It determines what access permissions are needed to read the objects, how many objects are to be expected, and if there could be any technical problems. After that, this step will be repeated for the second folder. In the last phase, the actual comparison will take place.

If you don’t have read permission for all objects in the two folders, the application will ask for administrator credentials. In case correct credentials have been provided, the operation will continue. As noted in the chapter about system security, the application might repeatedly ask for the administrator password several times, in case one phase of the sync check has needed more than 5 minutes to complete.

After the Sync Check

If all objects in the two folders are in perfect sync (in regard to the compare options you had selected), Sync Checker will display a corresponding success message. If differences have been detected, the application will open a report window which lists all mismatching objects in detail. This report window behaves like an untitled document. You can save the report to file, for example. Working with such reports is explained in a separate chapter.

Typical Use Cases

The following section lists some typical use cases. They are meant as short examples how to use the Sync Checker application in practice.

Verifying a Backup Copy

You have used the application Disk Utility of macOS to create a backup copy of an important system disk of yours, using the feature Restore. You want to play it very safe, and like to check if all files are absolutely identical.

  1. Drag the original system disk into the upper field of Sync Checker.
  2. Drag the disk of the backup copy into the lower field of Sync Checker.
  3. Select the option Compare each byte.
  4. Press the button Advanced Options. In the option sheet, remove all check marks, select the maximum number of mismatches to be 1,000 and press OK.
  5. Press the button Check.
Checking a Web Site

You are responsible for a web server which is publishing a set of static HTML pages. The web server is hosted at the site of an external Internet provider and can be accessed via WebDAV in the macOS Finder. You always have an up-to-date copy of the web pages in your home folder on your Mac. Due to a communication problem with one of your co-workers, she might have updated some pages on the web server without your knowledge. You want to check if this is really true and which pages have been changed.

  1. Use the menu item Connect to server of the Finder and enter the correct HTTP address to mount the web server via WebDAV.
  2. Drag the folder containing your web server files into the upper field of Sync Checker.
  3. Drag the network volume containing the contents of the web server into the lower field of Sync Checker.
  4. Select the option Compare each byte.
  5. Press the button Advanced Options. In the option sheet, set the check mark Ignore status change times, remove all other check marks, select the maximum number of mismatches to be 1,000 and press OK.
  6. Press the button Check.

Running a Quick Test

In some cases, you may like to perform a simplified check only, for example if you want to know whether a copy of a folder you have created is still complete, or is missing some files. You are not interested in all the files’ attributes, but only in their contents, or questions like “has a file been forgotten?”, or “is the copy still up-to-date?”. Sync Checker can run a quick test in such cases, which can be much faster than a complete sync check. The following rules apply for a quick test:

To run a quick test, perform the following steps:

  1. Drag the first top folder you like to check into the upper field at Compare contents of the following two folders or disks. You can also click the button Select… to navigate to the folder. Alternatively, you can select the menu item Tools > Choose First Folder… to open the folder selection sheet or press ⌘ + 1.
  2. Repeat the last step for the second folder, using the lower field. You can alternatively use the menu item Tools > Choose Second Folder… or press ⌘ + 2 to open a dialog sheet.
  3. Use the buttons to choose how accurately the comparison should be performed.
  4. Press the button Quick Test or the key combination ⌘ + ⌥ + R.