Our sync app keeps files and folders in your device in sync with your cloud storage account but you must tell it what should be synced, how, and when. The cloud storage is Dropbox, OneDrive, Google Drive or Box depending on which sync app you are using.

The central concept is the folder pair. You pair a folder in your device with another folder in the cloud. The app will keep these two folders in sync with each other. It does so automatically in the background if autosync is enabled.

You can set the max file size limit to skip very large files. You can disable autosync over mobile network and let app transfer data only when you’re connected to WiFi. Mobile data can be quite expensive in many countries.

You can allow autosync to run only when the device is being charged or when the battery level is good. Transferring large files can take long time. You don’t want it to happen when the battery is low.

Even when autosync is not allowed because of battery level or the device is connected to mobile network, not WiFi, you can always invoke sync manually. Perhaps you need to download an important document someone added to the shared folder in your cloud account. Manual sync does not check the battery or network condition. The app does exactly what you tell it to do at the moment: sync.

These options and many others can be set in the app settings.

Folder Pair

Folder pairs control what in the device is synced with what in cloud storage account and how. Each folder pair consists of two sides

  • Local folder in device
  • Remote folder in cloud storage

The app checks these two folders, compares their contents and syncs them. How the files and subfolders in these two folders are synced is controlled by the sync method the user set for the folder pair.

You can exclude a folder pair from both manual sync and autosync by turning off the Sync enabled switch, for example when you reorganize your files in the device folder or in the cloud storage account and don’t want to sync them until you’re done.

In this screencast we show how to create a new folder pair. The folder in device is “AzRecorderFree”. That’s where the captured screencasts are stored. We sync it with a folder “AZRecorder” in the cloud. Such a folder doesn’t exist yet. We need to create it first ( by tapping on the icon “folder with plus sign” at the top right corner of the screen).

Folder pair configuration can be changed. Let’s say we created a folder pair to sync photos in the device internal storage with a folder “Fotky” in the cloud. Later we changed the camera settings to store photos in the SD card instead of internal storage. The local folder /storage/emulated/0/DCIM/Camera needs to change to /storage/0000-0000/DCIM/Camera. We also change the sync method from “Two-way” to “Upload only”. Here’s the screencast showing how these two changes can be done:

Sync Methods

Sync methods tell the app where and when files are uploaded, downloaded or deleted. They should be chosen carefully.

Sync Method: Two-Way

New files and modified files on one side are transferred to the other side. Files deleted on one side are also deleted on the other side. After sync is finished the two folders are exact copies of each other.

This is how the official desktop clients work (but not so with their Android apps).

Sync Method: Upload Only

Files newly added or modified in device are uploaded to the cloud. Files deleted in device are not deleted in the cloud. Uploads are remembered and being done only once. If the uploaded files are later deleted in the cloud they will not be uploaded again unless modifications have been made to the original files in device.

No changes are made to files and folders in device.

Sync Method: Upload Then Delete

New files in devices are uploaded to the cloud then deleted from device. After sync is finished no files are left on device side.

Think about it as Move Files from device to cloud.

Sync Method: Upload Mirror

Make the cloud folder an exact copy (mirror) of the folder in device. All files in the device folder are uploaded to the cloud. Files deleted in device are deleted in the cloud. Changes made in the cloud folder are overwritten. Extra files in the cloud folder which are not in the device folder are deleted.

Sync Method: Download Only

Files newly added or modified in the cloud are downloaded to device. Files deleted in the cloud are not deleted in device. Downloads are remembered and being done only once. If the downloaded files are later deleted in device they will not be downloaded again unless modifications have been made to the original files in the cloud.

No changes are made to files and folders in the cloud.

Sync Method: Download Then Delete

New files in the cloud are downloaded to device then deleted from the cloud. After sync is finished no files are left on cloud side.

Think about it as Move Files from the cloud to device.

Sync Method: Download Mirror

Make the folder in device an exact copy (mirror) of the cloud folder. All files in the cloud folder are downloaded to device. Files deleted in the cloud are deleted in device. Changes made in device are overwritten. Extra files in the device folder which are not in the cloud folder are deleted.

Select Files by Name

By default if a folder is configured to be synced, all files inside it and its subfolders are included and synced. You can choose to sync only some files or exclude some files from being synced using name patterns.

There are two sets of name patterns: inclusion name patterns and exclusion name patterns. Each file and subfolder name is compared against those patterns. If inclusion name patterns are specified, only files with names matching one of those patterns will be considered to be synced. If there is no inclusion patterns, all files will be considered. If exclusion name patterns are specified, files with names matching one of those patterns will be excluded from being synced, even if their names match inclusion name patterns.

Exclusion patterns always exclude, inclusion patterns include, no inclusion patterns mean “include everything”.

A matched subfolder implies everything inside that subfolder is matched too. Excluding a subfolder excludes all its subfolders and files. Including a subfolder includes all its subfolders and files.

The part of a file name to be tested against name patterns is the partial path relative to the top level folder of the folder pair. Let’s assume we configured /storage/emulated/0/Pictures to be synced with /Images/Pixel. Assume we are checking this file candidate: /storage/emulated/0/Pictures /Screenshots/20190127_142312.png. It would be synced with /Images/Pixel /Screenshots/20190127_142312.png. The partial relative path in this case is /Screenshots/20190127_142312.png. Note the very first character, it is always a path separator, slash character (/). /storage/emulated/0/Pictures and /Images/Pixel are erased from the file path before pattern matching is attempted.

There can be multiple inclusion name patterns and multiple exclusion name patterns. Each pattern must be entered on a separate line. Empty lines, leading and trailing white spaces are ignored.

When a file is skipped because of name patterns a message is printed into the Sync History tab, one message for each file. There can be a large number of such messages. You can hide them by going to the app menu and select “Hide file exclusions”.

Name pattern format

Patterns can use special wildcard characters

? matches one character, any character except path separator /
* matches zero or more characters, any character except /
** matches zero or more characters, any character including /
[name] matches any single character in name
[!name] matches any single character not in name
[^name] matches any single character not in name (same as [!name])
{s1,s2,s3} Matches any of the strings given separated by commas
{num1..num2} Matches any integer numbers between num1 and num2

Other characters match themselves. Special characters can be escaped with a backslash so they won’t be interpreted as wildcards.

If a pattern does not start with the path separator (/), a string **/ is automatically added. So *.jpg would become **/*.jpg. That matches any file inside any subfolders with file extension .jpg. On the other hand patterns starting with / are left as-is. /*.jpg would match any .jpg file but only in the top level folder, not in subfolders.

Patterns are case insensitive. *.jpg is the same as *.JPG. Either of them matches both cat.jpg and DOG.JPG.

Examples:

201[5678]*.png matches .png filenames starting with 2015, 2016, 2017, or 2018
Report {8..80}.pdf matches Report 8.pdf,…, Report 80.pdf, but not Report 81.pdf
Best{cat,dog}.jpg matches bestcat.jpg, BestDog.JPG
**/masters/**.png matches /masters/x.png, a/masters/x.png, a/masters/b/x.png
**/masters/*.png matches /masters/x.png, a/masters/x.png, but not a/masters/b/x.png
Report*[12].pdf matches Report51.pdf, Report52.pdf, Report18Q1.pdf, Report18Q2.pdf
Report*\[12\].pdf matches Report 18Q1 [12].pdf, but not Report12.pdf
/.thumbs matches top level .thumbs (and its subfolders and their files)
.thumbs matches any file/subfolder .thumbs (and their subfolders and their files)
.nomedia matches any file/subfolder .nomedia (and their subfolders and their files)

Be careful with {num1..num2} pattern. First the largest possible num would be extracted from the tested string, then checked if it’s between num1 and num2. This means that {2015..2018}*.png matches 2016_01_27_142312.png, but it does not match 20160127_142312.png because 20160127 is outside of 2015..2018 range.