# SyncBackPro V12 Help (complete manual)
> SyncBackPro is the flagship edition for backing up, synchronizing, and restoring files on Windows. It supports local and external drives, network shares, FTP/FTPS/SFTP, ZIP/7z archives, email backup, MTP devices, SyncBack Touch, scripting, and cloud services including Amazon S3, Google Drive, Google Storage, Microsoft OneDrive, SharePoint, Azure, Dropbox, Box, Backblaze B2, pCloud, WebDAV and more. This documentation covers all editions: feature availability is noted per topic.
Generated 2026-10-01 from the official help source. Per-topic files are listed in https://www.2brightsparks.com/llms.txt
---
# Welcome to SyncBackPro
## SyncBackPro V12
Welcome to the help and information guide of SyncBackPro V12.
This extensive help file provides information for all versions of the program: SyncBackPro, SyncBackSE and SyncBackFree. The help file self-adjusts to a large extent, depending on which version of the software it is installed with.
- When a feature is only available in SyncBackSE and SyncBackPro (so not available in SyncBackFree) this is stated and the following is shown:
- When a feature is only available in SyncBackPro, this is noted with the icon:
This approach helps introduce users to a single context where they can enjoy guidance for all versions of the program, and helps them become aware of functions and features that may not be in the currently installed version (SyncBackFree or SyncBackSE) but may be appropriate to their needs.
Note that screen shots of the program in the help file are generally of the flagship version SyncBackPro, and that all versions of the program may happily co-exist on the same system so that users can evaluate which version best suits their requirements.
This help file was created 1 October 2026 for version 12.1.22.0.
## Introduction
*“You did have a backup… didn’t you?...”*
Three reasons why SyncBackPro is the right choice for you:
1: SyncBackPro helps you to protect yourself from data loss by allowing you to backup your important files. When disaster strikes all you have to do is click a single button to restore.
2: SyncBackPro helps you spend time on those things that matter. Trying to recover from the effects of lost data can be very costly and time consuming. SyncBackPro's proven backup and synchronization solution is a breeze to implement, reliable, and affordable.
3: SyncBackPro delivers great ease of use and outstanding functionality.
For most people, keeping a backup of their computer’s data is not normally foremost in their minds, and is usually something they only get round to right after a disastrous data loss. We all assume that our files are going to sit there obediently unless we purposely delete them. Anyway, data can always be recovered or undeleted, right?
The harsh truth is that data is never secure unless a copy is kept in a *separate location*. If you accidentally delete a file, overwrite it, catch a destructive computer virus or suffer a catastrophic hard drive failure there’s no easy way to get that data back without specialist software or expensive help.
The good news is that SyncBackPro makes backups easy. In its simplest form, this comprehensive program will enable you to keep copies of your data on another drive for safekeeping, be it on local or remote storage locations. Let’s take a quick look at the many storage destinations you can use:
- An internal drive (e.g. a second hard disk)
- An externally-attached drive (e.g. USB, Firewire or eSATA)
- Removable media (e.g. SD card or USB memory stick)
Of course, given SyncBackPro’s comprehensive capabilities, it doesn’t stop there. You can also keep safe copies of your data on the following destinations too:
- A network or NAS drive (e.g. in a typical business environment)
- A ZIP archive or VHD/X file (Pro version). SecureZip and 7z are also supported (SyncBackSE and SyncBackPro).
- An FTP, FTPS (SyncBackSE and SyncBackPro) or SFTP (Pro version) server, with support for downloading via HTTP (SyncBackSE and SyncBackPro) to take advantage of web caching to improve performance
- A user-defined location (using scripting) (Pro version)
- Backup of files stored on a HTTP web server (Pro version)
- Backup of your emails (Pro version)
- Media Transfer Protocol (MTP), e.g. for Android devices (SyncBackSE and SyncBackPro)
- SyncBack Touch, a cross-platform (Windows, macOS, Linux and Android) file server (SyncBackSE and SyncBackPro). It is free with the current version of SyncBackSE and SyncBackPro.
- Amazon S3™ or compatible service. Amazon Glacier™ (via S3) is supported (Pro version). Amazon S3™ is a trademark of Amazon.com, Inc. Amazon Glacier™ is a trademark of Amazon.com, Inc. S3 compatible services include Cloudflare R2, DreamObjects, Storj, S3ForMe, Dunkel, HiCloud, Wasabi, Oracle, IDrive, IBM, Contabo and others.
- Microsoft Azure™ Blob Storage server (Pro version). Azure™ is a trademark of Microsoft Corporation.
- Dropbox™ (Pro version), including support for Dropbox Business. Dropbox™ is a trademark of Dropbox, Inc.
- Google Drive™ (Pro version). Google Drive™ is a trademark of Google, Inc.
- Box™ (Pro version). Box is a trademark or registered trademark of Box, Inc.
- Microsoft OneDrive™ (Pro version). OneDrive™ is a trademarks of Microsoft Corporation.
- Microsoft OneDrive™ for Business (Pro version). OneDrive™ is a trademark of Microsoft Corporation.
- Microsoft SharePoint™ (Pro version). SharePoint™ is a trademark of Microsoft Corporation.
- SugarSync™ (Pro version). SugarSync is a trademark of SugarSync, Inc.
- OpenStack (Pro version), e.g. as implemented by RackSpace.
- OVH™ (Pro version). OVH is a trademark or registered trademark of OVH group.
- Backblaze™ B2 (Pro version). Backblaze is a trademark of Backblaze, Inc.
- Google Storage™ (Pro version). Google Storage™ is a trademark of Google, Inc.
- WebDAV (Pro version).
- pCloud™ (Pro version).
- Citrix™ ShareFile (Pro version).
## How does SyncBackPro achieve this?
At its simplest, backing up data is a one-way event, i.e. SyncBackPro will faithfully copy your live data on your PC to the storage destination. This is the simplest method of backing up and will suit most people for most situations. You may either perform the backup manually whenever you choose, or schedule a regular time slot for it to happen. In the latter’s case, you never need to worry about forgetting to start the process.
## Keep your data synchronized between two computers.
SyncBack can keep the same set of data up-to-date on both your PC and the storage destination. In short, any change made on one will be made on the other. For example, if you travel with a laptop and make changes to its data you may want to make sure that your desktop at home has the same set of changes. Conversely, someone at home may have made other changes to that data on the desktop too. SyncBack quickly achieves the consolidation of the two sets of data by only copying the changed data between the two PCs. This is known as Intelligent Synchronization and is one of SyncBack’s most versatile features.
## Copy locked and/or open files
- Another impressive trick is SyncBack's ability to copy and backup locked and/or open files. For example, if you are using Microsoft Outlook, your normally locked data file will be successfully copied even though it is in use. Other lesser-featured backup programs simply can’t do this.
## Need to keep backups off-site?
Best practice says that your backup should ideally be located in a different location to your original data. So how does SyncBackPro deal with offsite backups? Well, using a powerful FTP engine, SyncBackPro enables you to backup data to a remote server on the Internet. You could also use FTP to backup to a local NAS storage device or an FTP server somewhere else on a company network. SyncBackPro can also backup your files to an SFTP server or a cloud storage service like Amazon S3™. You could also use [SyncBack Touch](SyncBackTouch.md).
## Centralized Management
Distributed installations of SyncBackPro can be managed and monitored centrally using the [SyncBack Management Service](SBMService.md) (SBM Service). This allows for easy management of profiles and to check on the status of backups on those remote installations. It is **free** when used with the current version of SyncBackPro.
## SyncBack Touch
[SyncBack Touch](SyncBackTouch.md) is a cross-platform (Windows, macOS, Linux and Android) alternative to using FTP/SFTP. It can be used by SyncBackSE and SyncBackPro. It is **free** when used with the current version of SyncBackPro and SyncBackSE.
## SyncBack Monitor
[SyncBack Monitor](SyncBackMonitor.md) allows the user to remotely monitor and control SyncBackPro/SyncBackSE instances running on computers on the **same local network** via an [Android App](https://play.google.com/store/apps/details?id=com.twobrightsparks.SyncBackMonitor). It can be used with SyncBackSE and SyncBackPro and is **free**.
## SysLog Freeware
[SysLog Freeware](https://www.2brightsparks.com/syslog/) is the combination of a server and a client. The SysLog Server is capable of collecting log messages from various devices or applications over the network, and stored to a centralized location on the server. The SysLog Server installs and runs as an unattended Windows service. The accompanying SysLog Client application can be used to view the saved logs. RFC 5424 and RFC 3164 SysLog protocols are followed. It can be used with SyncBackPro or any software that can use a SysLog server. **Free to use**, no registration required.
## Quick Links
To get up to speed quickly, we recommend taking a look at the following sections:
[New User Guide](NewUserGuide.md)
[Quick Start](QuickStart.md)
[Using SyncBackPro](UsingSyncBackSE.md)
Thank you for choosing SyncBackPro. We are confident you will find it to be both powerful and a pleasure to use!
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Help using SyncBackPro
## Help! Online and Printable Support Resources
As a user of SyncBackPro you can enjoy extensive support from 2BrightSparks Pte Ltd:
Your first port of call for support is to read this help file.
**Top Tip!** Simply click the F1 key (usually on the upper left of your keyboard) to open the help file at the particular page relating to the current SyncBackPro window. Alternatively, click **Help** in the window caption (if you are not using the **Windows** [style](PreferencesMainMenu.md#style)), or the Help button on the main program window, to open the help file.
If you have never backed up data before, we advise you read the [Quick Start Guide](QuickStart.md) which explains the fundamentals about different kinds of backup. [Using SyncBackPro](UsingSyncBackSE.md) provides detailed explanations of all the functions in SyncBackPro including [Basic Operation](BasicOperation.md); [Easy Mode](EasyMode.md); [Expert Mode](ExpertMode.md); [Runtime Help](RuntimeHelp.md); and a [Technical Reference](TechnicalReference.md).
This help file also offers context sensitive guidance when using the program. You'll find a **Help** button in most of the program's windows. Clicking the help button will take you straight to the help page for that particular task or option.
### Fully Searchable Settings
When editing the settings for a profile you can use the [settings search feature](Searching.md) to locate the settings you need.
### Fully Searchable Knowledge Base
To search our ever expanding and improving Knowledge Base simply select **Search Online Knowledge Base** for the Help main menu. This will search the online knowledge base, which means it is always up-to-date.
### Fully Searchable and Printable Help Manual
Do not directly print this help file from the Microsoft help viewer because the print quality of the HTML Help viewer is poor.
A fully searchable and printable SyncBackPro Help File is available as an Adobe PDF file (Portable Document Format).
**This help file is available from our website in PDF format at:**
https://www.2brightsparks.com/assets/pdf/SyncBackProV12.pdf
To download and install the very latest version of Adobe Acrobat Reader:
- [Get latest Adobe Acrobat Reader](https://get.adobe.com/reader/)
### Online Support from 2BrightSparks
Our online support is among the best in the industry. You'll find our extensive [Support Area](https://help.2brightsparks.com/) which features our [Knowledge Base and FAQs](https://help.2brightsparks.com/support/solutions) (Frequently Asked Questions).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# How to Buy SyncBackPro and SyncBackSE
## Purchase SyncBackPro and SyncBackSE Today and Enjoy Instant Delivery
We recognize that security is one of the major concerns for the shopper during an online transaction. Our payment processor uses state of the art security tools and techniques to ensure that you are protected against online fraud.
All payment transactions at 2BrightSparks are handled through the FastSpring payment system (merchant of record). At no time do we process or save customer payment card details on our website. If you would like to learn about FastSpring visit the [FastSpring](http://www.fastspring.com/) web site.
- **Direct Ordering**
[Buy SyncBackPro or SyncBackSE](https://www.2brightsparks.com/store/store.php)
Ordering couldn't be simpler. Your serial number will be presented to you immediately following payment on FastSpring's secure server. Your order details and serial number will also be sent to you via email.
Orders can be processed for VISA, MasterCard, DISCOVER, American Express, JCB, UnionPay and via PayPal and Amazon Payments. Depending on your location other payment options may also be available, e.g iDEAL, Pix and Alipay.
Payments can also be made via Wire Transfer, Direct Debit and via a Purchase Order.
### Upgrade from SyncBackSE
- **Upgrade SyncBackSE to SyncBackPro** All SyncBackSE licensees can upgrade to SyncBackPro at reduced prices. [Visit Our Web Store](https://www.2brightsparks.com/store/upgradestore.php) and choose your upgrade option today.
### Upgrade Assurance
When purchasing a new license of SyncBackPro or SyncBackSE, or upgrading, you have the option to purchase **Upgrade Assurance** (UA). Upgrade Assurance ensures that you get the latest major versions once they are released. Refer to the [Upgrade Assurance](UpgradeAssurance.md) section of this help file for more details.
### Perpetual License
When you purchase any software from 2BrightSparks, you receive a perpetual license. This means that you can continue to use the version you purchased indefinitely and without restrictions. The software will not expire. All minor version upgrades are free, e.g. upgrading from V12.1 to V12.2 would be free. However, major version upgrades (e.g. V11 to V12) are not free and you are not entitled to free technical support. We recommend purchase of [Upgrade Assurance](UpgradeAssurance.md) so that you receive major version upgrades and technical support.
### Evaluation/Trial Downloads
Fully functional evaluation/trial versions of SyncBackPro and SyncBackSE are available for download from our website:
[Download SyncBackPro 30 Day Trial](http://www.2brightsparks.com/download-syncbackpro.html)
[Download SyncBackSE 30 Day Trial](http://www.2brightsparks.com/download-syncbackse.html)
### Sales and Support
Sales and Support are available by submitting a support ticket from our [Support Area](https://help.2brightsparks.com/). [Find out more](Help.md) about our industry leading support resources.
## Other Great Software from 2BrightSparks
## OnClick Utilities
- A suite of easy to use **free** software utilities for Microsoft Windows. [Find out more...](http://www.2brightsparks.com/onclick/index.html)
• [FindOnClick](http://www.2brightsparks.com/onclick/foc.html) performs lightning fast file searches.
• [UndeleteOnClick](http://www.2brightsparks.com/onclick/uoc.html) recovers deleted files.
• [DeleteOnClick](http://www.2brightsparks.com/onclick/doc.html) securely deletes data. A free version is available.
• [HashOnClick](http://www.2brightsparks.com/onclick/hoc.html) helps guarantee files are identical. A free version is available.
• [EncryptOnClick](http://www.2brightsparks.com/onclick/eoc.html) delivers 256-bit AES encryption. Freeware.
• [ScrambleOnClick](http://www.2brightsparks.com/onclick/soc.html) encrypts/decrypts files and text.
• [PatchOnClick](http://www.2brightsparks.com/onclick/poc.html) easily updates large files. A free version is available.
Select one or all of the OnClick Utilities programs for your needs:
[Download OnClick Utilities](http://www.2brightsparks.com/onclick/index.html)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Upgrade Assurance
You can now sign up for Upgrade Assurance, which is an optional annual subscription service. Subscribed customers will get upgrades to major version releases for free as well as priority support via our support ticketing channel. New to V12, they also get **Insider Access**.
Upgrade Assurance customers will continue to enjoy these benefits as long as they stay subscribed. This subscription program is open for new and upgrading customers of SyncBackSE/Pro.
### What is the cost for Upgrade Assurance?
SyncBack Upgrade Assurance costs a small amount and is chargeable on a per-seat basis (for each license purchase of SyncBackSE or SyncBackPro).
Customers need to purchase the same number of Upgrade Assurance subscriptions that are equivalent to the number of SyncBackSE/Pro licenses (or upgrade licenses) they plan to purchase. For example, if you are buying 5 SyncBackPro licenses, then you will need to purchase 5 SyncBackPro Upgrade Assurance subscriptions as well.
As a subscription service, the charges are automatically renewed annually on the anniversary date of your Upgrade Assurance purchase. You will be notified 2 weeks before the scheduled payment and you can cancel the subscription at anytime by logging into your [customer account management portal](https://2brightsparks.onfastspring.com/account/).
### What are the benefits for signing up for Upgrade Assurance?
As a subscribed member, you:
1. Get Insider Access, which gives you access to major new features before they are released in future major releases.
2. No longer need to pay for upgrade fees with every launch of a new major version release.
3. Get priority support from our support helpdesk. Subscribed members who submit a support ticket will be flagged automatically by our support system, which we will attend to before normal priority tickets. Please note that the support hours and scope of coverage remains the same as outlined in our [Support Policy](https://help.2brightsparks.com/support/solutions/articles/43000335580).
### What is Insider Access?
Insider Access is an exclusive benefit included with your Upgrade Assurance subscription. It gives you early access to major new features before they're officially released in the next major version of SyncBack, at no additional cost.
When we develop significant new capabilities for an upcoming major version (for example, features planned for V13 while you're using V12), Insider Access subscribers can enable and use these features immediately, as soon as they're ready. You don't have to wait for the full version release to benefit from our latest innovations.
- **Optional:** You choose which Insider Access features to enable. Use what benefits you, skip what doesn't.
- **No extra charge:** Included with your active Upgrade Assurance subscription.
- **Immediate benefit:** Access major features months or even years before they become part of the standard release.
- **Stay current:** Continue using your current major version while gaining functionality from future versions.
Traditional perpetual licenses require you to wait for the next major version release, and then purchase an upgrade, to access new features. Insider Access combines the best of both worlds:
- Perpetual license ownership of your current version
- Continuous access to cutting-edge features as they're developed
- Flexibility to adopt features at your own pace
As long as your Upgrade Assurance subscription remains active, you'll continue to receive both regular updates to your current version AND early access to major features from future versions. If your Upgrade Assurance expires, then you will lose access to all Insider Access features.
For example: If you're using SyncBack V12 with Upgrade Assurance, and we develop a powerful new cloud integration feature planned for V13, you could enable that feature through Insider Access immediately, without upgrading to V13 or paying anything extra.
### How do I purchase Upgrade Assurance?
You can purchase Upgrade Assurance at our [web-store](http://www.2brightsparks.com/store/store.php) when purchasing SyncBackPro or SyncBackSE. You can also purchase Upgrade Assurance when upgrading (visit our [Upgrade Checker](http://www.2brightsparks.com/store/upgradestore.php) page and enter your SyncBackSE/Pro serial number).
### Can I purchase Upgrade Assurance as a stand-alone product?
Yes, if you have already purchased SyncBackPro or SyncBackSE. To see if you are eligible to purchase Upgrade Assurance as a stand-alone product, visit our [Upgrade Checker](http://www.2brightsparks.com/store/upgradestore.php) page and enter your SyncBackSE/Pro serial number.
### How do I cancel my Upgrade Assurance subscription?
You can cancel your Upgrade Assurance subscription from our [customer account management](https://2brightsparks.onfastspring.com/account/) site. Enter the email address registered during your purchase, and an email with a link to access your account will be sent to your mailbox. Click on the link to go to your customer portal and you can cancel your subscription from the **Subscription** tab.
### What happens to my SyncBackSE/Pro license if Upgrade Assurance is canceled midway through the subscription?
If you cancel your Upgrade Assurance subscription, your SyncBackSE/Pro license will continue to be valid. You can continue to use the SyncBack version which you have at the time (i.e., at the time of subscription cancellation) indefinitely without any further charges. However, you will no longer be provided with free SyncBack upgrades nor priority support.
When a major SyncBackSE/Pro version is released in the future, you have the option to purchase the new version at an upgrade price as well as sign up for a new Upgrade Assurance subscription again.
You can visit our Upgrade Checker page to review your upgrade options.
### Will there be a refund for canceling Upgrade Assurance subscription?
When Upgrade Assurance subscription is canceled, there will be no refunds. Upgrade Assurance will be valid until your renewal date. When the renewal date is reached, Upgrade Assurance will not be auto-renewed and your subscription will expire (be deactivated).
Customers without an Upgrade Assurance subscription can continue to use whichever SyncBack version that is current prior to the subscription expiry. Unsubscribed customers with an existing SyncBackSE/Pro license have the option to buy upgrade license for future major version releases.
### When Upgrade Assurance is added to my order, the option to pay by Wire Transfer and/or Purchase Order is removed. Why?
Please note that it is not possible to pay through Wire Transfer/Purchase Order when Upgrade Assurance is added to your order. This is because the subscription requires a credit card or Paypal payment option to automatically deduct the annual fees from your card/paypal account.
It would not be possible to make a future deduction through wire transfer/purchase order payments since they are considered one-time transactions. If payment through wire transfer/purchase order is required, Upgrade Assurance has to be removed from the selection first.
**Further reading:** [Upgrade Assurance Subscription](https://www.2brightsparks.com/resources/articles/upgrade-assurance-subscription.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SyncBackFree Features and History
### The History of SyncBack
The first version of SyncBack was released as freeware in 2003 by Michael J. Leaver. Michael wrote SyncBack by himself to backup his files as nothing else met his requirements. SyncBack V2 was released in December 2003 and V3 soon followed in March 2004. Around that time MJLSoftware became 2BrightSparks as Michael J. Leaver was joined by Mike de Sousa. In December 2004 the business was registered as 2BrightSparks Pte. Ltd. and we were joined by Richard Gascoigne who became the third Director of the company until his retirement in early 2012. Mike de Sousa retired in September 2015.
In February 2005 we released a new version of SyncBack freeware and also our first commercial software: **SyncBackSE** V3.2.7. SyncBackSE shared the same source code as the freeware version, but SyncBackSE also had a great deal of additional code that provided significant new features. SyncBackSE was a greatly improved version of SyncBack freeware. As more features were added to SyncBackSE we decided to separate the code of SyncBackSE from SyncBack freeware altogether, so SyncBackSE had its own source code and no longer used the code from SyncBack freeware. At this point they became two entirely distinct programs that did not share any code.
In August 2008 we introduced **SyncBackPro** V5. SyncBackPro and SyncBackSE share the same code, just as SyncBackSE had originally shared the same code as SyncBack freeware. Over the years numerous features have been added to SyncBackSE and SyncBackPro, and SyncBack freeware has continued to be updated. However, since 2005 the gulf between SyncBack freeware and SyncBackPro and SyncBackSE has become ever wider. To rectify this, in November 2012 the old SyncBack freeware was replaced with the new SyncBackFree. Now the free version of SyncBack is built from the same source code as SyncBackSE and SyncBackPro. This ensures that when an improvement is made to a core function available in all versions, SyncBackFree, SyncBackSE and SyncBackPro, all three programs benefit from that fix, update, or new feature.
SyncBackFree is a vast improvement over the old SyncBack V3 freeware. It includes many of the advanced features of SyncBackSE (for example, being Unicode enabled), and now SyncBackFree also has the same user interface and shares the same help file which aids in the evaluation of different versions of the software. The release of SyncBackFree is therefore a win-win for everyone, as those who want a basic backup solution can now enjoy a program that inherits the up to date, rock solid reliability of its more powerful namesakes.
You can read the full [Change history](http://www.2brightsparks.com/syncback/changes.html) to SyncBack on our site, from the very first version of SyncBack to the latest and greatest.
### New Features Available in SyncBackFree
SyncBackFree V12 is a huge improvement over the old SyncBack V3 freeware. The section below lists just a few of the many improvements over the old freeware:
- **Nothing has been removed:** SyncBackFree has every feature that the old SyncBack V3 freeware had and far more besides. No features have been removed.
- **Unicode:** The old SyncBack V3 freeware could not cope with non-English filenames without tweaking settings in the Windows operating system. Even then it could only handle filenames in English and one other language. SyncBackFree can cope with filenames in any language.
- **Unlimited filename lengths:** The old SyncBack V3 freeware could not use files whose total filename length was over 260 characters long. SyncBackFree has no practical restriction on filename lengths.
- **Selections and actions:** SyncBackFree allows you to select, in detail, which files and folders to include in a backup. The options are far more powerful than was available in the old SyncBack V3 freeware. You can now also review the actions that will be performed and change them.
- **Newer versions of Windows:** The old SyncBack V3 freeware was never tested or designed to be used on anything newer than Windows XP. SyncBackFree is designed for and tested on all versions of Windows from Vista to the latest version of Windows. As SyncBack V3 freeware is an old program, it will work on Windows 98, 2000 and XP (none of which are supported by Microsoft). SyncBackFree cannot be used on Windows 98 or 2000. Also, SyncBackFree cannot be used on server versions of Windows. If you are using a server version of Windows you must use SyncBackSE or SyncBackPro.
- **Interface:** The old SyncBack V3 freeware had an interface that was designed in the days of Windows XP and never moved on from there. SyncBackFree shares the same user interface as the more modern SyncBackSE and SyncBackPro.
- **Logging:** The old SyncBack V3 freeware logged everything in the HTML log files as they occurred during a profile run. This made the log files difficult to read as errors were mixed in with non-errors. SyncBackFree uses the same logging format as SyncBackSE and SyncBackPro which means you can easily find the errors and see what was copied and what was not.
- **Portable:** The old SyncBack V3 freeware used the Windows registry which meant it was not portable, i.e. you couldn't put it on a USB key and use it on another computer. SyncBackFree is portable.
- **Compression:** SyncBackFree uses a modern compression component so compression is faster.
- **FTP:** SyncBackFree uses a modern FTP component so it works with a wider range of FTP servers.
- **Detect renamed files:** The case of a filename (e.g. abc.txt or ABC.txt) may be important to you. If so SyncBackFree can be [configured](DecisionsFiles.md) to detect differences in a filenames case and change them automatically as required. SyncBackPro and SyncBackSE can also detect changes in the case of folders.
- **SyncBack Monitor:** All versions of SyncBack can use the free [SyncBack Monitor](SyncBackMonitor.md) application on Android to monitor their local SyncBack installations.
- **Password protected profiles:** To stop your profiles being modified or deleted SyncBackPro and SyncBackSE can [password](MiscellaneousSettings.md) protect them.
- **Much more...:** SyncBackFree includes numerous other new features which you'll discover as you use the new version and read this help file.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SyncBackSE Features
### Features Only Available in SyncBackSE and SyncBackPro
The following features are available in SyncBackSE and SyncBackPro only and **not** in SyncBackFree:
- **Technical support:** With SyncBackPro and SyncBackSE you get [technical support](TechnicalSupportWizard.md) and access to our extensive knowledge base.
- **64-bit:** A [64-bit version](32bit64bit.md) is available which allows for more memory usage (for higher level compression and large backup data sets). SyncBackPro and SyncBackSE can also be used on server versions of Windows.
- **Delta-Copy:** [Delta versioning](Delta.md) is available which can save a considerable amount of storage space.
- **Parallel Compression:** Multiple files can be [compressed in parallel](CompressionAdvanced.md), greatly increasing performance.
- **Parallel Deletes:** Multiple files can be [deleted in parallel](CopyDeleteAdvanced.md), greatly increasing performance.
- **SyncBack Touch:** With [SyncBack Touch](SyncBackTouchIntro.md) you can backup and synchronize your files with remote installations of Windows, macOS, Linux and even Android devices. It is also **free** to use with the current version of SyncBackSE.
- **Backup open/locked files:** SyncBackPro and SyncBackSE can make backups of your files even while they are [being used](OpenandLockedFileCopying.md). This means you don't have to close your programs, e.g. your email client, word processor, spreadsheet, etc., to make a backup of your important files.
- **Intelligent Synchronization:** SyncBackPro and SyncBackSE can keep two sets of files perfectly [synchronized](Synchronize.md). For example, if you work on a laptop and desktop then you can make sure both computers have the same files no matter which computer you use to change the files.
- **Fast Backup:** With [Fast Backup](FastBackup.md) the total backup time can be greatly reduced. The Fast Backup feature also allows for incremental and differential backups.
- **Backup and sync via a Media Transfer Protocol (MTP) device:** If you have an Android phone or tablet, for example, then SyncBackSE and SyncBackPro can backup and sync files on it.
- **Versioning:** With SyncBackPro and SyncBackSE you can keep older [versions](CopyDeleteVersioning.md) of your files. How many versions to keep, how long to keep them, and what to make versions of, is completely configurable. Using versioning you can get back old copies of your files. For example, you may have made changes to a file that you didn't want and want to restore an older copy of the file.
- **History:** All versions of SyncBack have detailed and extensive logging options so you know exactly what worked and what didn't. But with SyncBackPro and SyncBackSE you can keep a detailed run [history](SimpleHistory.md) of profiles.
- **Backup on change:** SyncBackPro and SyncBackSE can be [configured](WhenChanges.md) to make a backup of your files automatically, silently, and in the background, if changes are made to your files.
- **Backup on logoff:** SyncBackPro and SyncBackSE can be [configured](WhenLoginLogout.md) to make a backup of your files automatically when you logoff Windows.
- **Backup on media insert:** SyncBackPro and SyncBackSE can be [configured](WhenInsert.md) to make a backup of your files automatically when you insert a USB key, for example.
- **Backup on program start or stop:** SyncBackPro and SyncBackSE can be [configured](WhenPrograms.md) to make a backup of your files automatically when you run another program or even when you close another program. For example, you may want it to backup your files automatically when you close your email program or word processor.
- **Time-limits:** SyncBackPro and SyncBackSE can be [configured](WhenTimeLimit.md) to limit the time taken to make a backup. For example, you may want a profile to backup your files but take no longer than 1 hour.
- **Detect renamed files:** The case of a filename or folder (e.g. abc.txt or ABC.txt) may be important to you. If so SyncBackPro and SyncBackSE can be [configured](DecisionsFiles.md) to detect differences in a filenames case and change them automatically as required.
- **Better compression and encryption:** SyncBackPro and SyncBackSE support Zip64 and BWT [compression](CompressionSettings.md) which produce much smaller backup files. Along with smaller backup files you can make them much more secure by using AES encryption. You can also create self-extracting Zip files and split Zip files.
- **Better FTP features:** SyncBackPro and SyncBackSE can use [FTPS](FTPSettings.md) servers and support the use of many advanced FTP features such as MODE Z compression and faster & more accurate file information retrieval.
- **Faster FTP scanning:** FTP servers can be [scanned](FTPAdvanced.md) using multiple threads leading to a drastic reduction in backup time.
- **Bandwidth throttling:** SyncBackPro and SyncBackSE can be configured to use less of your precious network [bandwidth](CopyDeleteAdvanced.md). This means you can continue using your network for other tasks, e.g. web browsing, email, etc., while performing a backup over the same network.
- **New file copying method:** Three new [file copying methods](CopyDeleteSettings.md) are available, which can improve performance.
- **LZMA2 (7-Zip), LZMA and BZip2 compression:** As well as supporting the industry standard Zip compression, and BWT compression, you can now also compress using LZMA2, [LZMA](CompressionSettings.md#lzma) and [BZip2](CompressionSettings.md#bzip2). These newer compression methods compress most files more effectively than more traditional gzip or Zip, but are slower. If space is more of a concern than speed, then LZMA2 may be the solution. The BZip2 compression method is compatible with WinZip 11.0 and newer compression utilities. The LZMA compression method is compatible with WinZip 12.0 and newer compression utilities. The LZMA2 compression method is compatible with 7-Zip.
- **AES encryption:** Files can be securely encrypted using AES encryption.
- **VHD/X support:** [VHD/X files](SyncBackContainer.md) can be used as alternatives to Zip files.
- **Settings location:** You can choose a [specific folder](GlobalSettings.md) to store the profile and program settings.
- **Much more...:** SyncBackPro and SyncBackSE have many more features such as advanced Regular Expression [filtering](FilterSettings.md), NTFS compression, replace- and delete-on-reboot, extensive [command line parameters](CommandLineParameters.md), profile disabling, [profile queuing](Queue.md), extensive [variables](Variables.md), visual comparison of files, profile [notes](SetupNotes.md), [backup copying](CopyDeleteSettings.md) method, faster file verification and comparison, [Azure Speech](MiscellaneousSpeech.md), and many other features.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SyncBackPro Features
### Features Only Available in SyncBackPro
The following features are available in SyncBackPro only and **not** in SyncBackSE or SyncBackFree:
- **Technical support:** With SyncBackPro you get [technical support](TechnicalSupportWizard.md) and access to our extensive knowledge base.
- Backup and sync via the Amazon S3™, Google Storage™, Google Drive™, Microsoft Azure™ Blob Storage, Microsoft OneDrive™, OneDrive for Business (Office 365), SharePoint™ (Office 365), Dropbox™, Box, SugarSync™, Open Stack, Backblaze™ B2, OVH™, Citrix™ ShareFile, pCloud™ and WebDAV cloud storage services: You can backup and synchronize your files via [cloud storage](Cloud.md) services. SyncBackPro can also work with Glacier files stored on Amazon S3 and archive files stored on Azure. To improve performance, many of the cloud services support [parallel file transfers](CloudAdvanced.md). S3 compatible services include Cloudflare R2, DreamObjects, Storj, S3ForMe, Dunkel, HiCloud, Wasabi, Oracle, IDrive, IBM, Contabo and others.
- SFTP: As well as supporting traditional FTP and FTPS, SyncBackPro also supports [SFTP](FTPAdvanced.md).
- Backup email messages: You can[backup your email](BackupEmail.md) messages from your email server. SyncBackPro supports IMAP4, POP3 and Microsoft Exchange email servers.
- **SyncBack Management Service (SBM Service):** Remote installations of SyncBackPro can now be [managed and monitored](SBMService.md) from a central location. It is **free** when used with the current version of SyncBackPro.
- **Scripting:** This powerful feature allows you to configure how SyncBackPro works and runs profiles. For example, you could create a script that lets SyncBackPro backup to a database (or anything else you can access). [Scripting](Scripting.md) can also be used to change how profiles run. A number of new scripting functions have been added to version 6. Scripts can now also add their own profile configuration page for easy integration and configuration.
- **Unlimited number of files:** SyncBackPro uses a database to store details of the files it is copying, instead of storing the information in RAM (memory). This means an unlimited number of files and folders can now be processed (except when using using OneDrive, Dropbox, Box or Google Drive). SyncBackPro will use RAM for performance but will automatically and seamlessly switch to a database if memory is running low or the number of files reaches a threshold. Using a database will actually be significantly faster when the number of files is in the hundreds of thousands.
- **Automatic drive failure detection:** Using [S.M.A.R.T.](Log.md#smart) technology, SyncBackPro can detect the impending failure of a hard drive. If a hard drive is going to fail (or has failed) then the log file will have details, and the profile status will indicate it. To use this feature your computers BIOS and hard drive must support S.M.A.R.T. (and it must also be enabled via the BIOS settings). You can also view the S.M.A.R.T. status of all drives in the [Global Settings](GlobalSettings.md#drives).
- **File Integrity:** You can be confident that your backups are complete and valid by using [file integrity](CopyDeleteIntegrity.md). SyncBackPro keeps track of your backup files so that at any time in future they can be checked for corruption.
- **SysLog Integration:** SyncBackPro can be configured to communicate with your [SysLog server](GlobalSettings.md#syslog) so you can monitor remote SyncBackPro installations.
- **Windows Shell Integration:** Profiles can now be run using selections made in [Windows File Explorer](ShellExtension.md). For example, you can right-click on a folder in Windows File Explorer and have a profile run with that folder as the source (to backup the folder to an FTP server,for example).
The following features are only available in SyncBackSE and SyncBackPro :
- **64-bit:** A [64-bit version](32bit64bit.md) is available which allows for more memory usage (for higher level compression and large backup data sets).
- **Delta-Copy:** [Delta versioning](Delta.md) is available which can save a considerable amount of storage space.
- **Parallel Compression:** Multiple files can be [compressed in parallel](CompressionAdvanced.md), greatly increasing performance.
- **Parallel Deletes:** Multiple files can be [deleted in parallel](CopyDeleteAdvanced.md), greatly increasing performance.
- **SyncBack Touch:** With [SyncBack Touch](SyncBackTouchIntro.md) you can backup and synchronize your files with remote installations of Windows, macOS, Linux and even Android devices. It is also **free** to use with the current version of SyncBackPro.
- **New file copying methods:** Three new [file copying methods](CopyDeleteSettings.md) are available, which can improve performance.
- **Faster FTP scanning:** FTP servers can be [scanned](FTPAdvanced.md) using multiple threads leading to a drastic reduction in backup time.
- **VHD/X support:** [VHD/X files](SyncBackContainer.md) can be used as alternatives to Zip files.
- **LZMA2 (7-Zip), LZMA and BZip2 compression:** As well as supporting the industry standard Zip compression, and BWT compression, you can now also compress using LZMA2, [LZMA](CompressionSettings.md#lzma) and [BZip2](CompressionSettings.md#bzip2). These newer compression methods compress most files more effectively than more traditional gzip or Zip, but are slower. If space is more of a concern than speed, then LZMA2 may be the solution. The BZip2 compression method is compatible with WinZip 11.0 and newer compression utilities. The LZMA compression method is compatible with WinZip 12.0 and newer compression utilities. The LZMA2 compression method is compatible with 7-Zip.
- **AES encryption:** Files can be securely encrypted using AES encryption.
- **Settings location:** You can choose a [specific folder](GlobalSettings.md) to store the profile and program settings.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# What's New in V12
Below is a list of the main new features and changes introduced in V12:
## Scripting
- A.I. support with [scripting](ScriptingAI.md)
- New **RunFileCompareSameEx** script function to replace **RunFileCompareSame**
- New **EnableProfile** and **DisableProfile** functions
- New script functions for logging
- Many new [functions](ScriptFunctions.md)
- [-compilescript](CommandLineParameters.md) command line parameter
- VBScript converter utility (VBSConvert.exe), see VBSConvert.txt for details
- Various other new scripting functions
## User Interface
- [Zooming](ColumnsMainMenu.md) supported
- File preview in [File & Folder](SubDirectoriesandFiles.md) selection window and [Differences](TheDifferencesWindow.md) window
- In the [File & Folder](SubDirectoriesandFiles.md) selection window you can search visible filenames by simply typing the filename
- [File & Folder](SubDirectoriesandFiles.md) selections can be shared between profiles
- Open (view) local/network files from [File & Folder](SubDirectoriesandFiles.md) selection window
- In the [Differences](TheDifferencesWindow.md) window you can now reset the Display, Filters and column widths of grids at bottom of window
- In the [Differences](TheDifferencesWindow.md) window you can change the format of the list of files and folders (optionally indent them)
- In the [Differences](TheDifferencesWindow.md) window, [Actions](TheDifferencesWindow.md#actions) on folders are now recursive, i.e. they apply to child folders and files
- Can also export to clipboard in [Differences](TheDifferencesWindow.md) window
- Run with [prompting](RunPrompted.md), e.g. you can change source and/or destination path before running the profile ()
- A program can be [run when all profiles end](PreferencesMainMenu.md#whenprofilesend) (like you can already do a shutdown, program exit, etc.)
- When changing the source or destination path an attempt is made to put back the variables
- A warning is shown in the [VHD settings](SyncBackContainer.md) if AutoPlay is enabled
- SyncBack uses the [Windows Group Policy setting](https://www.tenforums.com/tutorials/91417-enable-disable-numerical-sorting-file-explorer-windows-10-a.html) for filename sorting in Windows Explorer
- You can now set the [text colour](ProfilesPopUpMenu.md) in the main window for profiles ()
- Option to [use colour images](PreferencesMainMenu.md#style) with a dark style
- A profile can [Log](Log.md) to highlight it not having been run
- Tray icon now shows if profiles are running in another process
- If a profile is selected in the main window, and it is running in another process, then its progress is shown (change from functionality in V11 and earlier)
## File System
- [Relabel the source and/or destination](MiscellaneousLabel.md) volumes on success and/or failure ()
- Locked files can be copied (using the [Scheduler Monitor](SchedulerMonitorService.md)) from [unelevated SyncBackPro/SE](CopyDeleteVSS.md) ()
- Option to [ignore file size](CompareOptionsFileSize.md) differences less than x bytes
- If a Windows directory is set to be [case sensitive](https://learn.microsoft.com/en-us/windows/wsl/case-sensitivity), then the log will now contain errors if files or sub-directory with different case are in the directory
- A directory can contain a file named ***syncback.scan*** to have SyncBack scan the directory even if it thinks it has already been scanned
- [Advanced VSS](CopyDeleteVSS.md) options for copying locked files ()
- If a file cannot be copied, because it is locked, then [pause before retrying](CopyDeleteLocked.md)
## Compression
- You can choose which file types to [highly compress](CompressionHigh.md) and which ones to [use lowest compression](CompressionLow.md)
## Cloud
- [MEGA S4](https://mega.io/objectstorage) supported
- [Azure cold restore options](CloudAdvanced.md) (rehydrate to hot, cold, cool and optional high priority)
- Option to [not retrieve](CloudAdvanced.md) from **Glacier** or **Azure** archive storage
- Faster **Google Storage** uploading
- [Infisical](https://infisical.com/) secrets manager supported
- [1Password](OnePasswordConnect.md) secrets manager supported (requires a Connect server)
- [Dashlane](Dashlane.md) secrets manager supported (uses the Dashlane CLI)
- [Bitwarden](Bitwarden.md) secrets manager supported (uses the Bitwarden CLI)
- When using Amazon S3 or Azure you can optionally delete excess native cloud versions (like with Backblaze etc).
- Can use "***Not specified***" for ACL for S3 and Google Storage (also when creating a bucket)
- Can change block/part size for multi-part upload and download (Azure, S3, B2, Rackspace and Google Storage)
- Uses less memory when downloading large files from Azure and Amazon S3
## Misc. Functionality
- [Insider Access](UpgradeAssurance.md#insideraccess) with Upgrade Assurance
- SyncBack will [automatically attempt](EmailAdvanced.md) to resend an email (without attachments) if it thinks it failed because the attachments were too large
- If a Windows directory is set to be [case sensitive](https://learn.microsoft.com/en-us/windows/wsl/case-sensitivity), then the log will now contain errors if files or sub-directory with different case are in the directory
- Numerous new [variables](Variables.md) to get counters from log, e.g. **%LOGERRORSCNT%**
- Basic AUTH (e.g. http://username:password@example.com/) supported for [HTTP downloads](SetupHTTP.md) and [FTP HTTP](FTPHTTP.md) downloads
- Abort the profile after a [certain number of errors](CopyDeleteWarning.md)
- [Retry file verification](CopyDeleteSettings.md)
- A variable used in a [filter](FilterSettings.md#variablesinfilters) can now expand to multiple filters, separated by a forward slash (**/**)
## Security
- [Infisical](https://infisical.com/) secrets manager supported ()
- [1Password](OnePasswordConnect.md) secrets manager supported, using a Connect server ()
- [Dashlane](Dashlane.md) secrets manager supported, using the Dashlane CLI ()
- [Bitwarden](Bitwarden.md) secrets manager supported, using the Bitwarden CLI ()
- Locked files can be copied (using the [Scheduler Monitor](SchedulerMonitorService.md)) from **unelevated** SyncBackPro/SE ()
- TLS 1.3 supported with Eldos FTPS ()
## Logging
- [Advanced Logging](AdvancedLogSettings.md) options now supported, e.g. log to an external logging system ()
- Can optionally specify how many [days log files](LogSettings.md) to keep ()
- If a Windows directory is set to be [case sensitive](https://learn.microsoft.com/en-us/windows/wsl/case-sensitivity), then the log will now contain errors if files or sub-directory with different case are in the directory
## FTP/SFTP
- Support for Basic AUTH (e.g. http://username:password@example.com/) for [HTTP downloads](SetupHTTP.md) and [FTP HTTP](FTPHTTP.md) downloads
- Download and upload files [in chunks in parallel](FTPAdvanced.md) with SFTP (using Worker Threads)
## SyncBack Touch
- Encryption now supported with Rapid Transfer
## SBMS
- Remote profile progress can be viewed using **SBMS Console** (SBMS V3 with and SyncBackPro V12 required) ()
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Major Features
Below is a short list of the major new features introduced in each major release of SyncBack. Each new major version typically also includes numerous new "minor" features which are not listed here. See our [changes page](https://www.2brightsparks.com/syncback/changes.html) for the complete list:
## V4 - June 2005
[Intelligent Synchronization](IntelligentSynchronization.md)
Unicode
[Zip64 with AES encryption](CompressionSettings.md)
[Regular Expression filters](FilterSettings.md)
[Profile Wizard](CreatingYourFirstProfile.md)
[Restore Wizard](RestoringaBackup.md)
[Differential Backup](FastBackup.md)
[File Change Monitoring](WhenChanges.md)
[Tech Support Wizard](TechnicalSupportWizard.md)
[File Versioning](CopyDeleteVersioning.md)
## V5 - August 2008
[Traditional archive bit backup (incremental and differential)](FastBackup.md#archival)
Backup to CD/DVD with disk spanning (*removed in a later version*)
Number of files included in backup/sync is [no longer limited by free RAM](GlobalSettings.md#memusage) (SyncBackPro)
Backup to and from email (SMTP and POP3/IMAP4) (*removed in a later version*)
[BZip2 compression](CompressionSettings.md#bzip2)
[Scripting](Scripting.md)
Versioning for [multi-zip](CompressionSettings.md)
Backup to multi-zip files on FTP
[LZMA compression](CompressionSettings.md#lzma)
## V6 - October 2011
[Amazon S3](Cloud.md)
[Google Storage](Cloud.md)
[Microsoft Azure](Cloud.md)
[Backup of emails](BackupEmail.md) stored on a POP3/IMAP4 server
Integration with [SyncBack Management Service](SBMService.md)
Profiles can be [queued](Queue.md) to run serially in order
## V7 - October 2014
[Dropbox - with delta support, OneDrive, Google Drive, Box](Cloud.md)
[Glacier support via S3](Cloud.md)
[SyncBack Touch](SyncBackTouch.md)
[MTP](MTP.md)
[Amazon Drive](Cloud.md) (*removed in a later version*)
[SugarSync](Cloud.md)
[Office 365](Cloud.md) (OneDrive for Business and SharePoint)
## V8 - June 2017
[64-bit](32bit64bit.md) versions of SyncBackPro and SyncBackSE
[Ransomware Detection](GlobalSettings.md#ransomware)
[Secure Zip](CompressionSettings.md) (filenames are encrypted)
SyncBack container (a virtual drive, *removed in a later version*) and [VHD/VHDX](SyncBackContainer.md) support
[OpenStack](Cloud.md) (Rackspace)
[Backblaze B2](Cloud.md)
[Google Storage](Cloud.md) (now native API not S3 emulation)
[File Integrity Checking](CopyDeleteIntegrity.md)
[Google Team Drives](Cloud.md)
## V9 - June 2019
User Interface major update
[SyncBack Monitor](SyncBackMonitor.md)
[Delta-copy Versioning](Delta.md)
[OVH](Cloud.md)
[hubiC](Cloud.md)
[WebDAV](Cloud.md)
[Egnyte](Cloud.md) *(deprecated)*
Google Photos (*removed in later version as Google stopped access - March 31st 2025*)
[Backblaze B2](Cloud.md) (S3 compatibility)
[Oracle Cloud](Cloud.md) (S3 compatibility)
## V10 - October 2021
[SyncBack Touch](SyncBackTouch.md) now free
[SBMS](SBMService.md) now free
[Citrix ShareFile](Cloud.md)
[pCloud](Cloud.md)
[Global Variables](GlobalSettings.md#variables)
[Webhooks](SetupWebhook.md)
Non-elevated version of Pro/SE
## V11 - July 2023
[HTTP download](SetupHTTP.md)
FTP can also use [HTTP download](FTPHTTP.md)
[LZMA2 7zip compatible](CompressionSettings.md#lzma2) compression and encryption
[Junction Points, Symbolic Links and Hard Links can be copied and updated](CopyDeleteLinks.md)
[Group Queues](Groups.md)
[Cloudflare R2](Cloud.md) (S3 compatibility)
[Scheduler Monitor Service](SchedulerMonitorService.md)
[Script Debugging](DebuggingScripts.md)
[Secrets Manager](SecretsManager.md)
[Installer](InstallerOptions.md) that does not require a Windows administrator to install
## V12 - 31st March 2026
[Insider Access](UpgradeAssurance.md#insideraccess) with Upgrade Assurance
[Zooming](ColumnsMainMenu.md)
Locked files can be copied (using the [Scheduler Monitor](SchedulerMonitorService.md)) from [unelevated SyncBackPro/SE](CopyDeleteVSS.md)
[MEGA S4](https://mega.io/objectstorage) supported
[Infisical](https://infisical.com/) secrets manager supported
[1Password](OnePasswordConnect.md) secrets manager supported (requires a Connect server)
[Dashlane](Dashlane.md) secrets manager supported (uses the Dashlane CLI)
[Bitwarden](Bitwarden.md) secrets manager supported (uses the Bitwarden CLI)
[Advanced Logging](AdvancedLogSettings.md) options now supported, e.g. log to an external logging system
Remote profile progress can be viewed using [SBMS Console](SBMService.md)
Download and upload files automatically [in chunks in parallel](FTPAdvanced.md) with SFTP (using Worker Threads)
A.I. support with [scripting](ScriptingAI.md)
File preview in [File & Folder](SubDirectoriesandFiles.md) selection window and [Differences](TheDifferencesWindow.md) window
[File & Folder](SubDirectoriesandFiles.md) selections can be shared between profiles
[Advanced VSS](CopyDeleteVSS.md) options for copying locked files
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Quick Start
## Start Using SyncBackPro Straight Away
- If you have not used a backup program before, we strongly advise you spend time reading [Understanding Backup and Synchronization](NewUserGuide.md) which provides an essential introduction to the field.
- The warning icon on the left is used throughout this help file and indicates advice that is of particular importance.
### Three stage start
SyncBackPro can be up and running by following the following three stage process:
[Step 1](FirstSteps.md). When you first install SyncBackPro, the program will ask if you would like to:
- Evaluate the software
- Enter your Serial Number that you would have received by email after you have paid for SyncBackPro
Click the **Buy** button to visit our web store so you may pay for a license, or the **Evaluate** button to use the 30 day trial:
- When in evaluation mode, you can opt not to be reminded again until 7 days before the trial expires by clicking the box.
Step 2. The program may then ask if you would like to import any existing SyncBack profiles.
[Step 3](FirstRun.md). If you have not created any profiles in the past click the "New" button located on the lower left of the program window:
[Creating your first Profile](FirstRun.md) is a simple process with the help of the profile wizard. Once a profile has been created you need only click a single button to run that profile.
### Need Help?
Read the Help Using SyncBackPro section of this help file which details the many ways you will find guidance and support when using the program.
- Use the context sensitive help buttons that provide assistance by clicking the 'Help' button that you'll find on each program window. This will take you straight to the appropriate section in the help file.
| **SyncBackPro Evaluation Version** |
| --- |
| You have 30 days to evaluate SyncBackPro after which time you must uninstall it from your computer. You may buy SyncBackPro at any stage by visiting our web store.
[Click to visit our Web Store](https://www.2brightsparks.com/store/store.php) |
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# How SyncBack Works
This topic introduces the key concepts you need to understand to use SyncBackPro effectively. If you are a new user, reading this overview will help you get started quickly.
## Profiles
A **profile** is the core building block in SyncBackPro. Each profile defines a single task: what files to copy, where to copy them from (the [source](SourceandDestination.md)), where to copy them to (the [destination](SourceandDestination.md)), and how the task should be performed. A profile also stores settings such as file filters, scheduling options, and many other configuration details.
There are four core tasks a profile can perform:
- [Backup](Backup.md) - copies files from the source to the destination
- [Synchronize](Synchronize.md) - intelligently keeps files in sync between two locations
- [Mirror](Mirror.md) - makes the destination an exact copy of the source, including deletions
- [Restore](Restore.md) - recovers files from a previous backup
For help deciding which of these to use, see [Choosing the Right Profile Type](ChoosingTheRightProfileType.md).
You create a profile using the [Profile Setup Wizard](CreatingYourFirstProfile.md), which walks you through the process step by step. You can have as many profiles as you need, e.g. one to backup your documents, another to backup your photos, and so on.
## Running Profiles
Once a profile has been created, you [run it](RunningaProfile.md) to perform the backup, synchronization, mirror, or restore task. To run a profile, select it in the main window and click the **Run** button. By default, profiles run in parallel, meaning you can run multiple profiles at the same time without waiting for one to finish before starting another.
Before running a profile with your actual files, it is strongly recommended that you use a [Simulated Run](SimulatedRuns.md). A simulated run goes through the entire process but does not actually copy, move, or delete any files. This lets you verify that the profile is configured correctly and will do what you expect.
Depending on your settings, when a profile is run a **Differences Window** may appear after the initial scan. This window shows you exactly what will happen to each file before proceeding, giving you the opportunity to review and, if necessary, change the action for individual files.
## Groups
A [group](Groups.md) is a collection of profiles that you can [run together](CreatingaGroupProfile.md) in a defined order. For example, you might create a group called "Daily Backup" that runs your documents profile first, then your photos profile, and finally your email profile. Groups are useful when you want to:
- Run several profiles with a single click or a single schedule
- Ensure profiles run in a specific order
- Stop running subsequent profiles if an earlier profile fails
There are two types of groups: **standard groups**, which can also run profiles in parallel and can contain sub-groups, and **group queues**, which always run profiles one after another and are a lighter-weight option when you simply want to run a set of profiles in order.
## Queue
The [queue](Queue.md) provides a simple way to run profiles one at a time (serially) without creating a group. When you add a profile to the queue, it will only start running when no other profiles are currently running. Profiles in the queue run in first-in-first-out order: the first profile added runs first, then the next, and so on. The queue is useful when you have limited resources, such as low bandwidth or memory, and do not want multiple profiles running simultaneously.
## Scheduling
Rather than running profiles manually each time, you can [create a schedule](CreatingaSchedule.md) to run profiles automatically. Schedules use the Windows Task Scheduler and can be configured to run at specific times, on specific days, or at regular intervals. Both individual profiles and groups can be scheduled.
Profiles can also be triggered automatically in other ways, for example when a USB device is inserted, when you log in or out of Windows, when a program starts or stops, or periodically while SyncBackPro is running.
## Easy Mode and Expert Mode
SyncBackPro offers a large number of settings for fine-tuning how profiles work. To help manage this complexity, the profile setup window has two modes:
- [Easy Mode](EasyMode.md) - shows only the most commonly used settings, making it simpler for new users and everyday tasks
- [Expert Mode](ExpertMode.md) - shows all available settings, giving you full control over every aspect of how a profile operates
You can switch between Easy Mode and Expert Mode at any time. It is recommended that new users start with Easy Mode.
## The Main Window
The [main window](TheMainWindow.md) is where you manage all your profiles. It shows a list of all your profiles and groups, along with information such as the last run time and result for each one. From the main window you can create, modify, run, and delete profiles and groups. The main window also has buttons for restoring from a backup and creating schedules.
When SyncBackPro is running, an icon appears in the Windows System Tray (the notification area near the clock). The icon animates when a profile is running. You can right-click the tray icon to access common actions without opening the main window.
## Getting Started
The typical workflow for a new user is:
1. [Create a profile](CreatingYourFirstProfile.md) using the Profile Setup Wizard
2. Run a [Simulated Run](SimulatedRuns.md) to verify the profile is configured correctly
3. [Run the profile](RunningaProfile.md) for real to perform the backup or synchronization
4. Optionally, [create a schedule](CreatingaSchedule.md) so the profile runs automatically
As your needs grow, you can create additional profiles and organize them into groups. For a detailed walkthrough of creating your first backup, see [Creating Your First Profile](CreatingYourFirstProfile.md).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Choosing the Right Profile Type
When you create a profile in SyncBackPro, you need to choose a profile type. This page will help you understand the differences between them and choose the right one for your situation. The profile type you choose determines the direction files are copied and whether files can be deleted. For an overview of profiles and other key concepts, see [How SyncBack Works](HowSyncBackWorks.md).
## At a Glance
| **Profile Type** | **Direction** | **Deletes Files?** | **Best For** | **Risk Level** |
| --- | --- | --- | --- | --- |
| [Backup](Backup.md) | Source > Destination | No | Protecting your files | Lowest |
| [Synchronize](Synchronize.md) | Source <> Destination | Can do | Keeping two locations in sync | Moderate |
| [Mirror](Mirror.md) | Source > Destination | **Yes** | Making an exact copy | Higher |
## Which Type Should I Use?
### Use Backup when...
A [backup](Backup.md) copies files in one direction, from the source to the destination. It never deletes files but it can overwrite older backup files with newer ones. This is the safest profile type and is the right choice for most users.
- You want to protect your important files (documents, photos, music, etc.) by keeping a copy on another drive or location
- You only need to copy files in one direction (e.g. from your computer to an external drive)
- You want to be able to [restore](Restore.md) files if you accidentally delete or lose them
- You are unsure which type to choose (backup is the safest default)
*Example: You backup your Documents folder to an external USB drive every evening. If your computer's hard drive fails, your files are safe on the external drive and you can restore them.*
### Use Synchronize when...
A [synchronization](Synchronize.md) copies files in both directions: from the source to the destination, and from the destination to the source. It keeps both locations up to date with each other.
- You work on the same files from two different locations (e.g. a laptop and a desktop) and need both to stay up to date
- You add or change files on either side and want those changes reflected on the other side
- You need to know if the same file has been changed in both locations (a collision) so you can decide which version to keep
*Example: You use a laptop when traveling and a desktop at home. You edit documents on both computers. Synchronization ensures that whichever computer you sit down at, you always have the latest version of every file.*
### Use Mirror when...
A [mirror](Mirror.md) copies files in one direction, like a backup, but it also **deletes** files from the destination that no longer exist in the source. The result is that the destination becomes an exact copy of the source.
- You want the destination to be an exact copy of the source, with no extra files left behind
- You intentionally delete files from the source and want those deletions reflected in the destination
- You do not want old or orphaned files accumulating in your destination
*Example: You maintain a photo library and regularly delete duplicates or unwanted photos. A mirror profile ensures your external drive always matches your current library exactly, without keeping photos you have already removed.*
## Important Considerations
- **Mirror deletes files.** The most common mistake new users make is choosing Mirror when they intended Backup. With a mirror, if you delete a file from the source, it will also be deleted from the destination the next time the profile is run. If you are unsure, use Backup instead. A backup will never delete files from the destination.
- **Synchronize is not a backup.** Because synchronization copies files in both directions, if you delete a file from one side, that deletion can be reflected on the other side. If your goal is to protect against data loss, use Backup instead.
- **Always test first.** Regardless of which profile type you choose, always use a [Simulated Run](SimulatedRuns.md) before running a profile with your actual files. A simulated run shows you exactly what will happen without copying, moving, or deleting anything. This is especially important for mirror and synchronize profiles.
## Restoring Files
A [restore](Restore.md) is not a profile type that you choose when creating a profile. Instead, it is an operation you can perform on an existing backup profile. A restore reverses the direction of the backup: it copies files from the destination back to the source. This is how you recover files after accidental deletion, data corruption, or hardware failure.
For more information, see [Restoring a Backup](RestoringaBackup.md).
**Further reading:** [Backup, Mirror & Sync Profile Types](https://www.2brightsparks.com/resources/articles/backup-mirror-sync-profile-types.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Understanding Backup and Synchronization
## What SyncBackPro Does
SyncBackPro is designed to help you prevent data loss. This section of the help file aims to provide you with essential knowledge about what the program does to achieve this. There are four core tasks SyncBackPro does:
- [Backup](Backup.md)
- [Synchronize](Synchronize.md)
- [Mirror](Mirror.md)
- [Restore](Restore.md)
SyncBackPro allows the user to make many, many decisions about how these core tasks are achieved.
## Prompted Runs
Prompted runs are where SyncBackPro will let you change options before the profile is run. For example, you can change where to backup the files to. On the **Advanced** tab (depending on the type of profile) you have other settings, e.g. the option to switch off selections and filters.
## Test, Test, Test!
| | **Important:** SyncBackPro copies, moves, and deletes data. Always ensure you test your settings, ideally with test files, before using them with your actual files. We try to make it very clear during the installation process that SyncBackPro is designed to be able to delete and replace files, so it must be used with caution. We also ensure the default options are set to a safe mode.
Good data processing procedure dictates that any program should be thoroughly tested with non-critical data before relying on it. SyncBackPro also features a [Simulated Run](SimulatedRuns.md) feature so that users can check to ensure the program is processing data in the way they expect before making an actual run.
The **Simulated Run** or **Simulated Restore** commands are available from the drop-down menu on the **Run** and **Restore** buttons, or by right clicking on a profile: | |
| --- | --- | --- |
| | Run Button: Simulated Run | Right Click Menu: Simulated Run |
### What SyncBackPro can and cannot do
SyncBackPro can copy all of your files, but cannot make an exact copy of your system drive. SyncBackPro is designed to copy your important files, e. g. your pictures, documents, music, database, etc. You can always re-install the operating system and any programs, but you cannot recover your files unless you've made a backup. With SyncBackPro, making a backup of those files is quick and easy.
To make an exact copy of your system drive, you must use "disk imaging" software. With disk imaging, the entire disk (the parts that are used) is copied bit-by-bit. This means the copy will take up a lot of disk space and take much longer to copy.
Your Windows operating environment is constantly changing. Programs are installed, updated, uninstalled and settings are changed. Many important security specific applications are also regularly and automatically updated. Anyone who uses their computer to connect to the Internet should have in place Anti-Virus, Firewall and Anti-Spyware programs that are all readily available from within the Windows operating system. These issues, combined with the longer, costlier (more disks) and less convenient (more time consuming) disk imaging process inevitably means that for the average user, disk imaging is carried out far less frequently than the kind of backup SyncBackPro delivers.
SyncBackPro copies all your important files in a fast, up to date and reliable manner.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Source and Destination
## Understanding the 'Source' and 'Destination'
SyncBackPro copies, moves and deletes digital files from one location to another. This helps you in your aim to prevent data loss.
To make the process of backing up simple to understand, we use the terms **Source** and **Destination**. The **Source** is a particular location and the **Destination** is a different location. In the example below, the Source is a workstation and the Destination is an external drive:
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
You will [create a Profile](CreatingaProfile.md) of both the Source and Destination, and define the Profile's actions (backup, synchronization, restore etc.).
You can also [group profiles together](CreatingaGroupProfile.md) so multiple actions occur, and then [schedule](CreatingaSchedule.md) these profiles to run automatically.
### Backup
In the case of a simple backup operation, the Source is the place where files are copied **from** and the Destination is the place where files are copied **to**. For example, the Source could be the folder 'Your Computer Drive\My Documents\My Business Folder\' and the Destination could be a folder on an external USB drive 'My External Backup Drive\My Backup\My Business Folder\'.
SyncBackPro allows you to make choices about exactly what files are to be copied, moved, ignored or deleted during the backup, synchronization or restore process. You may decide, for example, to ignore certain files or folders when backing up. Therefore, it is not necessary to backup every file from the Source to the Destination.
When SyncBackPro first runs a backup, the program will copy all the files you require from the Source to the Destination. The next time you run the same backup task, SyncBackPro does not copy the unchanged files, but rather scans both the Source and Destination, notes what files have been changed and then asks you to confirm the action the program is about to take in the [Differences Window](TheDifferencesWindow.md). This makes subsequent backups a lot faster than the initial backup.
### Synchronization
When it comes to Synchronization, viewing the source as a location where files are copied from is not accurate. Think of the source simply as a location, rather than as a location that always has a fixed task associated with it. The source can be thought of as the **left** side, and the destination as the **right** side.
In a synchronization operation for example, a file may be copied to the source rather than from the source, and at the same time another file may be copied to the destination. This may occur as you may have chosen options in SyncBackPro that request certain actions occur given certain criteria. For example, you may require that a file that is older on either the source or destination, must be replaced by the newer file (given they have the same name and file type).
As you can tell by the example above, synchronization is a more complex process than a backup process.
### Mirror
Mirroring ensures that one drive (or folder) contains the same files as another drive (or folder). It is not the same as a backup because it deletes files (this means there are no 'orphaned' files in the destination). It is also not the same as synchronization because it only copies files in one direction.
### Good Data Procedures
When you first use SyncBackPro, we advise you use the default options and simply backup, as this will prevent any unexpected and potentially unwanted actions to occur. As you become familiar with the program, you will begin to gain a deeper understanding of the Backup and Synchronization processes.
We have put many checks and warnings in place in order to prevent you from accidentally losing data. We make it very clear during the installation process that SyncBackPro is designed to be able to delete and replace files, so it must be used with caution. We also ensure the default options are set to safe settings that will reduce the possibility of unwanted data loss to a minimum.
Good data processing procedures dictate that any program is thoroughly tested with non-critical data before relying on it. SyncBackPro also features a **Simulated Run** feature that you will be able to ensure the program is processing data in the way you expect before making an actual run. A Simulated Run does not move, copy, or delete any files, but will show the differences window for you to fully review what will occur in the case of an actual run.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Backup
## An Explanation of the Backup Process
A backup copies files in one direction: from the source to the destination. It never deletes files, but it can overwrite backup files, e.g. replace an older backup file with a new one.
Note that a backup is not a [synchronize](Synchronize.md) process.
SyncBackPro can backup to the same drive; a different drive or medium (USB key, SD card, etc); an FTP or SFTP server; backup emails; numerous cloud services;a Network; or a Zip (compressed) archive. SyncBackPro can also backup to user definable locations by using [scripts](Scripting.md) and even backup your emails. If you have a device that uses the Media Transfer Protocol, e.g. a phone, then SyncBackPro can backup to that too.
### Backing Up
The examples on this page show different scenarios of when you might backup.
- Note that the Destination needs to have enough free disk space to take all the backup data.
Here's an example of a local computer backing up to an external hard disk. The computer's drive is the Source, and the external hard disk is the Destination. Files will be copied from the source to the destination:
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
**Usage:** Backup files on your local C drive onto an external USB drive. This ensures you've got an accessible copy of your data, even if you experience problems with your main computer.
A second example shows a backup where the a laptop is the Source, and a desktop is the Destination:
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
**Usage:** Perhaps you've been on a business trip or on holiday and you've continued to update your documents. When you get back home you'll want to copy any new or changed files back onto your computer. A simple backup will achieve this.
The third example shows how a backup can run from one network computer to another:
| | | |
| --- | --- | --- |
| | | |
| **Source** | | **Destination** |
**Usage:** You've setup a home network, and you use one of the computers on that network to work on, and another to backup to.
The example below shows a backup taking place from a local workstation to another remote computer using FTP (File Transfer Protocol):
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
**Usage:** You're on the move and work with a laptop. As you've got Internet access and FTP access to a website to upload files, you backup a copy of your data so you know if diaster strikes and your laptop is lost, breaks down, or is damaged in transit, your data is safe and easily retrievable.
The next example shows a backup to SyncBack Touch:
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
**Usage:** You want to backup all your family photos and movies to another device running [SyncBack Touch](SyncBackTouch.md).
The final example shows a backup between a local computer and an SD card:
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
**Usage:** You're at work and need to copy the documents that are located in different folders on your work computer to an SD card, USB stick, etc. Once you've defined your profiles and grouped them using SyncBackPro, you'll click one button, and everything will be copied quickly and simply in a single action.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Synchronize (Intelligent)
## An Explanation of the Intelligent Synchronize Process
A Synchronization copies files in both directions: from the source to the destination, and from the destination to the source.
[Intelligent Synchronization](IntelligentSynchronization.md) copies files in both directions and also keeps a history of where files were during the last synchronization. This allows for much finer control over what actions to take based on what has changed, and also allows it to detect changes such as the file only being modified in the source or destination.
By default any synchronization profile created using SyncBackPro will be an Intelligent Synchronization profile. However, a profile imported from an old version of SyncBackSE, or SyncBackFree, may not be. It is advisable to use Intelligent Synchronization instead of the old basic synchronization.
Note that the synchronization process is not the same as a [backup process](Backup.md).
### What is the difference between Basic and Intelligent Synchronization?
Intelligent Synchronization keeps track of what changed the last time the profile was run so that it knows if a file has been deleted, created, or changed since the last profile run. This helps you (and SyncBack) make an informed decision about what to do when something changes. It also gives you a comprehensive choice of options on what to do with a file when specific things happen, e.g. the file is deleted for the source but not the destination. Basic synchronization does not keep track of changes and has a limited set of options. Whenever possible you should use Intelligent Synchronization instead of the old basic synchronization.
For example: you are synchronizing files between your laptop and desktop. You change a file on your laptop but delete that same file on your desktop. When you next run your Intelligent Synchronization profile SyncBack will be able to detect this and perform the configured action (in this case the default action is to prompt the user). However, if you had used an old basic synchronization profile it would only have detected that the desktop file had deleted and would not have detected that the laptop file had also been modified (in this case the default action would have been to copy the file from the laptop back to the desktop).
### Synchronizing the Source and the Destination
Here's an example of a computer drive being synchronized with an external hard disk. Files will be synchronized between the source and the destination:
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
**Usage:** You use two separate drives, one for business, another for home use. Some files are on both drives, like your diary. Synchronization ensures that whatever drive you work on, the other drive is updated with your new diary items.
A second example shows a laptop (Source) and desktop (Destination) being synchronized. The desktop could be two different computers, e.g. your office computer and your home computer:
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
**Usage:** You work on the move and at home and want to ensure both your laptop and desktop have the same up to date files. You achieve this by Synchronizing your two computers.
The third example shows a synchronization running from one network computer to another:
| | | |
| --- | --- | --- |
| | | |
| **Source** | | **Destination** |
**Usage:** You work on a networked computer and often change files that others will also view and change during the course of a day. Synchronization helps to ensure that whoever is working on the file does so with the most up to date version.
The final example shows a local computer and an SD card being synchronized:
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
**Usage:** You've updated many documents over the course of the day. At one point you used an SD card to load some documents as you worked on a computer other than your usual one, but you can't remember the exact name of those documents. When you return to your main computer you run your synchronization profile. SyncBack copies files in both directions, ensuring that both the SD card and your main computer have the same up to date documents.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Mirror
## An Explanation of the Mirror Process
Mirroring ensures that one drive (or folder) contains the same files as another drive (or folder). It is not the same as a backup because it **deletes** files. It is also not the same as synchronization because it only copies files in one direction.
- Note that the Destination needs to have enough free disk space to take all the data.
**Mirroring**
Here's an example of a local computer mirroring to an external hard disk. The computer's drive is the Source, and the external hard disk is the Destination. Files will be copied from the source to the destination and any files that are only on the Destination are deleted:
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
**Usage:** Mirror files from your local C drive to an external USB drive. This ensures you've got an identical copy of your data, even if you experience problems with your main computer. It is different from a backup because there are no 'orphaned' files in the destination.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Restore
## An Explanation of the Restore Process
Being able to easily restore data is a core function of SyncBackPro. Here are some example scenarios of when you'll want to run a restore operation:
- You inadvertently delete a file and/or folder and need to recover it easily and quickly.
- As you're working on a document, the parent program unexpectedly crashes and your work is gone. If you've setup a backup to run in the background, you'll be able to restore to the last backup point.
- Your computer suffers a catastrophic failure, and you cannot access any files or folders. Having backed up onto an external drive or disk, you will be able to easily restore your valuable files onto a new computer.
A restore operation swaps the source and destination directories: i.e. the source directory becomes the destination directory and vice-versa:
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
**Usage:** You have inadvertently deleted the wrong files. You quickly restore your files from an external hard drive back onto your main computer, then continue to work with little impact on your time or overall stress levels.
**Usage:** Your main computer suffers a serious security attack and your document files have been badly affected. After reinstalling Windows you are able to also restore your valuable document files to the state they were prior to the attack.
- **Running a restore operation is not reversible.** A restore may not work in the way you expect it to: e.g. some of the files in the destination directory may be older than their equivalent entries in the source, and therefore may not replace the source entries (depending upon what your settings are). If in doubt use the **Simulated Restore** feature in SyncBackPro. A simulated restore will show you what will happen to your files, without actually copying, moving, or deleting any files.
**Further reading:** [Restoring From a Backup](https://www.2brightsparks.com/resources/articles/restoring-from-a-backup.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Automating SyncBackPro
## Scheduling and Background Tasks
SyncBackPro provides a number of ways to run a profile ([see below](AutomatingSyncBackSE.md#situations) for a complete list) however, there are two methods to run a profile based on the date and time:
- Scheduling with the [Windows Task Scheduler](When.md).
- Have a profile configured to [run in the background](WhenPeriodically.md).
A profile can be both scheduled and set to run in the background.
- Scheduled Tasks The Windows operating system comes with an integrated scheduler (the Windows Task Scheduler).
This scheduler lets the user configure Windows so that certain programs are run at certain times, e.g. every day at 9am. For example, most anti-virus software will prompt you to create a scheduled task to scan your computer for viruses every morning. There are a number of advantages to scheduling profiles:
- A scheduled profile can be configured to run even when you're not logged in or if someone else is logged in.
- A scheduled profile can switch the computer on (from hibernation or standby) to run the profile.
- The date & time of when the profile is run, and how often it is repeated (e.g. daily), is highly configurable.
- You do not need to have SyncBackPro running to have a profile run at the scheduled times.
This help file has a special section that shows you how to [Create a Schedule](CreatingaSchedule.md).
- Background Tasks SyncBackPro has the ability to run profiles at periodic intervals, e.g. every 2 hours.
This is different from scheduling a profile because it is not based on a specific date & time but instead the frequency. There are a number of disadvantages to having a profile run in the background:
- You must be logged in for the profile to run.
- SyncBackPro must be running for the profile to run.
- The profile can only be configured to run every x seconds/minutes/hours and not at a specific date or time.
If profiles are configured to run in the background then it's best to configure SyncBackPro so that it starts automatically when you login to Windows.
This help file has a special section that shows you how to [Create a Background Task](WhenPeriodically.md).
### Which method should be used?
In general it is better to schedule a profile instead of having it run in the background. However, if you want a profile to run frequently (e.g. hourly) then it is advisable to both schedule the profile and have it set to run in the background. This gives you the best of both worlds: your backup will be performed even when you are not logged in, and your backups will be performed frequently while you are working so that if you need to restore a file the backup copy will be more recent.
### Situations under which a SyncBackPro Profile can be run
The list below shows all the situations and configurations in which a SyncBackPro profile can be run:
- Manually run, e.g. profile selected in main window and the **Run** or **Restore** buttons are pressed
- [Scheduled](When.md) (note that schedules can also be set to run every x minutes, hours, etc. and not just once or daily, weekly, monthly etc.)
- Run when a **hot-key** is pressed (see [When -> Hot-key](WhenHotkey.md))
- Run on Windows startup or shutdown/logoff (see [When -> Login/Logout](WhenLoginLogout.md))
- When files or folders in the source or destination are changed (see [When -> Changes](WhenChanges.md))
- Run when a device is attached/inserted, e.g. a CD, a USB flash key, etc. (see the [When -> Insert](WhenInsert.md))
- Set to run in the background (see [When -> Periodically](WhenPeriodically.md))
- Run when an external programs starts (see [When -> Programs](WhenPrograms.md))
- Run externally from the command line, a batch file, or another program
- Run as part of a **Group Profile** which is run by one of the above methods
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Encryption
SyncBackPro provides several ways to protect your data using encryption. You can encrypt backup files so they cannot be read without a password, encrypt data as it is transferred over a network, and encrypt the passwords and settings stored by SyncBackPro itself.
## Encrypting Your Backup Files
When a profile uses [compression](CompressionSettings.md), files are stored in Zip archives. These Zip archives can be encrypted with a password so that the files inside cannot be read or extracted without knowing the password. This is the primary way to protect the content of your backups.
Two encryption methods are available:
- **Old style:** The traditional Zip encryption method. It is compatible with practically all third-party Zip programs. This is the only method available in SyncBackFree. While convenient, it provides weaker security than AES.
- **AES:** A strong encryption standard used by governments and financial institutions. It is compatible with WinZip 9 and later, 7-Zip, and PKWare SecureZip. AES encryption is recommended when security is important.
When using AES encryption, you can also choose to encrypt and compress the filenames and file details within the Zip archive. This prevents anyone from seeing what files are stored in the archive, even without the password. Filename encryption is compatible with PKWare SecureZip (when using Deflate or BZip2 compression) or 7-Zip (when using LZMA2 compression). It is not compatible with WinZip filename encryption.
To configure backup file encryption, open the profile settings and go to the [Compression](CompressionSettings.md) page in Expert mode. You will need to enable compression before encryption options become available.
## Why Encryption Requires Compression
A common question is why encryption is only available when compression is enabled. In SyncBackPro, file encryption is performed within the Zip archive format. The Zip container provides the framework for encrypting file data and, optionally, filenames. Without this container there is no mechanism to apply encryption to individual files during a backup. Using the Zip format also means your encrypted backups can be opened with widely available tools such as WinZip, 7-Zip, and PKWare SecureZip, rather than relying on a proprietary encryption format that would require specific software to decrypt.
If you want encryption but do not want your files to be compressed (for example, because they are already in a compressed format such as JPEG or MP4), you can set the compression level to zero on the [Compression](CompressionSettings.md) settings page. Files will be stored inside the Zip archive without compression but will still be encrypted. Note that if you enable filename encryption, the compression level must be greater than zero.
Compressing files before encrypting them is actually beneficial for security. Compressed data has higher entropy (it appears more random) than uncompressed data, which makes certain cryptographic attacks more difficult. In addition, compression removes patterns and redundancy from the data that an attacker could otherwise exploit. For this reason, compressing and then encrypting your backups provides both smaller file sizes and stronger protection.
## Passwords
The encryption password can be up to 79 characters long. It is set on the [Compression](CompressionSettings.md) settings page. You can also choose to be prompted for the password each time the profile runs, although this means the profile cannot run unattended.
If you change the password, only newly compressed files will use the new password. Files that were encrypted with the old password will retain that encryption. To re-encrypt all files with the new password, you would need to delete the existing Zip archives and run a full backup.
- **You are entirely responsible for remembering the password used. It is not possible under any circumstances for 2BrightSparks to recover lost passwords.**
Instead of storing the password in the profile settings, SyncBackPro can retrieve it from an external [Secrets Manager](SecretsManager.md) such as AWS Secrets Manager, Azure Key Vault, Google Cloud Secret Manager, HashiCorp Vault, Infisical, 1Password, Dashlane, Bitwarden, or Windows Credential Manager. This avoids storing the password locally.
## Encrypting Data in Transit
When transferring files over a network, the data can be encrypted during transmission to prevent eavesdropping:
- **FTP:** FTP connections can use FTPS (FTP over TLS/SSL) to encrypt the control channel, and optionally the data channel. SFTP connections are always encrypted. See the [FTP, Advanced](FTPAdvanced.md) settings page for details.
- **Cloud:** All cloud storage connections use encrypted HTTPS connections. See the [Cloud](Cloud.md) settings page for details.
- **SyncBack Touch:** Communication with [SyncBack Touch](SyncBackTouch.md) devices is encrypted by default. In V12, encryption is also supported when using Rapid Transfer.
Note that encrypting data in transit protects it while it travels over the network. It does not encrypt the files at their destination. To protect the content of the files themselves, use [Zip encryption](CompressionSettings.md) as described above.
## Cloud Server-Side Encryption
Cloud server-side encryption is only available in SyncBackPro.
Some cloud storage providers, such as Amazon S3 and Backblaze B2, offer server-side encryption. This means the files are encrypted on the cloud server itself, providing an additional layer of protection. Amazon S3 can use its own managed encryption keys, or you can provide your own customer encryption keys (SSE-C). See the [Cloud, Advanced](CloudAdvanced.md) settings page for details.
## NTFS (EFS) File Encryption
Windows NTFS volumes support the Encrypting File System (EFS), which encrypts individual files at the operating system level. This is separate from Zip encryption and from the transmission encryption described above.
SyncBackPro can automatically decrypt NTFS-encrypted files when they are copied to the source or destination. This is useful when backing up EFS-encrypted files to a location that does not support EFS, such as a FAT32 drive or a network share. See the [Decryption](Encryption.md) settings page for details.
## Protecting Stored Passwords and Settings
SyncBackPro stores passwords and other sensitive settings (such as FTP, cloud, and email credentials) in its configuration files. By default, these are encrypted using a basic method. For stronger protection, you can enable 256-bit AES encryption for stored settings in the [Global Settings](GlobalSettings.md). You can also use an external encryption key file or the Windows Data Protection API (DPAPI) to further secure your stored settings.
- If you use an external key file, keep it safe. If the key file is lost, all encrypted settings (including passwords and your serial number) will need to be re-entered. If you use the Windows Data Protection API, be aware that the encrypted settings are tied to your Windows user account and computer, and cannot be transferred.
## Related Topics
- [Compression](CompressionSettings.md) - configure Zip encryption method, password, and filename encryption
- [Decryption](Encryption.md) - NTFS (EFS) decryption settings
- [FTP, Advanced](FTPAdvanced.md) - FTP/FTPS transmission encryption
- [Cloud](Cloud.md) - cloud storage connections
- [Cloud, Advanced](CloudAdvanced.md) - server-side encryption settings
- [Global Settings](GlobalSettings.md) - AES encryption for stored passwords and settings
- [Secrets Manager](SecretsManager.md) - retrieve passwords from external secrets managers
- [Ransomware Detection](SetupRansomware.md) - detect ransomware-encrypted files before they overwrite your backups
**Further reading:** [Data Encryption](https://www.2brightsparks.com/resources/articles/data-encryption.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Licensing SyncBackPro
## Program Launch
When SyncBackPro is first launched, the evaluation window will be shown:
**Do not** try to manually enter the serial number as errors can easily be made.
The easiest way for you to enter your serial number is to copy your entire order email to the clipboard. SyncBackPro will find the serial number and automatically paste it into the text field. You can copy the email before SyncBackPro is running, or even when the serial number window is being displayed.
Click "OK" once the serial number has been entered.
- The **OK** button will only appear once the serial number has been entered correctly.
### How to Copy and Paste
Copying and pasting is the best way to ensure that you have entered the correct serial number, as it is easy to mistake the number zero '0', for the letter 'O'.
For those who are unsure on how to quickly copy and paste your serial number, here's how:
1. Run SyncBackPro and it will prompt you to enter your serial number. If it does not (e.g. because you've previously asked it not to prompt) then select **Enter Serial Number** via the **Serial Number** menu:
The Evaluation window will open:
2. Run your email program and click once in the body of your confirmation order email.
3. Hold down the 'Ctrl' and 'A' keys on the computer keyboard. This will select the whole body of your email.
4. Copy by holding down both the 'Ctrl' and 'C' keys then switch back to the SyncBackPro evaluation window.
5. Paste by holding down the 'Ctrl' and 'V' keys.
Your serial number will be automatically pasted into the Serial Number window:
6. Click the 'OK' button
Congratulations! You have now licensed SyncBackPro.
### Safe Installation
All versions of SyncBackPro can be safely installed over an existing installation. By doing this, you will ensure any profiles you have created continue to be active.
**Importing Profiles**
To import a Profile use the 'Import Profile' menu item under 'Profiles'.
**Lost Serial Number**
If you lose, or forget, your serial number simply click the **Find Serial** button in the **Serial Number** main menu. If you have a serial number it will be shown in **About** window (Help -> About, or click the status bar in the main window). If you've lost your serial number click the **Find Serial Number** button.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Installing a New Major Version
## Profiles Backup for SyncBackProV10 and earlier Users
When SyncBackPro is first run it will check to see if it has been installed over an older version, e.g. V12 installed over V11. If so, it makes a backup of the existing profiles and settings of the older version. The purpose of this backup is so that if you decide to uninstall the newer version and re-install the older version, then the older version can restore your old settings and profiles. It is important to note that you must install the latest version of SyncBackPro to be able to restore your settings and profiles. You can download old versions from https://www.2brightsparks.com/downloads-legacy.html
You can choose which folder to make a backup of the profiles and settings in, but it is recommended that you do not and instead use the default (e.g. C:\Users\***[username]***\Documents\SyncBackProV10 Backup\). The default location is a sub-directory of your users application data folder. After SyncBackPro has made the backup it will open a Windows File Explorer window so you can see which folder it is and the files in it.
The backup files will be automatically deleted by SyncBackPro once a valid serial number is entered and 60 days or more have passed since it was first run. You can manually delete the backup files yourself if you are sure you are not going to revert back to the older version.
For example:
- You are currently using SyncBackPro V11 and decide you want to try V12.
- You install SyncBackPro V12. Note that you **do not** uninstall V11 first.
- When V12 is first run it will make a backup of your V11 profiles.
- You try V12 and later decide you want to return to using V11, so you uninstall V12 and then install V11.
- When you first run V11 it will restore the profiles you had when you were using V11 previously.
## 32-bit and 64-bit
64-bit versions of SyncBackPro and SyncBackSE were introduced in SyncBackPro/SE V8 (June 2017). Unless you are using an old 32-bit version of Windows, you should install the 64-bit version. There is no 32-bit version of Windows 11 or server versions of Windows.
You should not have 32-bit and 64-bit versions installed at the same time. To switch from one version to another (e.g. 32-bit to 64-bit) you should export your profiles, uninstall the old version, install the new version and then import your profiles.
Be aware that there are [differences between the 32-bit and 64-bit versions](32bit64bit.md) due to how Windows itself acts differently.
---
# Creating Your First Profile
## Creating Your First 'Profile'
A profile stores information about the folders or files you would like to backup or synchronize using SyncBackPro. Profiles can be very specific as to what, when, and how a given task is performed, but we are going to be concentrating on creating a simple backup profile.
- Be aware that different settings and choices will become available during the profile creation process depending on what you would like SyncBackPro to do. If you are uncertain in any way about the different options available, please read the [Understanding Backup and Synchronization](NewUserGuide.md) before you create a profile.
The Profile Setup Wizard walks you though the process of setting up your profile.
The default settings in the SyncBackPro Profile Setup Wizard will help ensure you will easily create a Backup profile.
Click the **New** button located on the lower left of the program window:
Alternatively, choose **New** from the Profiles menu on the top left of the program window.
The Profile Wizard window will appear. The window is large to accommodate the varied settings and input fields that can appear during the profile setup process depending on the choices you make. If you would like to know more about a program window simply click the F1 key to view the help section relating to it.
Enter a name for your new Profile:
Click **Next** located at the lower right of the window.
For this example we are creating a backup profile which is the default option:
The wizard will ask whether you wish to choose the Source and Destination. The Source is where you are copying your files from, and the Destination is where you are copying your files to.
The **Internal/External drive, network path etc.** option is always the default on each side unless a different option is selected from the drop down lists. Available options can vary depending whether it will be the Source or Destination (for example, **Email messages** can only be a Source). It should be noted that selecting a non-default option for one side generally means you can only select the basic/default ('drive or network path') option for the other side. This is due to internal design aspects.
In this example where the default settings are used, you need only click the **Done** button. But if you choose non-default settings, an additional **Next** button may appear, whereby you can optionally specify additional settings (alternatively, you can complete them in the main Profile Setup window later). For example, if you choose FTP from the drop down list, and click **Next**, you will be prompted for your FTP details. For technical reasons, if you do click **Next** (where available), you will not be able to switch Back to the previous wizard screen and will thus - if you change your mind - need to **Abort** the wizard and restart the process.
An information window now appears informing you that you will be able to view and make changes to your profile. Click **OK**:
The Profile Setup window now opens. You will need to define your Source and Destination locations by clicking each of the folder icons (highlighted in the image below):
When you click the folder icon a directory selection window will appear in which you will locate your source or destination - Click **Select Folder**.
The Profile Setup Window will now display all the selections you have made. You will notice that by default SyncBackPro has automatically built options that will make your backup proceed more reliably and quickly than if you simply copy the contents of the My Documents folder into another drive:
Click **OK**. A Window will open which asks whether you would like to perform a [simulated run](SimulatedRuns.md). This allows you to check the profile functions correctly without actually copying any files. Click **Yes**.
In the following example a Business profile has been defined, the simulation accepted, and the Differences window opens.
The Differences window shows all the files that would be copied in an actual run. Click **Continue Simulation**:
The main program window will now open. You may now run this backup profile at any time by selecting a profile and then clicking the **Run** button:
The final section of this Quick Start guide shows you how to [Run Your Profile](FirstRun.md).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# First Run
## Running a Profile for the First Time
SyncBackPro processes files very quickly. Therefore, if you are only backing up or synchronizing a few files, you may not see the progress pop-out on the right of the window.
- When a profile is running (or paused) it will have two icons shown to the left of it: Click the icon to stop the profile. Click the icon to pause the profile. If the profile is already paused then it will instead show the icon. Click it to continue the profile.
A progress bar will appear in a pop-out at the right of the window as the files are being processed:
As the profile is being processed, an icon will also appear in the System Tray (Taskbar corner) located on the bottom right of your screen:
Animated SyncBackPro icon when a profile is running:
However, for it to appear in the Notification Area (also known as the System Tray and Taskbar corner), next to the clock, you may need to drag the icon to the position you want it to be. Alternatively:
- On Windows 11 right-click on the taskbar and selecting **Taskbar Settings**. This takes you straight to the **Settings > Personalization > Taskbar** screen. Expand the **Taskbar corner overflow** section and scroll down until you see the entry for SyncBackPro and then change the switch setting to **On**.
- On Windows 10 right-click on the taskbar and selecting **Taskbar Settings**. This takes you straight to the **Settings > Personalization > Taskbar** screen. Scroll down to the **Notification Area** section and click the "**Select which icons appear on the taskbar**" link. Use the list here to customize which icons appear on the taskbar. Icons set to **On** will appear on the taskbar, while icons set to **Off** will be hidden behind the up arrow.
- On older versions of Windows you may need to press the **Customize...** link and configure Windows to **Show icons and notifications** for SyncBack:
Depending on your settings, the [Differences Window](TheDifferencesWindow.md) may appear after the initial scan takes place. The Differences Window shows what will happen to the files (whether they will be copied, deleted, or moved). Once you have reviewed the differences, click "Continue":
- In this example the Differences Window shows **2** collisions. A "collision" is when a file in the source and destination differ but have the same name. In other words, the file is in both the source and destination but is modified in some way, perhaps by date, size etc.
A notification of collisions occur in the **Differences** window which appears by default when making a backup (note however there are circumstances when the **Differences** window does not appear, for example when the user has chosen not to show the window).
Collisions are shown in red in the **Differences** window to highlight there are going to be changes made when you continue the profile task. If the user views the **Differences** window carefully, the user has the option to make choices about whether they want to accept the changes SyncBackPro will make. The user has the option to bypass these choices by selecting a specific item in the **Differences** window with a right click. A different action may then be chosen.
After the profile has been processed the main window will look slightly different as the temporary **stop** and **pause** icons are no longer viewable.
You have now successfully created a simple backup profile. To create a Group Profile you'll need to create two profiles or more. You'll then have the opportunity of running these profiles as one. To find out more about this feature go to [Creating a Group Profile](CreatingaGroupProfile.md).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Using SyncBackPro
## A Guide to Using SyncBackPro
SyncBackPro is a powerful, easy to use commercial program that helps you backup and synchronize your files to: the same drive; a different drive or medium (SD card, USB key, CompactFlash, etc); an FTP or SFTP server; an Email server; a Network; the cloud; a Media Transfer Protocol (MTP) device, e.g. a phone; or a Zip archive. SyncBackPro can copy locked and open files as easily as the usual closed files. This allows you to backup, synchronize and restore any data you wish to.
Using SyncBackPro guides you through the essential functions and operation of SyncBackPro.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Basic Operation
## Essential Knowledge
If you have never used SyncBackPro before, you are strongly advised to read this section of the help file:
### Basic Operation
[The Main Window](TheMainWindow.md)
[Exporting and Importing](ExportingImportingProfiles.md)
[Creating a Profile](CreatingaProfile.md)
[Running a Profile](RunningaProfile.md)
[Creating a Group Profile](CreatingaGroupProfile.md)
[Restoring a Backup](RestoringaBackup.md)
[Creating a Schedule](CreatingaSchedule.md)
[Burger Menu](PreferencesMainMenu.md)
[Profiles Pop-Up Menu](ProfilesPopUpMenu.md)
[View](ColumnsMainMenu.md)
[Global Settings](GlobalSettings.md)
[Dialogs](Dialogs.md)
[Comparison Programs](ComparisonPrograms.md)
[Logging Settings](LogSettings.md)
[Windows Shell Extension](ShellExtension.md)
[Linked Cloud Accounts](LinkedCloudAccounts.md)
[Queue](Queue.md)
[Shared Settings](SharedSettings.md)
[Profile Progress](ProgressBar.md)
[Exploring SyncBackPro](ExploringSyncBackSE.md)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# The Main Window
SyncBackPro is a simple program to use with many options and user definable parameters. The program is perfect for the novice and expert alike.
All the essential tasks in SyncBackPro can be carried out from the main window by clicking an icon on the lower toolbar:
SyncBackPro also has a menu at the top of the window that provides easy access to all its functions, and a right click pop-up menu that is available when a profile is highlighted:
At the top-left is also a burger menu , which when clicked, has [further options](PreferencesMainMenu.md):
The main window below shows SyncBackPro running a backup 'Profile' called **Website**:
Once a Profile has been defined, the user need only click the **Run** button to carry out the task. Alternatively the Profile can be [scheduled](When.md) to run at certain times and dates:
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Exporting and Importing Profiles
You can copy a profile from one installation of SyncBackPro to another by exporting and importing profiles. This also lets you make a backup of your profiles settings.
- **To export profiles:** select the profile (or profiles) in the main window and select **Export / Import -> Export Profile** from the top toolbar, then choose where to save the profile. To export all your profiles press **Ctrl-A** then select **Export / Import -> Export Profile**. Note that unless your groups are expanded the profiles in them will not be selected.
- **To import profiles:** select **Export / Import -> Import Profile** from the top toolbar then choose the file(s) that contains the profile. You can import profiles from any current or previous version of SyncBackPro or SyncBack freeware. When importing profiles exported from versions of SyncBack freeware, or SyncBackSE V3, then some directory selections may not be imported. It is recommend that **group profiles** are imported last to ensure the profiles in the group exist at the time the group is imported, otherwise the group may fail to import.
- **Upload profiles to SBM Service:** If you are using the [SyncBack Management Service](SBMService.md) (SBMS) then you can upload the profiles you want managed by SBMS using this menu item. Select the profiles you want to upload and then select this menu item. This item is only enabled if you are connected to an SBMS server and are an SBMS administrator.
- **Import profiles from** **SyncBackSE:** If you also have SyncBackSE installed, when SyncBackPro is run for the first time it will try to automatically import your SyncBackSE profiles. If this fails, or you decide at that time not to import the profiles, you can use this menu at a later date to try again.
- **Import** **profiles from** **SyncBackLite:** If you also have SyncBackLite installed, when SyncBackPro is run for the first time it will try to automatically import your SyncBackLite profiles. If this fails, or you decide at that time not to import the profiles, you can use this menu at a later date to try again.
- **Import** **profiles from** **SyncBackFree:** If you also have SyncBackFree installed, when SyncBackPro is run for the first time it will try to automatically import your SyncBackFree profiles. If this fails, or you decide at that time not to import the profiles, you can use this menu at a later date to try again.
- **Import profiles from backup:** If SyncBackPro is configured to [backup your profiles automatically](GlobalSettings.md#backupprofiles) then select this to restore profiles from that backup. Multiple profiles can be restored from backups, but only one backup of a particular profile can be selected.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Creating a Profile
### Profile Types
Choose a [Backup](Backup.md) profile when you want to backup (copy) your new and modified files to another place, e.g. an external hard drive or an FTP server.
| | | |
| --- | --- | --- |
| **Source** | Backup | **Destination** |
Choose a [Synchronization](Synchronize.md) profile when you have two directories in which files are changing and you want them both to contain the same files. For example, you may have a directory on your computer containing documents you are working on. A colleague may also be working on documents on his computer. If you want to copy his new and modified files to your local directory, and copy your new and modified files to his directory, then you need to use a Synchronization profile.
| | | |
| --- | --- | --- |
| **Source** | Synchronization | **Destination** |
Choose a [Mirror](Mirror.md) profile when you want one directory to be identical to another directory. It is not the same as a backup because it deletes files. It is also not the same as synchronization because it only copies files in one direction.
| | | |
| --- | --- | --- |
| **Source** | Mirror | **Destination** |
### What is the difference between Basic and Intelligent Synchronization?
Intelligent Synchronization keeps track of what changed the last time the profile was run so that it knows if a file has been deleted, created, or changed since the last profile run. This helps you (and SyncBack) make an informed decision about what to do when something changes. It also gives you a comprehensive choice of options on what to do with a file when specific things happen, e.g. the file is deleted for the source but not the destination. Regular synchronization does not keep track of changes and has a limited set of options. Whenever possible you should use Intelligent Synchronization instead of regular synchronization. If you import a sync profile from V3 then it will not be using Intelligent Synchronization (as that feature was not available in older versions) and instead will be using the old basic synchronization.
Choose a Group profile when you want to create a profile that contains other Backup or Synchronization profiles. This allows you to run many profiles at once.
So what is the difference between a backup process and a synchronization process?
- A backup process copies files in one direction: from the source to the destination. A Synchronization process copies files in both directions: from the source to the destination and from the destination to the source.
### Creating Profiles
A profile stores information about the folders or files you would like to backup or synchronize using SyncBackPro. Profiles can be very specific as to what, when, and how a given task is performed, but we are going to be concentrating on creating a simple backup profile.
- Be aware that different settings and choices will become available during the profile creation process depending on what you would like SyncBackPro to do. If you are uncertain in any way about the different options available, please read the [Understanding Backup and Synchronization](NewUserGuide.md) before you create a profile.
The Profile Setup Wizard walks you though the process of setting up your profile.
The default settings in the SyncBackPro Profile Setup Wizard will help ensure you will easily create a Backup profile.
Click the **New** button located on the lower left of the program window:
The Profile Wizard window will appear. The window is large to accommodate the varied settings and input fields that can appear during the profile setup process depending on the choices you make. If you would like to know more about a program window simply click the F1 key to view the help section relating to it.
Enter a name for your new Profile:
Click **Next** located at the lower right of the window.
For this example we are creating a backup profile which is the default option:
The wizard will ask whether you wish to choose the Source and Destination. The Source is where you are copying your files from, and the Destination is where you are copying your files to.
The **Internal/External drive, network path etc.** option is always the default on each side unless a different option is selected from the drop down lists. Available options can vary depending whether it will be the Source or Destination (for example, **Email messages** can only be a Source). It should be noted that selecting a non-default option for one side generally means you can only select the basic/default ('drive or network path') option for the other side. This is due to internal design aspects.
In this example where the default settings are used, you need only click the **Done** button. But if you choose non-default settings, an additional **Next** button may appear, whereby you can optionally specify additional settings (alternatively, you can complete them in the main Profile Setup window later). For example, if you choose FTP from the drop down list, and click **Next**, you will be prompted for your FTP details. For technical reasons, if you do click **Next** (where available), you will not be able to switch Back to the previous wizard screen and will thus - if you change your mind - need to **Abort** the wizard and restart the process.
An information window now appears informing you that you will be able to view and make changes to your profile. Click **OK**:
The Profile Setup window now opens. You will need to define your Source and Destination locations by clicking each of the flashing blue folder icons. Be aware these will change to yellow folder icons after a few seconds:
When you click the folder icon a directory selection window will appear in which you will locate your source or destination - Click **Select Folder**.
The Profile Setup Window will now display all the selections you have made. You will notice that by default SyncBackPro has automatically built options that will make your backup proceed more reliably and quickly than if you simply copy the contents of the My Documents folder into another drive:
Click **OK**. A Window will open which asks whether you would like to perform a simulated run. This allows you to check the profile functions correctly without actually copying any files. Click **Yes**.
In the following example a Business profile has been defined, the simulation accepted, and the Differences window opens.
The Differences window shows all the files that would be copied in an actual run. Click **Continue Simulation**:
The main program window will now open. You may now run this backup profile at any time by selecting a profile and then clicking the **Run** button:
The next section of this help file shows you [how to 'Run' the Profile](RunningaProfile.md).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Running a Profile
To run the Profile select the profile in the main program window, then click the **Run** button:
- When a profile is running (or paused) it will have two icons shown to the left of it: Click the icon to stop the profile. Click the icon to pause the profile. If the profile is already paused then it will instead show the icon. Click it to continue the profile.
A pop-out window on the right will appear as the files are being processed:
As the profile is being processed an icon will also appear on the Windows System Tray (Taskbar corner) located on the bottom right of your screen.
SyncBackPro icon when a profile is not running:
Animated SyncBackPro icon when a profile is running:
However, for it to appear in the Notification Area (also known as the System Tray and Taskbar corner), next to the clock, you may need to drag the icon to the position you want it to be. Alternatively:
- On Windows 11 right-click on the taskbar and selecting **Taskbar Settings**. This takes you straight to the **Settings > Personalization > Taskbar** screen. Expand the **Taskbar corner overflow** section and scroll down until you see the entry for SyncBackPro and then change the switch setting to **On**.
- On Windows 10 right-click on the taskbar and selecting **Taskbar Settings**. This takes you straight to the **Settings > Personalization > Taskbar** screen. Scroll down to the **Notification Area** section and click the "**Select which icons appear on the taskbar**" link. Use the list here to customize which icons appear on the taskbar. Icons set to **On** will appear on the taskbar, while icons set to **Off** will be hidden behind the up arrow.
- On older versions of Windows you may need to press the **Customize...** link and configure Windows to **Show icons and notifications** for SyncBack:
Depending on your settings, the Differences Window may appear after the initial scan takes place. The Differences Window shows what will happen to the files (whether they will be copied, deleted, or moved). Once you have reviewed the differences, click **Continue Run**:
- In this example the Differences Window shows 2 collisions. A "**collision**" is when a file in the source and destination differ but have the same name. In other words, the file is in both the source and destination but is modified in some way, perhaps by date, size etc. A notification of collisions occur in the "Differences" window which appears by default when making a backup (note however there are circumstances when the "Differences" window does not appear, for example when the user has chosen not to show the window). Collisions are shown in red in the "Differences" window to highlight there are going to be changes made when you continue the profile task. If the user views the Differences window carefully, the user has the option to make choices about whether they want to accept the changes SyncBackPro will make. The user has the option to bypass these choices by selecting a specific item in the Differences window with a right click. A different action may then be chosen.
After the profile has been processed the main window will look slightly different as the temporary "stop" and "pause" icons are no longer viewable.
You have now successfully created a simple backup profile. To create a Group Profile you'll need to create two profiles or more. You'll then have the opportunity of running these profiles as one. To find out more about this feature go to [Creating a Group Profile](CreatingaGroupProfile.md).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Run Prompted
To run a profile prompted, select it in the main window and choose **Run (Prompted)** from the drop-down menu next to the **Run** button:
Alternatively, right-click on a profile in the main window and select **Run (Prompted)** from the pop-up menu. You can also run a profile simulated with prompts. When a profile is run as a Restore, you are always prompted.
## What is a Prompted run?
Prompted basically means you are given options before the profile is run. For example, you can change the **Source** directory or choose which files to backup:
Restores are always run prompted.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Simulated Runs
A simulated run lets you preview exactly what SyncBackPro will do when a profile is run, without actually copying, moving, or deleting any files. It is a risk-free way to verify that a profile is correctly configured before using it with your real data.
- **Important:** SyncBackPro copies, moves, and deletes data. You should always run a simulation before running a new or modified profile with your actual files. This is especially important for [mirror](Mirror.md) and [synchronize](Synchronize.md) profiles, which can delete files.
## What a Simulated Run Does
During a simulated run, SyncBackPro performs the full scanning and comparison process just as it would during a real run. It examines the files in the source and destination, determines what has changed, and shows you the results in the [Differences Window](TheDifferencesWindow.md). The key difference is that no files are actually copied, moved, or deleted. Everything else, including the scanning, comparison, and log file creation, proceeds as normal.
This means you can see:
- Which files would be copied from the source to the destination (or in both directions for synchronize profiles)
- Which files would be replaced or overwritten
- Which files would be deleted (for mirror and synchronize profiles)
- Whether there are any collisions (files that have been changed in both the source and destination)
- Whether your file filters and selections are working as expected
## How to Start a Simulated Run
There are several ways to start a simulated run:
### From the Run Button
Select a profile in the main window, then click the drop-down arrow on the **Run** button and choose **Simulated Run**:
### From the Right-Click Menu
Right-click on a profile in the main window and select **Simulated Run** from the pop-up menu. The keyboard shortcut is **Ctrl-S**.
You can also start a simulated run with [prompting](RunPrompted.md) by choosing **Simulated Run (Prompted)** from the right-click menu. This allows you to temporarily change certain profile settings before the simulation begins.
### From the Command Line
You can also run a simulated run from the [command line](CommandLineParameters.md) using the **-s** parameter.
## Simulated Restore
Just as you can simulate a run, you can also simulate a [restore](Restore.md). A **Simulated Restore** shows you what would happen if you restored files from a backup, without actually copying any files back. This is available from the drop-down menu on the **Restore** button or from the right-click menu.
A simulated restore is recommended before performing an actual restore, because a restore operation is not reversible and may not work in the way you expect. For example, some files in the backup may be older than the files currently on your computer.
## Reading the Results
After a simulated run completes the initial scan, the [Differences Window](TheDifferencesWindow.md) will appear. This window lists every file that would be affected, along with the action that would be taken (e.g. copy, replace, delete, skip). You can review the list and check that:
- The correct files are being included (and files you want excluded are not listed)
- The actions (copy, replace, delete, etc.) are what you expect
- No files are being unexpectedly deleted or overwritten
- Any collisions (shown in red) are handled appropriately
When you click **Continue Simulation** the simulation will complete and a log file will be created, just as it would for a real run. You can review this log afterwards to confirm everything is as expected.
## When to Use a Simulated Run
You should use a simulated run:
- **After creating a new profile** - to confirm it is configured correctly before using it with your real files
- **After modifying a profile** - to verify that the changes you made produce the expected results
- **Before a restore** - to check which files will be restored and avoid unintended overwrites
- **When using mirror or synchronize profiles** - because these profile types can delete files, it is especially important to verify their behaviour
- **When changing file filters or selections** - to confirm that the right files are being included and excluded
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Creating a Group Profile
Once you have created two or more profiles you may group them together. Group profiles are collections of pointers to profiles. This allows you to run multiple profiles in one go instead of having to run each profile one after another.
Before creating a group, you may wish to read the [section](Groups.md) that explains what a group is and the types of groups.
This page of SyncBackPro Help runs through the simple procedure you'll need to follow.
### Creating a Group Profile
Click the **New** button from the bottom toolbar. Enter a name for your profile and tick the **This is a group profile** checkbox:
Click the **Next** button. An information window informs you the Profile Setup window will open. You may click the **Do not prompt me again** if you do not wish to be notified of this in the future:
The Group Profile Setup window will open. The example below shows two profiles that can be grouped together. If you have many categories of profiles, there is an drop-down option to filter the categories that are listed.
You can add and remove profiles from the group using the **<,** **<<,** **>**, and **>>** buttons. You can order the profiles in the group by selecting one or more profiles and using the up and down buttons on the right (which are currently grayed out as there are no profile in the group yet). Shortcut keys are also available (see below).
Profiles in the group are executed in the order displayed (first to last):
After you click **OK** an informational window will ask whether you wish to perform a simulated run which provides a report on what will be copied or deleted without actually copying or deleting any files.
In the example below the Simulated Run option has been chosen (recommended), and the [Differences Window](TheDifferencesWindow.md) shows the files that will be copied if an actual run is performed. Click **Continue Simulation**:
The main program window now shows when the Group Profile was last run, and also that the simulation was successful for both profiles that were run:
After you click **OK** the main program window will show the group. Note how the small box to the left of the "Group" profile can be clicked to show what profiles are in the group.
### Modifying Group Profiles
To alter the profiles in a group, select a Group Profile in the main window and click the **Modify** button in the toolbar (alternatively right-click on the profile in the windows and select **Modify** or select the profile to modify and press Ctrl-M). The profile configuration window will then appear. You can now change what profiles are associated with a group, what order the profiles are run in the group, and the settings for the group. For help on the other settings see the [Easy Mode](EasyMode.md) and [Expert Mode Configuration](ExpertMode.md) sections.
Under **'All available profiles'** you can see the profiles that can be put into the group. There is also a drop-down list so that you can filter the list to include all profiles, non-group profiles, or group profiles. You can add and remove profiles, and re-order profiles in a group (unless it is being run in parallel) using drag & drop. Alternatively, you can add and remove profiles using the horizontal arrow buttons between the two lists, and can order the profiles using the up and down arrow buttons on the right of the window.
Run profiles in parallel: By default, the profiles in a group are run in the order you provide, from first to last. The next profile is started once the previous one finishes. You can choose to have all the profiles in a group run at the same time by enabling this option. It is not recommended you select this option because it will probably increase the time taken to run the profiles and overload your computer, drive, network, memory, etc. Note that if your group contains other groups then the group will be run serially and not in parallel.
Run profiles in a queue: [Group Queue](Groups.md) profiles are different from standard groups. With a Group Queue you cannot run the profiles in parallel or stop the group if any profiles fail. Unlike standard groups, you can have the same profile in a group queue more than once, and can also define how to run the profile. See the [Group Queue](Groups.md) section for more details.
Stop the group if any profile fails: When enabled, if a profile fails then the entire group is stopped. This can be useful if a profile in the group needs previous profile(s) to have worked correctly. This option is only available if the profile is run serially, i.e. not in parallel, and cannot be used with Group Queues.
- Shortcut keys are available when changing what profiles are in a group and their order: **Left key:** Removes selected profiles from the group. **Shift + Left key:** Removes all profiles from the group. **Right key:** Adds selected profiles to the group. **Shift + Right key:** Adds all profiles to the group. **Alt + Up key**: Moves the selected profiles up in the group. **Alt + Page Up key**: Moves the selected profiles up several positions in the group. **Alt + Home key**: Moves the selected profiles to the top of the group. **Alt + Down key**: Moves the selected profiles down in the group. **Alt + Page Down key**: Moves the selected profiles down several positions in the group. **Alt + End key**: Moves the selected profiles to the end of the group. You can of course use the standard Windows practice of selecting multiple profiles by holding down the Shift key or Ctrl key while selecting a profile(s).
### Expert Options
Additional settings are available when choosing the Expert options from the either the burger menu at the top-left of the menu, or by clicking the **Expert** button on the left:
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Groups
A group is simply a collection of profiles that are run in the order you define, e.g. run "profile 1", then "profile 2" and finally "profile 3". They are often used when you want to copy from two or more different locations (e.g. a local drive, cloud, FTP server, etc.) or want to copy the same files to two or more different locations. Another example of when you may want to use a group is when you want two or more profiles to run in order, and if one of them fails, then to stop running.
Groups can contain other groups but a group is not the same as a directory in a file system. A profile can be in multiple groups, and when you remove a profile from a group it does not delete the profile. Likewise, deleting a group does not delete the profiles in the group.
With a standard group, if you run a group, and a profile in that group is already running (outside of the group), then the group will fail to run. With a group queue, if you run a group, and a profile in that group is already running (outside of the group), then it has no effect. As there is only one queue, when you run a group queue, the profiles in the group queue are simply added to the queue, and the profiles in the queue are run in order. You could, for example, run a group queue and immediately run it again. That would add the group queues profiles to the queue twice.
Unless you are using group queues, a group can only contain a profile once, and that includes within any sub-groups.
Groups also have settings, like profiles, although fewer settings are available. For example, you can define a hot-key to run the group. A group can also define variables, which can be very useful for profiles within the group.
There are two types of groups:
- **Groups**, which have always been in SyncBack. These can also be used to run two or more profiles in parallel, i.e. run multiple profiles at the same time. A group cannot contain a group queue.
- **Group Queues**, which were introduced in V11. These are a combination of a group and a [queue](Queue.md). A group queue is similar to a standard group except a profile can be in the group more than once. A group queue cannot contain other groups. Also, you can define how a profile should be run, e.g. simulated.
| | **Standard Group** | **Group Queue** |
| --- | --- | --- |
| Availability | SyncBackPro, SyncBackSE, SyncBackFree | SyncBackPro, SyncBackSE |
| Can run profiles in parallel | Yes | No |
| Can contain other groups | Yes
(excl. Group Queues) | No |
| Can contain the same profile more than once | No | Yes |
| Can define how to run a profile in the group | No | Yes |
| Can abort the group if a profile in the group fails | Yes | No |
| Has a log file | Yes | No |
| Has a last successful run time and last run result | Yes | Only last run date and time |
The type of group you use depends on your requirements. Group Queues use less resources, but cannot be run in parallel, for example. If you just want to run a set of independent profiles in order then a group queue is the best option.
On the **Main** page, when editing a creating a group, and it is a **Group Queue**, you can right-click on a profile in the group and define how it is to be run:
For example, in the above image the group has the same profile twice, and for the second run of the profile it is to be run as an [integrity check](CopyDeleteIntegrity.md) (note that no check is done if the profile has integrity checking enabled). Select **Clear** from the pop-up menu to run the profile as per normal. **Rescan** is to force a rescan for [Fast Backup](FastBackup.md) profiles.
The main window of SyncBack will indicate how a profile in a group queue is to be run:
### "When" Settings and Group Queues
A group profile can be configured to automatically run in a number of situations:
- Via a [schedule](When.md)
- When a [hot-key](WhenHotkey.md) is pressed
- On [login or logout](WhenLoginLogout.md) of Windows
- When a device is [inserted](WhenInsert.md), e.g. USB storage
- [Periodically](WhenPeriodically.md), e.g. every 15 minutes
- When a [program starts or stops](WhenPrograms.md)
- When [SyncBack Touch](WhenSyncBackTouch.md) starts
- When the [display powers off or a screen saver starts](WhenDisplay.md)
- A [time-limit](WhenTimeLimit.md) can also be set. However, this is not possible with Group Queues.
If these settings are used with a **Group Queue** then it is important to remember that the profiles in the group are added to the queue. Profiles in a queue are started in the order they are added to the queue, i.e. the first item added to the queue if run first. Also, profiles in a queue are not run until no other profiles are running.
For example, if you have a Group Queue and configure it to run periodically (not via the schedule) then the group may not run immediately. This is because first, the currently running profiles must finish and then any profiles already in the queue (at the time the group was run) must finish. Only then will the profiles in the group queue be started.
With a schedule, this is not a problem because a new instance (process) of SyncBack will be started, and because of this there is no possibility of a profile already running or there to be anything in the queue. However, for all the other situations (e.g. a USB key being inserted) they require that SyncBack is already running, so profiles may already be running and there may already be a queue.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Restoring a Backup
Restoring a backup in SyncBackPro is a simple matter of selecting a profile and clicking the **Restore** button located in the lower toolbar (you may also select **Restore** from the right-click pop-up menu). Note that you cannot run a restore with a [Synchronize](Synchronize.md) profile.
| | | |
| --- | --- | --- |
| **Source** | | **Destination** |
When a profile is run as a Restore the following dialog first appears:
Click **Yes** to continue. The **Restore Wizard** then appears:
There are three tabs at the top of the window:
- **Basic**: This is where you can choose which folders to restore from and to. You can also choose the rollback to a specific date.
- **Advanced**: Depending on your profiles settings, the Advanced tab may show a number of options. These are explained below.
- **History**: Like in the [profile configuration](SimpleHistory.md), you can view the history of the profile. You can select a rollback to date by double-clicking an entry in the History table. If there is no history for the profile then the History tab is not shown.
You can optionally choose which files and folders to restore by clicking the **Choose sub-directories and files** button. Note that you will still have an opportunity to select files and folders to restore once the profile is run via the **Differences** window.
Click the **Restore Now** button to begin the restore process. If you are running SyncBackPro elevated, and are **not** using a server version of Windows, you are then prompted if you would like to create a Windows System Restore Point. This provides a way to roll-back any changes made in Windows if the Restore fails. See the [Windows System Restore Point](WindowsSystemRestorePoint.md) section for more details.
After these steps, and the source/left and destination/right are scanned, the [Differences](TheDifferencesWindow.md) window will appear. This gives you another opportunity to abort and also examine and optionally change which files will be restored and how they are restored.
- If your backups are [incremental](Glossary.md#incremental) or [differential](Glossary.md#differential), i.e. you are using [variables](Variables.md) in your destination, then you'll need to think about what order to restore in. For a **differential** backup you would restore the full backup first, followed by the newest differential backup. However, if your last backup run was a full backup then you only need to restore from the full backup. For an **incremental** backup you would restore the full backup first, followed by oldest incremental backup to the newest incremental backup. However, if your last backup run was a full backup then you only need to restore from the full backup. For example, if your backups are stored at D:\My Backup\%DAYOFWEEK%\, and you do a full backup on Monday, and today is Wednesday (and today's backup has already run) then you'd restore Monday first (D:\My Backup\1\), then Tuesday, and finally Wednesday. This makes sure you have the newest files restored as they will overwrite older files already restored. It also makes sure you restore all your files because the incremental backup directories will only contain some of your files.
### Restore From
You are given the opportunity to restore from a different folder. This is especially important if your destination (backup) folder (where the files will be restored from) contains variables:
- If you are planning to restore from a sub-directory of your original destination directory (or, from somewhere else altogether), you may have issues with file & folder selections and filters. See the [Restoring and Selections](RestoringSelections.md) section for more details.
### Restore To
You are given the opportunity to restore to a different folder. This is especially useful if:
- You wish to use a different empty folder to force a full restore, and/or segregate the resulting restored files from the original source/left files
- You wish to restore only a subset of your files, and are thus specifying a particular sub-folder on each side
- Your source/left folder (where the files will be restored to) contains variables
- If you are planning to restore to a sub-directory of your original source directory (or, to somewhere else altogether), you may have issues with file & folder selections and filters. See the [Restoring and Selections](RestoringSelections.md) section for more details.
### Advanced
Depending on your profiles settings, the Advanced tab may show a number of options.
### Ransomware
If the profile, or one of the profiles in the group, is configured to [detect ransomware](SetupRansomware.md) in the source then the following question will be asked:
```
Would you like to switch off ransomware detection for the location you are restoring to?
```
When restoring you may not have any files in the source or the ransomware detect file in the source may no longer exist. By default, and for security reasons, this option is not enabled. However, you may want or need to enable it.
### Moving Files
If the profile, or one of the profiles in the group, is configured to move files then the following question will be asked:
```
The profile is configured to move files. Would you like to disable file moves during this restore?
```
When restoring you would typically not want your backup files moved as you would lose your backup files. It would be better to copy them so after the restore you still have the backup files. By default, files are not moved when restoring.
### Delete All Files
If the profile, or one of the profiles in the group, is configured to delete all the files in the source/left and/or destination/right then the following question will be asked:
```
The profile is configured to delete ALL files and folders on Source and/or Destination. Would you like to disable deleting all files during this restore?
```
When restoring you would usually not want your backup or original files deleted. By default, all files are not deleted when restoring.
### Delete Files
If the profile, or one of the profiles in the group, is configured to delete files that are only in the destination/right then the following question will be asked:
```
Profile is configured to delete files from Destination that are not on Source. Would you like to disable file deletion during this restore?
```
When restoring you would probably not want files only in the source/left to be deleted (as this is a restore the source/left becomes the destination). By default, files are not deleted when restoring.
### Newer Files
If the profile, or one of the profiles in the group, is not configured to keep newer files then the following question will be asked:
```
Profile is configured to allow older files from Source to replace newer files on Destination. Would you like to disable overwriting newer files during this restore?
```
When restoring you probably do not want to replace any newer original files with older backup files. By default, older files are not replaced when restoring.
### Before/After Programs
If the profile, or one of the profiles in the group, is configured to run a program before and/or after the profile then the following question will be asked:
```
The profile is configured to execute external programs before and/or after the profile is run. Do you still want to run those external programs?
```
When restoring you may not wish to run those programs. By default, the before and/or after programs **are** run.
### Switching off Selections and Filters
If you changed the directory to restore from, or are restoring from a sub-directory of your destination, then it is strongly advised that you switch off the filters and selections. See the [Restoring and Selections](RestoringSelections.md) section for more details.
### Reverse Group
In some cases you may want the group to run in reverse. For example, if you have a group that does a backup to a Zip file then copies the Zip file to an FTP server you probably need to run this in reverse, i.e. first retrieve the Zip file then unzip.
**Further reading:** [Restoring From a Backup](https://www.2brightsparks.com/resources/articles/restoring-from-a-backup.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Creating a Schedule
SyncBackPro interfaces with the Windows Task Scheduler to allow you to run profiles automatically at certain times, e.g. run a backup profile every day at 5am. For an overview of scheduling and background tasks go to [Automating SyncBackPro](AutomatingSyncBackSE.md).
### Creating a Schedule
To create a schedule for a profile, select the profile on the main screen and click the **Schedule** button (you can also create a schedule when [modifying a profile](When.md)). If there is no schedule for the profile, a dialog box will appear (if you have a schedule already then a different window will appear - see Modifying a Schedule below).
There are also two drop-down menu options on the **Schedule** button. These only apply when creating a new schedule. If there is already a schedule then it will simply edit the existing schedule:
- **Run whether user is logged on or not**: This is the default and what happens when the **Schedule** button is clicked. To create schedules that run even when you are not logged in it is a requirement of Windows security that you provide your Windows login password. This cannot be your pin, facial recognition, finger-print, etc. It **must** be your login password. If this option is not available, see the [Scheduling Problems](SchedulingProblems.md) page.
- **Run whether user is logged on or not (do not store password)**: This creates a schedule that will run if you are logged on or not. However, no password is stored (or required), but this has important limitations. If you are performing a backup/sync with a network drive, or are accessing the network, or using FTPS, you should not use this option otherwise the schedule may fail to run. It will probably also fail if trying to access NTFS encrypted files. There may be other side effects from enabling this option. If this option is not available, see the [Scheduling Problems](SchedulingProblems.md) page.
Click **Yes**.
On Windows, by default, you are not allowed to use blank/empty passwords when scheduling tasks. If this is the case on your installation of Windows then a prompt will appear asking you if you would like the restriction removed (no prompt is given if the restriction has already been removed):
Click **Yes** to remove the restriction. If your Windows login password is blank/empty, and this restriction is not removed, then your scheduled task will fail to run.
You can choose to run a profile daily, weekly, or monthly (for other repeating type you'll need to edit the schedule directly using the Windows Task Scheduler). You can also choose how often the profile should be run (repeating).
To change the default settings for a schedule, click the **Settings** tab at the top of the window:
### Security
- **Run only when user is logged on:** If this checkbox is ticked then the profile will only run at the scheduled times if you are logged into Windows. The benefit of this method is that you do not need to enter your Windows login password. The drawback is that you must be logged on for the profile to run.
- **Run whether user is logged on or not:** If this checkbox is ticked then the profile will run even if you are not logged in. You will need to enter your login password, unless the "Do not store password" option is ticked. If this option is not available, see the [Scheduling Problems](SchedulingProblems.md) page.
- **Do not store password:** If you are performing a backup/sync with an internal drive, or an external drive, then you can tick this checkbox. In this case you do not need to enter your Windows login password. However, if you are performing a backup/sync with a network drive, or using encrypted drives, or are accessing the network or using FTPS you should not use this option otherwise the schedule may fail to run. It will probably also fail if trying to access NTFS encrypted files. There may be other side affects from enabling this option. If this option is not available, see the [Scheduling Problems](SchedulingProblems.md) page.
- **Run interactively if user logged on:** If this checkbox is ticked then the scheduler will run SyncBackPro in the same session as the logged on user. If you are using Windows 10 then it is not recommended that you use this option as it will likely mean the [schedule is not run](http://support.2brightsparks.com/knowledgebase/articles/934893-the-requested-operation-requires-elevation-0x8007). If this checkbox is not ticked then the scheduler will run SyncBackPro in session 0, i.e. any logged in user will not see SyncBackPro being run.
### Repeating
- **Run this profile every...:** Using this option you can have a schedule run repeatedly at the scheduled time. It is unlikely that you will need this option. For example, you may want the profile to be run every day at 9am, and once it is run for it to be run again every hour for the next 6 hours.
- To schedule a profile to only run once at a scheduled time select a **Daily** profile and enter 0 for the **Recur every x days** value.
### Misc.
- **When all profiles end:** You can optionally have the computer reboot, shutdown, etc. once the profiles have completed. **IMPORTANT**: SyncBackPro only looks at the final command line parameter to decide on what action to take (if any). If you are manually editing your schedules in the Windows Task Scheduler then keep that in mind. If you are manually running your profiles (not via the scheduler) and want the computer to shutdown, reboot, etc. after the currently running profiles have ended then see [Preferences](PreferencesMainMenu.md) in the burger menu.
- **Wake the computer to run this task:** If this checkbox is ticked (the default) then Windows will attempt to wake your computer to run the task, e.g. if your computer is hibernating then it will switch it on. Note that Windows is responsible for waking your computer, not SyncBackPro. Unfortunately it's common for this feature of Windows not to work with the main reason being out-of-date and incorrect drivers for your motherboard.
- **Run task as soon as possible after a scheduled start is missed:** If this checkbox is ticked (the default) then Windows will run the scheduled task as soon as possible if the task did not run. For example, you may have a profile set to run at 4am every morning but there was a power cut and the computer could not wake to run the task. If this option is enabled then once the computer is switched on, e.g. at 9am, then the task will be run as soon as possible.
- **Start the task only if the computer is on AC power:** If this checkbox is ticked (the default) then Windows will only run the scheduled task if the computer is plugged in, i.e. it is not using batteries. Windows decides if the computer is on AC power, not SyncBackPro.
- **Stop the task if it runs longer than:** If this checkbox is ticked (not the default) then Windows will stop the scheduled task if it takes longer than the time you specify.
- **If the scheduled task is already running:** Using this setting you can tell the Windows Task Scheduler what to do if the scheduled task is already running. The default is **Do not start a new instance**. Note that you cannot choose **Run a new instance in parallel** because that is not possible with SyncBackPro (you cannot have the same profile running more than once at the same time).
Note that if you have no password then SyncBackPro may not prompt you for your Windows login password (as it will test to see if your password is blank).
See the [Important Scheduling Information](CreatingaSchedule.md#importantschedulinginformation) section below for more information.
### Modify a schedule
If you already have a schedule for a profile, when you click the **Edit Schedule** button the following window will appear.
This window displays information on the schedule for the profile, e.g. what its schedule is and the current status. You can delete the schedule by clicking **Delete Schedule**.
**Shared?** If the schedule is used to run more than one profile then it will be indicated here (you cannot change this setting, it is display only). This can only happen if the schedule has been manually edited in the Windows Task Scheduler. This is not recommended.
**Disabled?** If the schedule has been disabled in the Windows Task Scheduler then it will be indicated here. Click the switch to enable or disable the scheduled task (you cannot change this if the schedule is shared or being run by a different user). Alternatively, you can just disable the profile itself in SyncBackPro without changing the schedule.
### Important Scheduling Information
There are some important points to remember about the Windows scheduler:
- If you are creating a profile to run whether your are logged in or not, then you **must** supply your Windows login password (unless the option not to store your password is enabled). You cannot use your pin or Windows Hello. It must be your Windows login password. This is a requirement of Windows, not SyncBackPro.
- If you are creating a profile to only run if you are already logged in, or set the scheduled task not to store your password, then you do **not** need to supply your Windows login password.
- If you are using power saving features in Windows, e.g. your computer goes to stand-by or hibernate after a certain period of inactivity, then you must enable the **Wake the computer to run this task** option. This will wake your computer to run the task at the appointed time.
- If you change your Windows login password then you must remember to change the password for your scheduled tasks. You only need to update the password for one schedule. Windows will automatically update the password for all other scheduled tasks.
- SyncBackPro can accept a number of [Command Line Parameters](CommandLineParameters.md).
- To have SyncBackPro start with Windows you need to select Global Settings from the burger menu (in the main window) then tick the option Start With Windows. **Important:** It actually starts after you login to Windows and not before login.
### Common Problems
See the [Scheduling Problems](SchedulingProblems.md) page.
**Further reading:** [Creating Schedules in SyncBack](https://www.2brightsparks.com/resources/articles/creating-schedules-in-syncback.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Scheduling Problems
### Windows Security
Security settings in Windows are very important when it comes to scheduled tasks:
- **Run whether user is logged on or not**: For this option to be available, you must have the "**Log on as a batch job**" user right. If you are an administrator user then it is likely you already have this right. However, standard non-administrator users in Windows do not have this access right. You must use the **Local Security Policy** editor in Windows and assign the right to the appropriate user.
- **Run whether user is logged on or not (do not store password)**: For this option to be available, you must have the "**Log on as a batch job**" user right and also be a Windows administrator.
Also, if you create a schedule with SyncBack while elevated, then that scheduled task cannot be edited or deleted by SyncBack if it is not run elevated.
To enable the "**Log on as a batch job**" user right, see our KB article online:
https://help.2brightsparks.com/support/solutions/articles/43000335825
### Common Problems
The [Scheduler Monitor Service](SchedulerMonitorService.md) detects profiles that are not being run by the Windows Task Scheduler. There are a number of possible reasons why the scheduled task may not run:
- Check to see what error message is returned from the Windows Task Scheduler. On Windows 10/11 you can do this by **Start** > **Windows Administrative Tools** > **Task Scheduler**. Expand the tree on the left so it is **Task Scheduler (Local) > Task Scheduler Library > 2BrightSparks > SyncBack >** ***[your username]***.
- You must use your **Windows login password**. You cannot use your login PIN or Windows Hello. It must be your Windows login password. This is a requirement of Windows, not SyncBackPro.
- If you change your Windows login password then you must remember to change the password for your scheduled tasks. You only need to update the password for one schedule. Windows will automatically update the password for all other scheduled tasks using the same Windows account.
- You are using the wrong username and/or password. You must use your Windows login password.
- The scheduled task may not be set-up correctly to wake the computer if it is hibernating or in standby mode.
- The scheduled task may have the option *Start the task only if the computer is on AC power* enabled (which is the default) and your computer (notebook, laptop, etc.) may be using batteries and not mains power.
- The scheduler may be stopped or not installed. See your Windows documentation for details on how to start or install it.
- Profiles are user specific, they are not visible to every user on the computer. This means when you create a profile under a Windows username, and logout and login as a different Windows user, then you will not see the profile created as the other user. When scheduling a profile make sure your scheduled task is being run as the user who created the profile (this is the default when new schedules are created).
- If you are a member of a domain check that the correct username is being used for the scheduled task. By default your local (machine) username may be used, but it may be that you must use your domain username (domain\username).
- You should also make sure the user account has the necessary Windows user rights. To do this, run the Local Security Policy control panel applet (in the Administrative Tools section of the control panel). If you are using the home version of Windows then you may not have access to the Local Security Policy control panel applet (Microsoft have removed the feature from home versions of Windows).
Make sure that the user account has the following user rights:
- Act as part of the operating system
- Log on as a batch job
- Log on as a service
Make sure the user account is **not** listed in the following user rights:
- Deny logon as a batch job
- Deny logon as a service
### Windows Home
If you are using Windows Home then the main problem is that Microsoft does not include the tools necessary to enable the "**Log on as a batch job**" user right. Fortunately, it can be achieved using the Windows 2003 Resource Kit:
https://help.2brightsparks.com/support/solutions/articles/43000335825
**Further reading:** [Windows Task Scheduler](https://www.2brightsparks.com/resources/articles/windows-task-scheduler.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Burger Menu
At the top-left of the main windows is a burger menu , which when clicked, shows more options:
### Global Settings
This opens a window where you can change settings that apply to the entire program. [See this page](GlobalSettings.md) of the help file for more details.
### Preferences
If **Preferences** menu is clicked then a further set of options is presented:
- **Only show groups and profiles not in a group:** If unticked then all profiles and groups are listed in the main window. If the option is ticked then the top level list of profiles will not include profiles that are part of a group or groups that are in other groups. The top level list will only show profiles that are not in any group, and groups that are not in any other group. Ticking this option helps unclutter the list.
- **Output Debug Information:** If this item is ticked (enabled) then when profiles are run, or profiles modified, debug files are created. These debug files contain detailed information that allows 2BrightSparks to pin-point any errors or problems with the program (it is used by the [Technical Support Wizard](TechnicalSupportWizard.md)). By default this item should not be ticked. Only tick this menu item when instructed to do so by 2BrightSparks technical support. When enabled it can significantly reduce performance. You can enable flushing by enabling the option **Flush the debug log**. Flushing ensures all debug output is written to the disk immediately and not cached.
- **Hide The Button Panel:** If this menu item is ticked (enabled) then the button panel is hidden. To change where the button panel is displayed then right-click on it and choose from the pop-up menu.
- **Minimize On Close:** If this item is ticked then SyncBackPro will minimize instead of closing (exiting) when the Close button (the X button in the applications title bar) is clicked. In this case you must click the Exit button to close SyncBackPro.
- **Minimize On Run:** If this item is ticked SyncBackPro will minimize automatically when a profile is run.
- **Disable Hibernate/Standby:** If this item is ticked then SyncBackPro will stop your computer from hibernating or going into standby power saving modes if any profiles are running. If your computer is not on mains power (e.g. using batteries) this option is disabled and cannot be used. Note that if battery saver is enabled in Windows, SyncBackPro will [automatically](PowerManagement.md) pause all running profiles and display a warning message. SyncBackPro can put your computer into hibernate or standby mode after profiles are run. For more information, see the page [Command Line Parameters](CommandLineParameters.md).
- **Do not auto-pause profiles when computer is suspended:** If this item is ticked then SyncBackPro will not automatically pause all the profiles when the computer is suspended, goes into battery saver mode or switches to UPS power. After the computer is woken, switches to mains power from UPS, or stops using battery saver mode, it will automatically resume the profiles that were paused. See the [Power Management](PowerManagement.md) section for more details.
- **When all profiles end:** You can choose what SyncBackPro should do when the currently running profiles finish. This can be useful, for example, if you need to leave the office and a long running profile is currently running. The options are:
**IMPORTANT:** For it to work, you must make sure the **Do Nothing** entry is unticked. This allows you to make changes without it being used until Do Nothing is unticked.
- **Shutdown**: The computer is shutdown.
- **Exit**: SyncBackPro exits.
- **Logout**: You are logged out of Windows.
- **Reboot**: The computer is rebooted.
- **Standby**: The computer goes to sleep. The system remains powered on, but at a minimal level.
- **Hibernate**: The computer goes into a deep sleep. The CPU, drives, display, and most internal components power down or enter ultra-low-power states.
- **Run**: A program is started (you can choose the program) and SyncBackPro will then exit without waiting for the selected program to end.
- **Minimize To Tray:** If this item is ticked then SyncBackPro will minimize to the system tray (taskbar corner) instead of to the task bar.
- **Hot-tracking:** If this item is ticked then SyncBackPro will use hot-tracking on the [Main](TheMainWindow.md) window, the [Sub-directories & Files](SubDirectoriesandFiles.md) window and the [Differences](TheDifferencesWindow.md) window. Hot-tracking is where the item the mouse is over is highlighted. The default is not to use hot-tracking.
- **Horizontal Lines:** If this item is ticked then SyncBackPro will show horizontal lines in the [Main](TheMainWindow.md) window, the [Sub-directories & Files](SubDirectoriesandFiles.md) window and the [Differences](TheDifferencesWindow.md) window. The default is to show horizontal lines.
- **Vertical Lines:** If this item is ticked then SyncBackPro will show vertical lines in the [Main](TheMainWindow.md) window, the [Sub-directories & Files](SubDirectoriesandFiles.md) window and the [Differences](TheDifferencesWindow.md) window. The default is not to show vertical lines.
- **Stop using screen reader:** This menu item is only visible if SyncBack detects a screen reader is being used. When a screen reader is being used then the Style menu item is not available. Untick this entry to tell SyncBack you are not using a screen reader.
- **Associate .SPS with SyncBackPro:** Exported profiles have the filename extension of .**SPS**. If another program has set itself as the default program for opening .**SPS** files, then this menu item will appear allowing you to change it back to SyncBackPro.
### Dialogs
This opens a window where you can change which dialog boxes appear. [See this page](Dialogs.md) of the help file for more details.
### Scripts
This opens a window where you can extend the abilities of SyncBackPro by using scripts. [See this page](Scripting.md) of the help file for more details.
### Comparison Programs
This opens a window where you can change which programs are used in the Differences window to compare the contents of files. [See this page](ComparisonPrograms.md) of the help file for more details.
### Management Service Settings
See the [SyncBack Management Service](SBMService.md) help page for more details.
### Windows Shell Extension Settings
See the [Windows Shell Extension](ShellExtension.md) help page for more details.
### Linked Cloud Accounts
See the [Linked Cloud Accounts](LinkedCloudAccounts.md) help page for more details.
### Shared Settings
See the [Shared Settings](SharedSettings.md) help page for more details.
### Secrets Manager
See the [Secrets Manager](SecretsManager.md) help page for more details.
### Language
The language used can be changed using this menu. Note that only the translated languages installed are listed. By default the language selected during installation is used.
### Style
You can choose the style SyncBackPro should use. The default style depends on the version of Windows being used, but you are free to change it at any time. If you choose the **Windows** style then the standard Windows interface style is used, e.g. no Help button in the Window caption.
If you are using a **screen reader**, or a **remote desktop connection** (RDP), then the styles menu is not available and the default Windows style will be used automatically. Styles are not supported over remote connections. To stop using a screen reader, enable the option **Stop using screen reader** in the **Preferences** main menu. Note that this menu item is only visible if a screen reader has been detected.
**Use colour images** is available only when a dark style is being used, e.g. Windows 11 Modern Dark. When enabled, colour images will be used with a dark style instead of the default monochrome images.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Profiles Pop-Up Menu
If you right-click on a profile then a pop-up menu appears with a number of menu items. Many of these functions can be used with multiple-profiles. There are a number of ways to select multiple profiles, for example:
- Press **Ctrl-A** to select all profiles (to unselect all press **Ctrl-U**).
- While holding down the **Ctrl** key click on the profiles you want selected.
- You can select a range of profiles by clicking on a profile, then while holding down the **Shift** key, click another profile.
Some of the menu items may not be available due to limitations. For example, some functions cannot be used with groups (e.g. Open Left/Source) or they can only be used with a single profile and not multiple profiles (e.g. Modify). If your screen resolution is low some items will be removed, otherwise the menu will be too long to be displayed. Also, many of the menu items will also show the shortcut key. For example, you can run profiles by selecting them and using the shortcut key **Ctrl-R**
- **Run (Ctrl-R):** Runs the selected profiles.
- **Run (Unattended):** Runs the selected profiles in unattended mode. This means there will be no prompting and the [Differences](TheDifferencesWindow.md) window will not be displayed.
- **Run (No Action changes allowed):** Runs the selected profiles, and display the [Differences](TheDifferencesWindow.md) window, but does not allow any changes to be made to the actions or any versions to be restored. Also no prompts will be made (if the profile is configured to prompt for actions). Instead of prompting the file or folder will be skipped. This option is for use with [Fast Backup](FastBackup.md) profiles where you want the Differences window to appear but do not want the [versions](CopyDeleteVersioning.md) to be scanned.
- **Run (Prompted):** Runs the selected profiles [prompted](RunPrompted.md).
- **Simulated Run (Ctrl-S):** Runs the selected profiles in **simulation** mode.
- **Simulated Run (Prompted):** Runs the selected profiles in **simulation** mode, [prompted](RunPrompted.md).
- **Integrity Check (Ctrl-S):** Runs the selected profiles in [Integrity Checking](CopyDeleteIntegrity.md) mode.
- **Restore:** Runs the selected profiles in [restore](Restore.md) mode.
- **Simulated Restore:** Runs the selected profiles in **simulated restore** mode.
- **Queue**: The sub-menu allows for [queuing](Queue.md) of profiles and clearing the queue.
- **Open Left/Source:** Using Windows File Explorer, it will open to the source/left folder on the selected profiles.
- **Open Right/Destination:** Using Windows File Explorer, it will open to the destination/right folder on the selected profiles. Note that some destinations cannot be opened, e.g. if you are performing a backup to the cloud then it will not do anything. For FTP, it will use the FTP URL *ftp://[user ID:password@][:port]/[path/]*
- **Modify (Ctrl-M):** Modifies the selected profile.
- **Compare two profiles:** The settings of two profiles are compared and a report of the differences is shown. If you select two profiles before choosing this option then those two are compared, otherwise you are asked which profile to compare the selected one with. You can compare two profiles, or two groups, but not one of each. The profile setup window is not opened, so nothing can be changed by accident. See the Profile Comparison Report below.
- **Compare with defaults:** The settings of the selected profile are compared with the defaults you saved using **Save as defaults** on the profile setup window. If you have never saved any defaults then the profile is compared with the factory settings instead, and the report shows which was used. This is a quick way of seeing which settings you have changed. Groups are compared with the group defaults. See the Profile Comparison Report below.
- **Schedule:** Creates or modifies the profiles schedule.
- **Delete (Del):** Deletes the selected profiles.
- **Rename (F2):** Renames the selected profiles.
- **Copy (Ctrl-C):** Makes a copy of the selected profile.
- **Export Profile:** Exports the selected profiles. Exporting profiles lets you import them into other installations of SyncBackPro and is also a way of making a backup of a profile. In the [Global Settings](GlobalSettings.md#backupprofiles) window, you can configure SyncBack to automatically make backups of all your profiles when it exits.
- **Upload Profile to SBM Service:** The selected profile is uploaded to the SBM Service. See the [SyncBack Management Service](SBMService.md) help page for more details. If this option is not enabled then you are either not logged into SBMS or your user account in SBMS is not using the **admin** role.
- **Enable:** Enables a previously disabled profile. Enabling a profile does not automatically enable any [scheduled tasks](CreatingaSchedule.md#modifysched) the profile has.
- **Disable:** Disables the selected profiles. A disabled profile cannot be run by any method (including scheduled, manually, etc.). You cannot disable group profiles. Disabling a profile does not automatically disable any [scheduled tasks](CreatingaSchedule.md#modifysched) the profile has.
- **Clear groups result:** The selected groups will have their last **Result** cleared.
- **Rescan:** The selected profiles, if they are [Fast Backup](FastBackup.md) profiles, will have their Fast Backup data cleared and a re-scan will be forced on the next run. This is the same as modifying the profile(s) and clicking the **Force re-scan** button.
- **Background Colour:** This allows you to change the background colour of a profile. To reset/clear a profiles background colour select **Clear**. Background colours are purely cosmetic and have no affect on the profile itself.
- **Text Colour:** This allows you to change the text colour of a profile. To reset/clear a profiles text colour select **Clear**. Text colours are purely cosmetic and have no affect on the profile itself. The colour used will be used for all the text for that profile row in the main windows, e.g. Aborted text will be in that colour.
- **Refresh (F5):** The display is refreshed so the information display is current. This can be useful if you have profiles running in another instance of SyncBackPro, e.g. via a schedule, and the display isn't refreshing automatically.
- **Select all (Ctrl-A):** All the **visible** profiles are selected. If you have an unexpanded group then those profiles in the group will not be selected.
- **Unselect all (Ctrl-U):** The current selections are de-selected.
- **View Log:** The log for the selected profiles is displayed. Note that you may have a history of logs for a profile so you can choose which log to display using the sub-menu. To display the latest log you can press **Ctrl-L**.
- **View Debug Log:** The debug log for the selected profiles is displayed. Debug logs are for [internal use](Help.md).
- **Pause:** The selected profiles are paused. To resume them select **Resume**.
- **Resume:** If paused, the selected profiles are resumed.
- **Stop:** The selected profiles are stopped. If the profile is being run as part of a group then the entire group is stopped.
- **Stop profile only, not group (Ctrl-O):** The selected profiles are stopped, but not the group it is running as a part of.
Profile Comparison Report
Only the settings that differ are listed. Each one is shown under the setup page it belongs to and uses the same wording as that page, so you can go straight to it. The report is built from the settings stored on disk, so anything you have changed in a profile setup window but not yet saved is not included.
- Passwords and other secrets are never shown in the report. They appear as ***, so you can see that they differ without revealing them. *(empty)* means nothing is stored.
- A few settings are stored as a number whose meaning depends on the computer, such as the speech voice, which comes from the voices Windows has installed. For those the report can only say that the two profiles differ, shown as *(differs)* on both sides.
- For [filters](FilterSettings.md), [variables](Variables.md), [tags](CloudTags.md) and similar lists, only the entries that differ are listed rather than the whole list. Long lists are shortened with *(and 12 more)*. Holding the same entries in a different order is not treated as a difference.
- When two profiles use different [shared settings](SharedSettings.md), the report says which shared settings each one uses rather than comparing every setting inside them. *(local to profile)* means that profile is not using shared settings.
- The labels come from the profile you started the comparison from, including the names it uses for its two sides. If the other profile names its sides differently, for example *Left* and *Right* instead of *Source* and *Destination*, the labels still use the first profile's names.
- When two [groups](Groups.md) are compared, the profiles in each group are compared as well. If both groups contain the same profiles but in a different order then both orders are shown, because for a [group queue](Groups.md#groupqueues) the order is the order they run in.
**Not everything is compared**
A profile stores the settings for every page whether or not you are using that feature, so comparing all of them would bury the differences that matter under ones that cannot have any effect. These are left out:
- Settings behind a feature that is switched off. The page carrying the switch is still compared, so you can see that compression is on for one profile and off for the other, but the pages behind that switch are only compared when both profiles use the feature.
- If the two profiles send their files to different kinds of place, for example one to FTP and the other to a cloud service, only *Destination type* is reported. Those pages have almost no settings in common, so working through them line by line would say nothing useful.
- [Intelligent Sync](IntelligentSynchronization.md) decides what to do with a file in a completely different way from every other profile type, using its own set of settings and leaving the ordinary ones untouched. If one profile uses it and the other does not, the report gives the *Profile type* of each instead of comparing the Type pages.
- Settings that are not about what the profile does are never listed. That includes the layout of the [Differences window](TheDifferencesWindow.md), the columns of the history list, and settings used only for support or internal testing.
- A small number of settings cannot be matched to a page and are listed at the end under *Other differences*, using the internal setting name. This is normal.
- When comparing with defaults there is no *Other differences* section. The defaults hold only the settings you chose to save, so everything missing from them would otherwise be reported as a difference.
Use the **Copy** button to put the whole report on the clipboard, for example to paste into an email.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# View
The main window has a number of columns that provide information on the profiles. You can choose which columns to display via the **View** menu. You can also show/hide columns by right-clicking on the column header and choosing to show/hide a column.
- **Refresh:** You can refresh the display by pressing F5. In some situations, for example, the run information for a profile may be incorrect, e.g. it was run by another user in another session. Refreshing the display ensures the latest information on profiles is displayed.
- **Select all:** To select all the profiles you can press Ctrl-A.
- **Unselect all:** To unselect all selections you can press Ctrl-U.
- **Zoom In:** To zoom in, i.e. make the text larger, you can press **Ctrl +** or press the **+** button in the window caption (unless you are using the Windows style). You cannot zoom higher than 200%. You can also press Ctrl-0, Ctrl-1, Ctrl-2, etc. to zoom immediately to a set level:
- **Zoom Out:** To zoom out, i.e. reduce the text size, you can press **Ctrl -** or press the **-** button in the window caption (unless you are using the Windows style). You cannot zoom lower than 100%. The zoom level is shown in the window caption (unless you are using the Windows style):
- **Filter:** When selected, a Filter edit-box appears which you can type in to only list profiles that contain those letters (not case sensitive). The close the filter press the X button next to the edit-box.
- **Stop:** When a profile is running you can click on the icon shown in the Stop column to stop the profile. If you stop a profile that is being run as part of a group then all the other profiles in the group will also be stopped.
- **Play/Pause:** When a profile is running you can click on the icon shown in the Stop column to pause/continue the profile. Note that when a group profile is run (and it is not set to run the profiles in parallel) it will run the profiles in the group one after another. Those in the group waiting to run are paused until the previous profile in the group has finished. SyncBackPro will then automatically continue the profile when it is its turn to run.
- **Type:** The type of profile, e.g. Backup, Fast Backup, Synchronization, etc.
- **Last Run:** When the profile was last run. If it has not been run yet then it will show **Never**.
- **Result:** The result of the last profile run. Note that if any file fails to be copied, moved, or deleted, for any reason at all, then the profile run is considered a failure. Success is when there were no errors.
- **Success Rate:** The Success Rate column shows how reliable a profile has been recently, based on its run history. It displays the count of successful runs out of the last 10 completed runs, formatted as wins/total. For example, 9/10 means 9 of the last 10 completed runs succeeded, or 3/4 if the profile has only run 4 times. Only completed runs are counted. Runs that never finished or are still in progress are ignored, so the "total" can be less than 10 if the profile hasn't run that many times yet. If the success rate drops below 50% (fewer than half of the counted runs succeeded), the value is shown in red to flag a problematic profile at a glance. The value is blank for groups and profiles that have no completed run history.
- **Next Run:** When the profile will next be run. You can run the profile manually at any time (unless it is disabled or already running). The next run date & time takes into account [schedules](When.md) and [periodic](WhenPeriodically.md) runs. If the profile is in a group then it will also take that into account. For example, a profile may be set to run at 2pm but could be in a group that is set to run at 1pm. In the main window it will show the appropriate time depending on whether the profile is shown in the group or not.
- **Source / Left:** The source/left folder.
- **Destination / Right:** The destination/right folder.
- **Background:** If the profile is set to run in the background, e.g. every 30 minutes or whenever there are changes in the source or destination, then this column will contain the details.
- **Progress:** When a profile is running this column shows the same information shown in the [profile progress](ProgressBar.md).
- **Last Successful Run:** The date & time the profile was last run without error. If it has not yet run without any errors then it will show **Never**.
- **Last Scheduled Run Error:** If the Windows Task Scheduler had a problem running SyncBackPro, e.g. password is incorrect, then this column will show the reason why SyncBackPro could not be started to run the profile at the scheduled time. If the profile is not scheduled, or there was no error the last time it was run at the appointed schedule, then this column will be empty.
With the Pro version you can add your own columns by using [scripting](Scripting.md).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Global Settings
At the top-left of the main windows is a burger menu , which when clicked, shows more options, one of which is **Global Settings**:
**Update Check:** If this button is clicked a check is made to see if a new version of SyncBackPro is available for download. You can also check via the **Help** tab in the main window. Internet access is required to check for new versions. If a new version is found, you have the option to ignore it. If so, SyncBackPro will not prompt you again about a new version being available (when doing automated periodic update checks). Skipping versions is not recommended as they may contain critical bug fixes.
You can re-order the tabs (on the left) by simply dragging them into the order you wish. If you want to reset the order, right-click on any of the tabs on the left and select **Reset** from the pop-up menu.
There are a number of tabs available. Not all of them are visible, depending on the settings, environment and which implementation of SyncBack you are using:
- Easy
- Expert
- Ransomware Detection
- Settings
- Settings Backup
- FTP
- SysLog
- Encryption
- Double-click
- Logging Settings
- Remote Control
- Variables
- Drives
- Security
### Easy
- **Stop background backups from starting:** If ticked, any profiles set to run in the background ([periodically](WhenPeriodically.md), via a [file/folder change](WhenChanges.md) or when a [program is started or stopped](WhenPrograms.md)) will not be started. This does not affect scheduled tasks, profiles set to run on [media insert](WhenInsert.md), or profiles set to run on [login or logout](WhenLoginLogout.md). If this setting cannot be changed then Windows has enabled battery saver mode (e.g. your using a laptop and the battery is low) or you are using a UPS (Uninterruptible Power Supply), e.g. mains power is off.
- **Stop all running profiles when Windows is shutdown or restarted:** If enabled then when you shutdown or restart Windows then all running profiles will be stopped.
- **Prompt me to remove the blank password restriction on the Windows Scheduler:** By default you cannot use a blank/empty password when scheduling tasks. If this item is ticked then whenever you schedule a profile, and you are using Windows with this restriction, you will be prompted to ask you if you'd like SyncBackPro to remove that restriction. Note that you will not be prompted if the restriction has already been removed. If you do not have the access rights in Windows to remove the blank password restriction then the checkbox is disabled.
- **Check periodically for new versions:** If ticked then SyncBackPro will check, every 30 days, if a new version of SyncBackPro is available. See also the **Update Check** button (to check for a new version immediately) and also the **Help** -> **Update Check** main menu item. Internet access is required to check for new versions. The check is only made while SyncBackPro is open in front of you, and is never made during a scheduled or otherwise unattended profile run. The 30 day interval can be changed when SyncBackPro is [installed](Installing.md). [Variables](Variables.md#misc) are also available that can retrieve the latest version number and also check to see if a new version is available.
- **Start with Windows:** If ticked, SyncBackPro will start after Windows is rebooted and you login (**Important:** It actually starts after you login to Windows and not before login). By default, it will start minimized. If you have profiles set to [run periodically](WhenPeriodically.md) (not via a schedule), or to run whenever there are [changes](WhenChanges.md), it is recommended you use this option. If this setting is ticked, but not enabled, then SyncBackPro is set to run elevated but you are currently running SyncBackPro unelevated, which means (due to Windows security) you cannot change the setting.
- **Change the tray icon if any profiles have failed:** If ticked, and any profiles fail when run, then the icon shown in the system tray (taskbar corner) will change to indicate this. To reset the icon, e.g. you have reviewed the failed profile(s) and are aware of the problem, then right-click on the SyncBack tray icon and select **Reset tray icon**. The tray icon will show an orange cross if background backups are being stopped from starting (see option above) and a red cross if background backups can start.
- Reset tray icon when the newest log of a failed profile is displayed: If ticked then the tray icon is automatically reset when the newest log of a profile (that has failed) is displayed. Viewing older logs, or logs of profiles that haven't failed on their last run, will not reset the tray icon.
- **Disable profile prompt notifications for ALL profiles:** If enabled then profile prompts are never shown. This is a quick way to switch off the [notifications](WindowsNotify.md) if you find them distracting
- Amount of time to pause after resuming from hibernation or sleep: If the computer is put into sleep or hibernate mode, then resumed, this is the number of seconds that SyncBackPro will pause (sleep) before it does anything. This gives Windows time to re-establish network connections etc.
- **Amount of time to delay before background profiles are started…:** When SyncBackPro is started it will wait this amount of time before the first background profile is started. This gives you time to disable background tasks or to exit SyncBackPro before they start.
- **Highlight profiles that have not run successfully for…:** If the value is above zero then any profiles that have not run successfully for that number of days will have a special icon placed next to their name in the main window (if using a dark style the icon is). This lets you clearly see which profiles are not running as expected. Note that disabled profiles are ignored and it does not apply to group profiles. [Profiles can override](Log.md#highlightnotsuccess) this setting.
### Expert
- **Use the Windows Event Log:** If ticked then errors are recorded in the Windows Event Log. These are not profile errors but errors related to using the program when the user cannot be prompted. They are typically used by technical support staff to help debug problems with the software.
- **Do not register COM objects:** If ticked then SyncBack will not attempt to (re-)register any COM/ActiveX objects (DLL's). A number of COM/ActiveX objects are used which are initially registered during installation. However, other applications on your system may also use the same objects but different versions of them. For this reason SyncBack will re-register many of these COM objects whenever they are required.
- **Allow access to mapped network drives (reboot required):** If enabled, SyncBackPro will make a change to the registry so that elevated processes (like SyncBackPro and SyncBackSE) can see mapped network drives. This option cannot be changed if SyncBack is not being run elevated (as it requires elevation to change the setting in the registry). If the setting is changed then a reboot is required.
- **Memory usage (higher memory usage increases performance):** SyncBackPro can greatly reduce memory usage by storing some information in a temporary database on disk. This option lets you decide if you want to use more memory (which can improve performance) or less memory. It's recommended that you leave the setting to it's default. However, if you want to use less memory (e.g. because the system has limited memory) then you may want to change this setting. Note however that by using less memory profiles will be slower. Paradoxically, increasing memory usage can also cause profiles that have a large number of files (in the hundreds of thousands) to be slower (due to how data is inserted in memory). Also, there are other cases where memory usage can be reduced. For example, using a high level of file compression can dramatically increase memory usage.
- **COM Objects:** A list of the required COM objects is shown along with their version number. If a COM object is not registered then the checkbox is not checked/ticked. Correctly registered COM objects are checked/ticked and also disabled. To register a COM object click on the item.
- **Scheduler Monitor Service:** SyncBack includes a Windows service that runs in the background. It works with SyncBack to detect profiles that are not being run by the Windows Task Scheduler. In this section you can see if the service is installed and running. You can also stop the service from prompting you if it detects problems. See the [Scheduler Monitor Service](SchedulerMonitorService.md) help page for details.
### Ransomware Detection
SyncBackPro has the ability to check if a file has been changed. If your system is infected with ransomware then it will encrypt many of your files, e.g. documents, text files, pictures, music, videos, etc. It usually won't encrypt files required by the system, e.g. EXE and DLL files. In most cases you will know immediately if you are infected with ransomware because it will likely prompt you for payment to decrypt your files. However, your backups are usually automated so your backups will continue to run, which means your backup files are likely to be replaced with the encrypted files. To avoid this happening you can configure SyncBackPro to check if a specific file has changed, and if so, no profiles will run. To use this:
1. Click the **Create** button. SyncBackPro will then create a file, with random content, in your **My Documents** folder. The file will have a random filename, but have the extension of **.RTF**
2. SyncBackPro will then calculate the hash file of that file and record it.
3. Now, whenever a profile is run, SyncBackPro will check to see if that file has changed, and if so, will not run the profile.
You can choose an existing file, if you wish, but you need to be sure that the file will not change. If you do change the files contents, click the **Re-hash** button to recalculate the hash value of the file. If you use an existing file it is recommended you copy a document or spreadsheet file that you already have and use the copy. By having an actual valid document it is more likely that it will be encrypted by ransomware.
If you no longer want to detect if the file has changed, click the **Clear** button.
- Note that 2BrightSparks cannot guarantee that SyncBackPro will be able to detect all types of ransomware infection using this technique.
### Settings
- **Put new, imported, and copied profile settings files into...:** This setting defines where to put the settings files for new profiles (existing profiles settings files are not moved). It is recommended that **Automatic** is used.
If SyncBackPro is being run from removable media or an external drive (connected via USB or Firewire) then you will not be able to choose where to store profiles (they will always be stored in the same folder as the program). If you do not have write access to the folder SyncBackPro is being run from then you cannot choose that option.
The roaming application directory is for people using corporate networks where files are typically stored on a server.
You can also choose a specific folder to store your profiles and settings in. Optionally, you can specify that only that folder is used. An important point to remember is that if you change the folder then all the profiles in that folder become unavailable. You can also specify a settings folder to use via the [command line](CommandLineParameters.md).
The folder used for **Automatic** is based on the following:
- If a specific folder is defined then that is used if there is write access to the folder. Note that you do not need to have the option "**A specific folder**" enabled, just have a path defined for it.
- If SyncBackPro is being run from removable media or an external drive (connected via USB or Firewire) then the folder SyncBackPro is run from is used.
- Failing all the above, the current users application data directory is used, e.g. **C:\Users\*[username]*\AppData\Local\2BrightSparks\SyncBack\**
- **Show when this hot-key is pressed:** You can configure SyncBackPro to become active (if it is already running, e.g. minimized) when a specific hot-key is pressed, e.g. **Ctrl-Shift-S**. To remove the hot-key use the backspace key. To help you remember the hot-key, if SyncBackPro is configured to use a hot-key, and you are minimized to the system tray, then the hint on the tray icon will display the hot-key being used. Note that you can also have hot-keys to [run specific profiles](WhenHotkey.md).
### Settings Backup
- **Backup all profiles when the program exits (Unattended):** This is the same setting as below except it applies only when exiting from an unattended run, e.g. run via a schedule. See the Alternative Settings Backup Options section below for more details on making backups of your profiles.
- **Backup all profiles when the program exits (Attended):** By default a backup is made of all the profiles when SyncBack exits, either attended (e.g. run manually from the Start menu) or unattended (e.g. run automatically from a schedule). If this option is enabled, then a backup of all the profiles is made automatically when SyncBack exits from an attended run. Below the checkbox you can specify where to put the backup of the profiles. See the Alternative Settings Backup Options section below for more details on making backups of your profiles.
- **Number of days backup to keep:** By default SyncBack will delete backup profile files that are over 30 days old. You can change this or set it to keep the backups forever (by using 0 days). See the Alternative Settings Backup Options section below for more details on making backups of your profiles.
- **Import profile from backup:** If clicked, then the Global Settings are closed and a window is opened where you can [import the backup of a profile](ExportingImportingProfiles.md). The button is only enabled if there are backups available.
The backup directory can contain [variables](Variables.md). In fact, you should use variables to make sure multiple backups of profiles are made. The default is %SYNCBACKBACKUPFOLDER%%DAYOFWEEKNAME%
- If you are using SyncBackPro or SyncBackSE then note that it is run elevated, meaning it will not have access to mapped drives. If you want to backup your settings to a network drive then you must use the UNC path and also make sure no username or password is required to access it.
### Alternative Settings Backup Options
You can choose to have your profiles automatically backed up to another folder when the program exits. This backup can be done when run attended, e.g. it was run manually from the desktop or start menu, and/or unattended, e.g. it was run automatically from a schedule. If you have a large number of profiles then you may wish to only backup your profiles when exiting from an unattended run.
When you close SyncBack, via the **Exit** button at the bottom-right of the main windows, there is a drop-down menu to tell SyncBack if it should backup the profiles or not, regardless of the settings.
Another profile backup option is to use the [–export](CommandLineParameters.md#export) command line parameter. You could create a scheduled task in Windows to run SyncBack (with just the **-export** command line parameter) every morning, for example, to backup the profiles.
You can manually create a backup of your profiles by simply [exporting](ExportingImportingProfiles.md) them.
To restore your profiles you can simply [import](ExportingImportingProfiles.md) them or via the program main menu [Export / Import -> Import profiles from backup](ExportingImportingProfiles.md).
- So as not to interfere with the Windows shutdown/restart/logoff process, profiles will never be automatically backed up if SyncBack is closing due to a Windows shutdown/restart/logoff.
### FTP
This page contains settings related to how SyncBackPro communicates with FTP, FTPS, and SFTP servers. It is strongly recommended that you do not change any of these values and that the defaults are used.
- **File buffer size:** This is the size, in bytes, of the buffer used to send and receive files. The default size is 262144 bytes, and the minimum size is 8192 bytes.
- **Send buffer size:** This value directly affects the TCP window size. If the value is set to 0 the default Windows value is used and **setsockopt**() is not called. The default SyncBackPro value is 131072 bytes. This setting is only used by **Eldos FTP** (not Eldos SFTP).
- **Set the send buffer size automatically:** When enabled the send buffer is automatically increased after the socket is connected until it reaches the optimal size. This option is enabled by default. This setting is only used by **Eldos FTP** (not Eldos SFTP).
- **Receive buffer size:** This value directly affects the TCP window size. If the value is set to 0 the default Windows value is used and **setsockopt**() is not called. The default SyncBackPro value is 131072 bytes This setting is only used by **Eldos FTP** (not Eldos SFTP).
- **Set the receive buffer size automatically:** When enabled the receive buffer is automatically increased after the socket is connected until it reaches the optimal size. This option is enabled by default. This setting is only used by **Eldos FTP** (not Eldos SFTP).
### SysLog
This page contains settings related to how SyncBackPro communicates with a SysLog server (as specified in RFC 3164 and RFC 5424). When certain tasks are performed, e.g. profiles run, a message will be sent to the SysLog server.
2BrightSparks introduced a [freeware SysLog](https://www.2BrightSparks.com/syslog/) server and client along with SyncBack V11.
- **Send status messages to a SysLog server:** If enabled, messages will be sent to a SysLog server.
- **SysLog hostname or IP address:** The hostname or I.P. address of the SysLog server. To broadcast use the I.P. address 255.255.255.255
- **SysLog port number:** The port number of the SysLog server. The default is 514.
- **SysLog facility number (0 to 23):** The facility number that SyncBackPro should use in messages sent to the SysLog server. The default is 16. Note that usually the numbers 0 to 15 are used for system messages.
- **Send date and time in GMT timezone:** The dates & times of the messages can either be in the local timezone (of the computer running SyncBackPro) or in the GMT/UTC timezone. This setting is not relevant and ignored when RFC 5424 is used.
- **Send messages in UTF8:** Messages can either be in ASCII or UTF8.
- **Prefix messages with username:** To help with tracking, the messages sent to the SysLog server can optionally be prefixed with the Windows username.
- **Use RFC 5424 standard (otherwise it is RFC 3164):** If enabled then the messages are sent using the RFC 5424 standard instead of the default RFC 3164 standard.
- **Send Test Message:** Press to send a test message to the SysLog server.
The format of the profile end message is:
Profile [*Profile_Name*] Message [[Result=*Result_Value* *Result_Description*][Error=*Error_Message*][Integrity Check | Simulated][Restore][Unattended][Group=*Group_Name*][*ProfileName*]]
The severity is **Informational**, except when the profile run fails and it is **Error**.
Many of these are optional, e.g. if there is no error message then it will not be there. For the profile result, the numeric values are listed in the [Script Constants](ScriptConstants.md#results).
### Encryption
SyncBack stores passwords and other sensitive settings in an encrypted form. By default, a very simple encryption is used and it is relatively easy for someone to decrypt it (if they have access to your settings files). However, there are settings to make it considerably more difficult to decrypt:
- SyncBack uses the Windows encryption routines, which means that the following encryption options are only available if your installation of Windows allows for 256-bit AES encryption. It may not be available due to the import and/or export laws in your country. An important point to remember is that if you use any of these encryption settings then it limits what you can export and import. For example, if you use a key file then another computer will not be to use any profiles you export unless they also have your key file. If you use the Windows Data Protection option then another computer (or even Windows user on your computer) will never be able to use any profiles you export. Also, if any of these settings are changed then SyncBack must re-encrypt all your encrypted settings (program settings and for all profiles).
- **Use 256-bit AES encryption for storing sensitive settings:** If set, SyncBack will use 256-bit AES encryption. Although this is a much stronger method of encryption than the default one, it is not impossible for someone determined enough to decrypt these settings (if they have access to your settings files). This is because the key to the encryption is within SyncBack itself and is the same key for all installations of SyncBack. By using the same key it simplifies exporting and importing profiles. You also have no encryption or decryption key to lose (and so lose access to the encrypted settings). With the next setting you have the option of supplying your own encryption key.
- **Encryption key for sensitive stored settings:** If set, SyncBack will use the encryption key stored in the specified file. You can create an encryption key file by clicking the **Create Key File** button (see below). Without this file it is impossible for someone to decrypt your settings. It also means that if you lose the file, its contents change, or you don't have access to the file (e.g. it's on a USB key and you forgot to plug it in), then SyncBack will not be able to decrypt your settings. It is recommended that you create the file on removable storage (e.g. a USB key) so that you can keep the file physically secure and also make a secure backup of the file. If you export a profile then you must remember that the computer that imports the profile will not be able to decrypt the settings without access to the key file.
- **Create Key File:** When pressed you are prompted for a password. Enter a password (we recommend it contains at least 16 characters) then choose the file name to store the encryption key in. The filename can be whatever you want, and have any filename extension, but it must have a filename extension, e.g. enc.key. The file should be stored somewhere secure that SyncBack can access whenever it is run. Note that the key file you create is not used unless you select it as the key file.
- **Secrets Manager:** To access your [Secrets Manager](SecretsManager.md) settings, click this button.
- **Store sensitive settings using the Windows Data Protection API:** If set, SyncBack will use cryptographic routines in Windows to further encrypt the settings. This makes it impossible for someone to decrypt your settings, even if they have your settings files and the encryption key file, unless they are also logged into your Windows account on your computer. If you use this option you are strongly advised to create a [Password Reset Disk](https://support.microsoft.com/en-us/windows/create-a-password-reset-disk-for-a-local-account-in-windows-9a54a5ca-27bc-de72-244a-27b7d62951de) whenever you change your Windows password. The reset disk must obviously be kept physically secure. If you export a profile then you must remember that the computer that imports the profile will not be able to decrypt the settings unless it is the same computer and same user account. If you reinstall Windows you will probably also lose access to the encrypted settings. If an administrator forcibly changes your Windows password you will also lose access to the encrypted settings (it's not a problem if you yourself change your Windows password).
If you lose the key file, or you are using the Windows Data Protection API and import your exported profiles on another computer (for example), then your encrypted settings will essentially become corrupt and invalid. Your serial number is one such setting, which means you will be prompted for your serial number again. All passwords are also stored encrypted, so you will need to re-enter those.
When using SyncBackPro you can use a [secrets manager](SecretsManager.md) to retrieve sensitive information instead of storing it locally.
| **Encryption Used** | **Drawbacks** |
| --- | --- |
| Default | No password to remember, but more secure. |
| 256-AES Encryption Only | No password to remember, more secure than the default security but can be very secure when used with a key file and/or the Windows Data Protection API. |
| Encryption Key File | Very secure if the key file itself is secure (e.g. via NTFS security). However, if the key file is lost or corrupted then all encrypted settings will be lost (including access to any password protected profiles). |
| Windows Data Protection API | Very secure, but profiles cannot be used on any other computer or by any other Windows user. A [Password Reset Disk](https://support.microsoft.com/en-us/windows/create-a-password-reset-disk-for-a-local-account-in-windows-9a54a5ca-27bc-de72-244a-27b7d62951de) should be created. |
### Double-click
You can select what action SyncBackPro should take when you double-click on a profile in the main window:
### Logging Settings
This opens a window where you can change how profile log files are created. [See this page](LogSettings.md) of the help file for more details.
### Remote Control
[SyncBack Monitor](SyncBackMonitor.md) allows the user to remotely monitor and control SyncBackPro/SyncBackSE instances running on computers on the same local network via an [Android App](https://play.google.com/store/apps/details?id=com.twobrightsparks.SyncBackMonitor).
Please note that SyncBack Monitor will work only with SyncBackPro/SyncBackSE V9 (and newer) and does not support SyncBackFree.
See the [SyncBack Monitor](SyncBackMonitor.md) page in this help file for more details.
### Variables
You can define global [variables](Variables.md) here that can be used by all of your profiles. You can also define profiles at the group and [profile](SetupVariables.md) level.
### Drives
When you go to this tab, all of your drives are listed along with their S.M.A.R.T. status. It also shows the model of the drive, the media type (e.g. Fixed) and the connection interface (e.g. SCSI). This information is reported by Windows.
- Note that you may be using **NVMe** drives that show as using a **SCSI** interface. Also, Windows does not report if a connection is **SATA**. This is normal and not something to be concerned about. SyncBackPro does not know or care what the connection interface is and is shown only for reference.
### Security
This tab is only visible if SyncBack is being run elevated or Windows Administrator Protection is enabled.
- **Create Not Elevated EXE:** If the non-elevated version of SyncBack does not exist then you can click this button to create it. Note that the non-elevated version of SyncBack is created using a hard-link, meaning it does not use disk space. However, if a hard-link cannot be created, e.g. the file system does not support it, then it has to make a copy of the executable which does take a very small amount of extra disk space.
- **Create Administrator EXE:** If the Administrator version of SyncBack does not exist then you can click this button to create it. The Administrator version is used when deleting, creating or modifying elevated schedules from a non-elevated instance of SyncBack. Note that the Administrator version of SyncBack is created using a hard-link, meaning it does not use disk space. However, if a hard-link cannot be created, e.g. the file system does not support it, then it has to make a copy of the executable which does take a very small amount of extra disk space.
- **Create Shortcut With No UAC Prompt:** When you run SyncBack elevated, Windows will show the **User Account Control** (UAC) prompt. Over time, this may become annoying, especially if you start SyncBack manually frequently. You can disable the UAC prompt in Windows, but this is not advisable. An alternative is to set SyncBack to start with Windows when you login. In this case it will already be running and no UAC prompt will appear. If that is not an option then you can click this button. You are asked where to create a Windows shortcut, e.g. on your desktop. This shortcut, when run, will trigger a specially created scheduled task (which is created automatically when the button is pressed). If you start SyncBack manually using this shortcut then you will not get a UAC prompt. Note that you cannot pass any command line parameters to SyncBack via this shortcut as the shortcut is actually for the task scheduler which then starts SyncBack. You can manually edit the scheduled task to add parameters if you wish. Also, shortcuts can be assigned hotkeys. **Important:** If [Administrator Protection](AdminProtWindows.md) is enabled in Windows then you cannot use this shortcut trick to bypass UAC prompts.
- Do not warn if the shadow/virtual account is being used (if Administrator protection is enabled in Windows): Windows 11 (24H2 or newer) includes an option to enable Administrator protection (it is off by default). If you start SyncBack elevated, and Administrator protection is enabled, then SyncBack will display a warning to remind you that you are not using your actual Windows account but are instead using the shadow/virtual administrator account. This may have a major impact on your profiles. Refer to the [Administrator protection](AdminProtWindows.md) help page for details.
- Enable the Process Redirection Trust Policy: There is an inherent security issue in Windows when any elevated process deletes junctions or symbolic links that point to certain folders. Windows has a fix for this, which a process must enable. SyncBackPro enables this option by default, and for security reasons, this setting is stored in the registry and not the usual settings files. This may have an impact on your profiles if you are running SyncBackPro elevated and are using junctions or symbolic links. If your logs contain the error "The path cannot be traversed because it contains an untrusted mount point", then Windows security (enabled by this setting) has stopped the file copy or delete. The cause is untrusted junctions or symbolic links. Basically, if a symbolic link is created by an unelevated (or untrusted) process, then it will not be followed. The Process Redirection Trust Policy in Windows is a security mitigation designed to prevent unauthorized redirection of file system operations, particularly those involving junctions or symbolic links created by non-administrative users. If you change this setting then you must restart SyncBackPro for it to take affect.
See the [Elevate](MiscellaneousElevate.md) settings page for more details about elevation.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Dialogs
Many dialogs displayed by SyncBackPro include a **Do not prompt me again** checkbox:
When you tick this checkbox and click a button (for example OK, Yes, or No), the dialog will not appear again in the future. Instead, the response you chose will be used automatically. For example, if you tick the checkbox and click **Yes**, the answer Yes will be used every time that dialog would have been shown.
If you later decide you want a dialog to appear again, you can re-enable it from the Dialogs settings window.
## Opening the Dialogs Settings
To manage your suppressed dialogs, click the [Burger Menu](PreferencesMainMenu.md) (the menu icon in the top-left corner of the main window) and select **Dialogs**.
## The Dialogs Settings Window
The window has two main controls:
- **Profile:** A drop-down list of all your profiles plus a special ***Program*** entry. Some dialogs are specific to a particular profile (for example, confirmation prompts shown during that profile's run). Others are program-wide and not tied to any profile. Select a profile to see its suppressed dialogs, or select ***Program*** to see program-wide suppressed dialogs.
- **Dialog text:** A list of all dialogs that have been suppressed for the selected profile (or for the program). Each entry shows the text of the dialog along with the stored response that is being used automatically, e.g. **OK**, **Yes**, or **No**. A ticked entry means the dialog is suppressed. Untick an entry to re-enable that dialog so it will be shown again.
## Re-enabling Suppressed Dialogs
To re-enable a single dialog, simply untick it in the **Dialog text** list. The next time that situation arises, the dialog will be shown again and you can choose a new response.
To re-enable all dialogs for a profile at once, press **Ctrl-A** to select all items, then right-click and choose **Untick selected** from the pop-up menu. Remember to do this for each profile as well as for ***Program*** if you want to reset all suppressed dialogs.
## When to Re-enable Dialogs
You may want to re-enable dialogs in the following situations:
- You accidentally suppressed a dialog and chose the wrong response
- Your circumstances have changed and you need to review decisions you previously made
- A profile is not behaving as expected and you suspect a suppressed dialog is automatically choosing an action you no longer want
- You are troubleshooting a problem and want to see all confirmation prompts
## Dialogs and Unattended Runs
When a profile runs unattended (for example, from the Windows Task Scheduler or from the command line), no dialogs are shown regardless of the settings on this page. If a situation arises that would normally prompt the user, such as a file collision, the file is skipped instead. Suppressed dialogs configured here only apply to attended (interactive) runs where the stored response is used in place of showing the dialog.
For more information about attended and unattended runs, see [Running a Profile](RunningaProfile.md).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Comparison Programs
When running a profile, the [Differences window](TheDifferencesWindow.md) lists all the files that will be copied, deleted, moved, and so on. Sometimes you may want to see exactly how two versions of a file differ before deciding what action to take. For example, you may have edited the same document on both the source and destination, and you need to decide which version to keep. SyncBackPro lets you launch an external comparison tool to visually inspect the differences between the two files.
The **External file comparison tools** window lets you tell SyncBack which external programs to use to visually compare files of various types.
## Opening the Comparison Programs Window
There are two ways to open this window:
- Click the [Burger Menu](PreferencesMainMenu.md) (the menu icon in the top-left corner of the main window) and select **Comparison Programs**
- In the [Differences window](TheDifferencesWindow.md), click the **Comparison Programs** button
## Settings
Each comparison program entry has the following settings:
- **Name:** A unique name for the entry. You can use whatever name you wish, e.g. **Compare Word Documents**
- **Description:** An optional description of the entry, e.g. **Compares word documents**
- **Program:** The complete path and filename of the comparison program. Windows environment variables can be used, e.g. **%ProgramFiles%\WinMerge\WinMergeU.exe**. If the program does not exist at the specified path then the text will be highlighted in red.
- **Parameters:** The command line parameters passed to the comparison program. There are two special placeholders: **%1** represents the source/left filename, and **%2** represents the destination/right filename. SyncBack will automatically replace these with the correct filenames. You will usually need to wrap them with double-quotes to handle file paths that contain spaces, e.g. **"%1" "%2"**
- **File types that can be compared:** A comma-delimited list of file extensions that this comparison program can handle. Do not include the leading period, e.g. use **txt,c,h** not **.txt,.c,.h**. When you compare a file, SyncBack uses this list to find the appropriate program. If multiple entries match the same file type, the first matching entry in the list is used.
## Comparing Files in the Differences Window
Once you have configured one or more comparison programs, you can compare files from the [Differences window](TheDifferencesWindow.md):
1. Select one or more files in the Differences window
2. Press **Ctrl-M**, or right-click and select **Compare** from the pop-up menu
3. SyncBack will launch the appropriate comparison program based on the file extension
You can also configure the double-click action in the Differences window to compare files. If no suitable comparison program is configured for the file type, the files are opened instead.
- When comparing files from remote locations (such as FTP servers, cloud storage, or SyncBack Touch devices), the files must first be retrieved to the local drive. This may cause a delay, especially for large files or slow network connections.
## Example Configurations
Below are examples of how to configure some popular comparison tools. Check each program's documentation for the most up-to-date command line options.
**WinMerge** (free, open-source)
- **Program:** %ProgramFiles%\WinMerge\WinMergeU.exe
- **Parameters:** "%1" "%2"
**Beyond Compare**
- **Program:** %ProgramFiles%\Beyond Compare 4\BComp.exe
- **Parameters:** "%1" "%2"
**Notepad++** (with Compare plugin, free)
- **Program:** %ProgramFiles%\Notepad++\notepad++.exe
- **Parameters:** "%1" "%2"
**Visual Studio Code** (free)
- **Program:** %LocalAppData%\Programs\Microsoft VS Code\Code.exe
- **Parameters:** --diff "%1" "%2"
## Tips
- You can create multiple entries for the same program to handle different file types. For example, one entry for text files (txt, csv, log) and another for source code files (c, h, pas, py).
- Many comparison tools can handle binary files (such as images or Office documents) as well as plain text. Check the documentation of your preferred comparison tool to see what file types it supports.
- If multiple entries match the same file extension, the first match in the list is used. You can reorder entries to set your preferred priority.
- Always wrap **%1** and **%2** in double-quotes in the Parameters field. File paths that contain spaces will not be passed correctly to the comparison program without them.
For more information about the Differences window, see [The Differences Window](TheDifferencesWindow.md).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Logging Settings
By default the log file, produced when a profile is run, is created in HTML format. You can change the log file format, or choose not to create a log file at all.
- **Append to existing log file (Text Format only):** If a text log file is being used, then you can optionally have all log reports in one log file. When a profile is run the log is appended to the existing log file. There is no maximum log file size (with the limiting factor being the file-system used and disk space).
- **Store all my log files in the following folder:** This is the folder SyncBackPro will store the log files created after every profile run. You can use environment variables, e.g. **%APPDATA%**
- **Use the following filename for my log files:** This is the filename of the log files SyncBackPro created. Windows environment variables and SyncBackPro variables can be used here, including a special variable called **%PAGE%** which is replace with the page number of the log file.
- Note that this setting is just the filename, not the path. The **Store all my log files in the following folder** setting is for the path.
- **Keep a history of…:** SyncBack can be configured to keep a certain number of log files, e.g. the log files of the last 3 profile runs, and also specify how many days of log files to keep for a profile. Days refers to unique days, not consecutive days. For example, if you specify 3 days, then you could have 3 logs on Monday, 1 on Wednesday, and 2 on Friday. The number of total logs to keep takes precedence over the number of days to keep. These are program wide settings, meaning all profiles will keep this number of log files for that many days. However, it is possible to override these values at a [profile level](Log.md#history).
- **Delete All Log Files:** Click this button to delete all your log files.
### Text Log Files Format
Text format log files are mainly for use by other programs. HTML log files are for people to use. The text log file is a comma-delimited list of lines with all line elements (columns) wrapped in double-quotes:
"**Date & time**","**Is A Control Message?"**,"**Filename/Control Message**","**Status**","**File Status"**,"**Error Type"**
| **Date & time** | Date & time line was written to the log file |
| --- | --- |
| **Is A Control Message?** | 1 if this is a control message. If so the [Filename] is actually an informational message. For a value of zero, it really is a filename. |
| **Filename/Control Message** | Either a filename or a control message |
| **Status** | e.g. Not in destination, source copied |
| **File Status** | Integer value for file status:
0 = Not relevant to current line, i.e. ignore the file status
1 = File was skipped & was in both
2 = File was skipped & was in source/left only
3 = File was skipped & was in destination/right only
4 = File was deleted
5 = File was copied
6 = File attributes and/or date & time changed
7 = File warning
8 = Error
9 = File was copied, but a reboot is required
10 = File was ignored during scan of source, e.g. filtered out
11 = File was ignored during scan of destination, e.g. not selected
12 = File was ignored during comparison, e.g. read-only
13 = File was unchanged (fast backup only)
14 = An exception report
15 = A version was restored
16 = The file was in neither the source nor destination
17 = File was renamed
18 = File was renamed, but a reboot is required
19 = File failed integrity check because hashes don't match
20 = File passed integrity check
21 = File failed integrity check because of an error
22 = File was skipped, was in both source/left and destination/right, but was considered identical
23 = Output from Run Before and/or Run After (new to version 11) |
| **Error Type** | The end of the line will have a letter if the line refers to an error or warning:
**W** for warning messages
**E** for error messages
**X** for exceptions (SyncBackPro caused an exception error)
**O** for no error |
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Advanced Logging
Advanced Logging is a highly configurable way to send logging information to external systems. You can choose what information you want sent to the logging system.
In the current version, the following systems are supported:
- Windows Event Log
- Text file
- [Logstash](https://github.com/elastic/logstash) Server
- HTTP REST Server
- [SysLog](https://www.2brightsparks.com/syslog/download.html) Server
- You **must** restart SyncBackPro if you change the Advanced Logging settings.
## Configuration
First, you must choose what format the log information will be in:
- JSON
- XML
- CSV
- Text (free-format)
Next, choose the combined total of how many file entries you want. For example, the variable [%LOGJSON_ERROR%](Variables.md#advancedlogvars) contains a list of errors. You may not want to overload your logging system and so may only want to list 100 files in total. Keep in mind this is the **combined** total, so if you use %LOGJSON_COPIED%, %LOGJSON_WARNING%, etc. then the total number of file entries listed in all those variables combined cannot exceed this value. The order of files is undefined.
Most importantly, you need to define where the log details are going to be sent, e.g. a Logstash server. You can choose multiple destinations. If you right-click on an entry, and choose **Edit** from the pop-up menu, you can configure it. SyncBackPro uses [QuickLogger](https://github.com/exilon/QuickLogger) for the Advanced Logging. See it for detailed information on the configuration settings.
The Simple text log file is mainly for testing. There may be locking issues, for example, using text logging. Do not use it in production.
## Variables
You are free to define whatever information you want to send to your logging services. This can be a mix of free-format text and variables. The [Advanced Log Variables](Variables.md#advancedlogvars) section of this help file lists the special variables you can also use for this particular situation.
If you are using the JSON format, for example, then you will want to use the JSON advanced logging variables.
If you right-click on the edit box, you can select **Validate** to check for errors with your logging message.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Windows shell extension settings
SyncBackPro (Pro version only) is integrated with the Windows File Explorer shell so that you can select a folder (or drive) and use it with an existing profile. For example, you could right-click on a folder in Windows File Explorer (not to be confused with Internet Explorer) and have SyncBackPro run the profile with the selected folder as the source or destination.
- **Description:** This is the text of the menu item that appears in Windows File Explorer. For example, **Backup to my FTP server**.
- **Profile Name:** The profile to use. Note that you can select a group but keep in mind that the folder selected will be used with **all** the profiles in the group. That may not be appropriate or desired.
- **The selected file/folder is the…:** This setting specifies how SyncBackPro should use the selection you have made in Windows File Explorer. For example, if you have an FTP profile and want to backup folders to it, then you probably want to specify that the selected folder is the source. You can also have SyncBackPro prompt for one of the paths.
- **Run unattended, i.e. no prompting:** If this checkbox is selected then the profile will be run without any prompting. You cannot use this option if you've specified you want to be prompted for the path.
- **Do not use the file and folder selections: I**f this checkbox is selected then SyncBackPro will run the profile without using the [file and folder selections](SubDirectoriesandFiles.md). It is advisable that you enable this option. For more details see the [Restoring and Selections](RestoringSelections.md) section.
- **Do not use the filters:** If this checkbox is selected then SyncBackPro will run the profile without using the [filters](FilterSettings.md). It is advisable that you enable this option. For more details see the [Restoring and Selections](RestoringSelections.md) section.
The order of the menu items can be re-arranged by using the up/down arrow buttons on the left.
### Installation
- The Windows File Explorer shell extension can only be installed by SyncBackPro when it is run [elevated](MiscellaneousElevate.md).
The Windows File Explorer shell extension is not installed (or updated) unless this window is displayed. If the shell extension cannot be installed or updated then an error message will appear once this windows opens. Also, if the shell extension has been updated, e.g. a new version of SyncBackPro was installed with a newer shell extension, then you may be prompted with the message **A reboot is required to replace in-use files**. If so, you must reboot Windows to update the shell extension. The reason a reboot is required is that Windows is using the shell extension DLL and so the DLL file cannot be replaced. The only way to replace it is to reboot Windows, at which point Windows itself will replace the old DLL with the new DLL.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Linked Cloud Accounts
Many cloud services (storage, email, etc) require authentication before they can be used by an application such as SyncBackPro. The authentication process then creates a special token which is used by the application to connect to your cloud service. SyncBackPro doesn't store or use your cloud username and password, but instead stores and uses that token. You can revoke a token to stop an application from connecting to your cloud service.
You only need to perform this authentication process once for each application. The **Linked Cloud Accounts** feature in SyncBackPro is designed to make it easy to manage this cloud authentication and make sure all your profiles use the same token. Sometimes these tokens change, and by using this feature you can ensure that your profiles don't stop working when this happens. Linked Cloud Accounts can be used with [shared settings](SharedSettings.md), and when they are, the linked cloud account takes precedence over the shared settings.
For **Gmail**, you can either use [application passwords](https://support.google.com/mail/answer/185833?hl=en), which are simpler to create but potentially less secure, or you can create a [ClientID and Client Secret](https://www.2brightsparks.com/resources/articles/gmail-oauth.html). It is possible that at a future date, Google will disallow application passwords.
For **Google Drive**, you will need to [create a Client ID and Client Secret](GoogleDrive.md) for SyncBackPro.
Using a linked cloud account is very simple:
- Select **Linked Cloud Accounts** from the burger menu
- If a cloud service has not yet been authorized then it will have **Not Authorized** next to it.
- Click **Not Authorized** for the service you want SyncBackPro to be able to use.
- Go through the authorization process (what this is depends on the cloud service).
In your profile(s) you can now use that cloud service. For example, if your are using Box, and you've linked your account, then modify your profile, go to **Cloud** and click the **Use my account** button.
Using linked accounts is also a good way to create profiles that can be shared. If you import a profile that uses linked accounts then you will use your own linked account and not the linked account from the person who exported it.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Queue
SyncBack can [run profiles](RunningaProfile.md) in parallel, i.e. you can have more than one profile running at the same time. This is the default behaviour. When you run a profile it is run immediately without waiting for any currently running profiles to complete. You can also create [groups](CreatingaGroupProfile.md) to run profiles serially, i.e. you can create a group profile to run a profile and wait for it to finish before running the next profile in the group.
However, sometimes you may want to run a profile only when no other profiles are running. This may be because of resource constraints, e.g. low memory, low bandwidth, etc., or simply that you want a currently running profile to complete before starting a new one. To achieve this SyncBack has a **queue**. Profiles in the queue are only run when no other profiles are running and profiles in the queue are run in a first-in-first-out (FIFO) order. For example, if you add profile A then profile B then profile C to the queue then SyncBack will run them in the order they were added (A, B, then C). You can add a profile multiple times to the queue and remove a profile from the queue but you cannot change the order of the profiles in the queue. Remember that you can create a group profile if you want finer control over the order of profiles. The queue is a simple ad-hoc way to allow profiles to be run serially.
To add a profile to the queue simply select it in the main window and press **Ctrl-Q**. Alternatively you can select **Queue -> Queue profile** from the pop-up menu or **Queue profile** from the drop-down menu on the **Run** button. This will add the selected profile(s) to the queue and run them attended, i.e. you will be prompted if required. If you want them to run unattended, i.e. no prompting, then choose **Queue profile (run unattended)** from the menu.
You can see which profiles are in the queue by looking at the **Stop** column in the main window. If a profile is in the queue an icon will be shown in that column for the profile. You can click this icon to remove the profile from the queue. Note that there is no way to review or change the order the profiles in the queue will run in. Remember that if you want more control over the order it is recommended that a group profile be used instead.
You can remove a profile from the queue by selecting it in the main window and selecting **Queue -> Remove profile from queue** from the pop-up menu or **Remove profile from queue** from the drop-down menu on the **Run** button. You can also click on the queue icon shown in the **Stop** column in the main window. Note that it will remove all instances of the selected profile(s) from the queue (remember you can add the same profile to the queue more than once). For example, if the queue has profiles A, B, C, B, A in it and you remove profile B then the queue will become A, C, A.
You can also remove all profiles from the queue. To do that select **Queue -> Clear queue** from the pop-up menu or **Clear queue** from the **Run** button. This will clear the queue but not stop any profile that is currently running and was taken from the queue. If you want to stop all the running profiles, and clear the queue, press **Ctrl-Alt-S**, or select **Stop all profiles** from the drop-down menu on the **Stop** button, or right-click on the SyncBack tray icon and select **Stop all profiles** from the pop-up menu.
### Group Queues
Group Queues were introduced in SyncBack V11. They are a combination of groups and queuing. Basically, you can think of a **group queue** as a pre-configured queue. See the [Groups](Groups.md) section for more details.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Shared Settings
Each profile has its own settings, e.g. what the source/left directory is. However, in some cases you may want to share settings between several profiles. For example, you'll probably have the profiles log files emailed to the same email account. Instead of setting the email connection details for each profile it would be simpler to just set it once and then have those profiles use that one set of settings. That way, if the email login password changes (for example) then you only need to change it in one place instead of in each profile.
You can share the settings on the following profile settings pages:
- [Auto-close](AutoCloseSettings.md)
- [Backup of email](BackupEmail.md)
- [Cloud](Cloud.md)
- [Emailing the log](EmailSettings.md)
- [File and Folder selection](SubDirectoriesandFiles.md) (cannot be created or edited from Shared Settings window)
- [FTP](FTPSettings.md)
- [HTTP](SetupHTTP.md)
- [Network](NetworkSettings.md)
- [Pushover](Pushover.md)
- [Tags](CloudTags.md)
- [Variables](SetupVariables.md) (both for group and non-group profiles)
- [VHD](SyncBackContainer.md)
- [Webhook](SetupWebhook.md)
- [When, Program](WhenPrograms.md)
- [Zip filter](CompressionCompressed.md)
### Managing Shared Settings
To see a list of all the shared settings, and which profiles are using them, select **Shared Settings** from [main burger menu](PreferencesMainMenu.md) . In previous versions of SyncBack you could only delete shared settings from this window.
From the **Shared Settings** window you can see all the shared settings. You can also delete, modify, rename them, set profiles to use them, and stop profiles using them. Using the **Create** button you can also create new shared settings. You cannot create or modify **File and Folder selections**. Those must be modified from within a profile that uses them, or created via a profile.
You can also delete shared settings by selecting them and pressing the **Del** key. Renaming can also be done by pressing **F2**. To quickly modify a shared setting you can double-click the shared setting item in the list.
Shared settings can be exported by selecting the ones to export, then right-clicking on the selection and choosing **Export** from the pop-up menu. You can also **import** shared settings from the same pop-up menu or from the Create menu.
### Creating New Shared Settings (while creating or modifying a profile)
From the Shared Settings window (see above) it's easy to create shared settings. But you can also create new shared settings while creating a new profile or modifying an existing one.
To create new shared settings simply click the share icon in the top-left of the window the click the **New** menu item. Alternatively, if you're not using the **Windows** [style](PreferencesMainMenu.md#style), click the **New** button (in the **Shared Settings** menu in the window caption bar). Next, enter a unique name you wish to use for the shared settings, e.g. My FTP Server. Note that if you've made changes to the settings on the current settings page then they will be lost unless you apply (save) them first.
### Copying Shared Settings
To copy existing shared settings simply create some new shared settings. The existing settings will be copied to the new shared settings.
### Using Shared Settings in Profiles
As well as choosing shared settings from within a profile, you can start from the shared settings themselves and apply one to several profiles at once. Select a shared setting in the **Shared Settings** window and click **Use in Profiles**.
You are shown every profile and group, along with the defaults used for new profiles and new groups. Tick each one that should use the shared settings, then click **Apply**.
Not every profile can use every kind of shared settings. Shared FTP settings, for example, are of no use to a profile that is not backing up to an FTP server. Anything that cannot use the shared settings you have selected is greyed out, with the reason shown in the **Can be used** column:
- **Its destination is not of this type** - the shared settings are for a destination the profile is not using, e.g. FTP settings and a cloud profile.
- **Groups can only use shared variables** - group profiles have far fewer settings pages than ordinary profiles, and Variables is the only one of those that can be shared.
- **Its destination cannot store compressed files** - shown for Zip filter settings when the profile backs up to a script, an email server, or an HTTP location.
- **It does not back up to a virtual disk** - shown for VHD settings.
- **Already using these shared settings** - there is nothing to do.
A profile that is running, or is due to run, is also not offered, because its settings are held in memory for the duration of the run.
Note that when a profile starts using shared settings, whatever it had of its own for those settings stops being used, and the shared values are used instead. You are shown exactly which profiles will change, and asked to confirm, before anything is altered.
**File and Folder selections** cannot be applied this way. They must be chosen from within a profile.
### Stop Using Shared Settings in Profiles
The opposite of **Use in Profiles**. Select a shared setting in the **Shared Settings** window and click **Stop Using** to take it back out of everything that is using it. The shared settings themselves are kept.
You are shown everything that is using them - profiles, groups, and the defaults for new profiles and new groups. Tick each one that should stop using them, then click **Remove**.
Before the link is broken, the current values of the shared settings are copied into each profile you ticked, so it carries on working exactly as it does now. An FTP profile, for example, keeps the server address and login details it was using.
Anything you do not tick carries on using the shared settings. That is a perfectly good result here: nothing is being deleted, so there is no need to clear the list.
**File and Folder selections** cannot be removed from a profile this way, for the same reason they cannot be applied: they are stored in a database as well as a settings file. Those must be changed in each profile directly.
### Deleting Shared Settings
To delete existing shared settings select **Delete** from the share icon menu, or click the **Delete** button (in the Shared Settings menu in the window caption bar, if you are not using the **Windows** [style](PreferencesMainMenu.md#style)) and choose the settings to delete. Note that you cannot delete shared settings that are being used, or shared settings that are set to be the [default values](ClickForOptions.md#saveasdefault).
That applies when deleting from within a profile. From the **Shared Settings** window you can also delete shared settings that are being used. If something is using them, you are shown everything that does - profiles, groups, and the defaults for new profiles and new groups - and you tick each one that should stop using them.
Before the link is broken, the current values of the shared settings are copied into each profile you ticked, so it carries on working exactly as it does now. An FTP profile, for example, keeps the server address and login details it was using.
Anything you do not tick carries on using the shared settings, and the shared settings are then not deleted. The same is true if something could not be changed, a profile that is running for example: you are told which, and the shared settings are left alone.
Once nothing is using them, you are asked whether the shared settings should be deleted as well. Answer **No** to keep them - the profiles you ticked have stopped using them either way, so this reaches the same result as the **Stop Using** button above.
**File and Folder selections** cannot be removed from a profile automatically, because they are stored in a database as well as a settings file. Those must be changed in each profile directly.
### Renaming Shared Settings
To rename existing shared settings select **Rename** from the share icon menu (in the Shared Settings menu in the window caption bar, if you are not using the **Windows** [style](PreferencesMainMenu.md#style)) and enter the new name to use. Shared settings names must be unique, and also cannot use the name **None**. Renaming shared settings does not affect which profiles are using the shared settings.
### Security
Shared settings are not password protected, but profiles can be. You should be aware that if you have a [password protected profile](MiscellaneousSettings.md#passwordprotect) that is using shared settings, and another profile that is not password protected and using the same shared settings, then a user could change those shared settings via the unprotected profile.
### Importing
An exported (or backed-up) copy of a profile will include a copy of any Shared Settings the profile is configured to use. If you re-Import such a profile, it will also import any Shared Settings configuration data as of the date of the Export. If you have made any edits to those particular Shared Settings in the meantime, those recent edits will be lost (overwritten) by the older set stored in the copy profile you just Imported. This is an inevitable consequence of storing those details on Export (but if those details were not stored, then an Import into a new system would be trying to reference Shared Settings that the backup copy does not include).
## Cloud and FTP
If you are using cloud services like Dropbox, Box, etc. then you should use [linked cloud accounts](LinkedCloudAccounts.md). If you are using cloud services that require a username and password, e.g. Amazon S3, or FTP, then it's highly recommended that shared settings are used.
For FTP, email, and cloud services that use a username and password, it makes sense to use **shared settings** simply because passwords change, and if you are using shared settings then if you change your login password then you only need to update it for one of your profiles and it will be updated in all of them (that use the same shared setting).
For cloud it is especially important to use **linked cloud accounts** because of the way the security systems work. With cloud services you usually don't connect using a username and password. You need to login to your cloud account (using a browser) and then give permission to the application (like SyncBackPro) to use the cloud service. This means the application does not have your cloud username and password but instead gets a special token. The application uses this token to access your cloud files. This token can be revoked by you so stopping that application from accessing your cloud account. These tokens can also expire and need to be refreshed by the application periodically. Because of this using **linked cloud accounts** for cloud profiles ensures that all your profiles (using the same cloud account) will share that same token. When that token is refreshed then all the profiles will use that new token.
With some cloud services, e.g. **Box**, this is critically important because each application is only allowed one token. So if you have two Box profiles, and are not using a linked account, then if one of the profiles has to refresh the token then it will have a valid token while the other profile will now be using an old and now invalid token. When that profile runs it will need to authorize itself again, which now stops the other profile from working. However, if both profiles are using the same linked account then they'll always be using the correct token.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Secrets Manager
### Secrets Management
SyncBackPro can be used with popular secrets managers to retrieve usernames, passwords and private keys. This removes the need to store encrypted passwords in the settings and allows for all the benefits of using a secrets manager, e.g. auditing, password rotation, etc.
The following secrets managers are supported:
- AWS Secrets Manager
- Azure Key Vault
- Google Cloud Secret Manager
- Windows Credential Manager (local, part of Windows)
- HashiCorp Vault (open source)
- Infisical (open source)
- 1Password (requires a [Connect server](OnePasswordConnect.md))
- Dashlane (uses the [Dashlane CLI](Dashlane.md))
- Bitwarden (uses the [Bitwarden CLI](Bitwarden.md))
SyncBackPro only requires read access to the secrets manager (list the secrets and retrieve the value of a secret). It does not create, delete or modify secrets stored in a secrets manager. Also, the value stored for a secret is never shown to the end user nor stored locally. The remote secret must be in plain text or JSON format.
### Connecting to a Secrets Manager
To use a secret you must first create a connection to a secrets manager. Multiple secrets can share the same connection. To create a connection:
- Go to the **Secrets Manager** (via the [main burger menu](PreferencesMainMenu.md))
- Go to the **Connections** page
- Click the **Create** button and choose the appropriate secrets manager from the pop-up menu, e.g. Amazon:
You are then prompted for the connection details based on the type of secrets manager:
**Name:** The name you want to give to the connection. This is for your reference.
If you are using Amazon AWS Secrets Manager:
**Access Key ID**: Your access key ID.
**Secret Access Key**: Your secret access key.
**Endpoint**: Choose the region (endpoint) that the secrets manager is physically located.
If you are using Google Cloud Secret Manager:
**Please select your Service Account Private Key file (JSON)**: A JSON private key file is required.
If you are using Microsoft Azure Key Vault:
**Vault**: The vault ID.
If you are using [HashiCorp Vault](https://www.hashicorp.com/en/products/vault):
**URL**: The URL of the key/value (KV) secrets engine in your HashiCorp Vault. This is typically in the form of **http://*hostname*:8200/v1/*secrets_engine***. Both version 1 and version 2 of the KV secrets engine are supported.
**Authentication Method**: Choose **Vault Token** or **AppRole**.
**Vault Token**: The Vault login token (Vault Token authentication only).
**Role ID** (AppRole only): The role ID of the AppRole.
**Secret ID** (AppRole only): A secret ID for that role.
**AppRole Login Path** (AppRole only): Where the AppRole authentication method is mounted. The default is **auth/approle**. If your Vault server uses namespaces then include the namespace, e.g. **admin/auth/approle**.
Vault tokens normally expire (after 768 hours unless your Vault administrator has changed it), and any profile using an expired token will fail until you enter a new one. For profiles that run unattended, e.g. on a schedule, we recommend AppRole. SyncBackPro logs in with the role ID and secret ID each time it needs a secret, so token expiry does not affect it. The token Vault returns is never stored. Make sure the secret ID itself does not expire, or remember to replace it before it does.
If you are using [Infisical](https://infisical.com/):
**Client ID**: Your client ID in Infisical.
**Secret Key**: The secret key for the client ID.
**Regional**: Select the hostname or enter your own.
**Project ID**: Your project ID.
**Environment**: e.g. **dev**
If you are using [1Password](https://1password.com/) then you must first set up a [1Password Connect server](OnePasswordConnect.md). SyncBackPro connects to that server, not to 1Password directly:
**URL**: The address of your Connect server, e.g. **http://*hostname*:8080**. Do not include **/v1**, as SyncBackPro adds that itself.
**Vault Token**: The access token for your Connect server.
**Vault**: The vault ID (not the vault name).
SyncBackPro can only use 1Password items in the **Login** and **Password** categories, and only their username and password fields. See [1Password Connect Server](OnePasswordConnect.md) for the full setup.
If you are using [Dashlane](https://www.dashlane.com/) then you must first install the Dashlane CLI and register a device for SyncBackPro:
**Path to dcli.exe**: Where the Dashlane CLI is. Leave it blank to search the path.
**Device Keys**: The keys printed by **dcli devices register**, starting with **dls_**.
See [Dashlane](Dashlane.md) for the full setup. Note that Dashlane items are found by their title, so renaming an item in Dashlane breaks every profile that uses it.
If you are using [Bitwarden](https://bitwarden.com/) then you must first install the Bitwarden CLI and get the personal API key of the Bitwarden account that SyncBackPro will use:
**Path to bw.exe**: Where the Bitwarden CLI is. Leave it blank to search the path.
**Server**: **https://vault.bitwarden.com** (US, the default), **https://vault.bitwarden.eu** (EU), or the https:// address of your own Bitwarden or Vaultwarden server.
**client_id**: The client_id of the personal API key, starting with **user.**
**client_secret**: The client_secret of the personal API key.
**Bitwarden Master Password**: The master password of the account. It is needed to decrypt the vault, so it is stored, encrypted, with the connection.
See [Bitwarden](Bitwarden.md) for the full setup. We strongly recommend a Bitwarden account that holds only the credentials your profiles need. Note that Bitwarden items are found by their name, so renaming an item in Bitwarden breaks every profile that uses it.
If you are using the Windows Credential Manager then only a name is required.
Once a connection has been established to your secrets manager you can define what secrets you want to use. You can define as many connections as you need. Multiple secrets can use the same connection.
You can **Delete, Rename** and **Modify** your existing connections. Note that a connection cannot be deleted if it is being used by a secret (see the **Connection** column on the Secrets tab).
### Define Secrets
Once you have defined at least one secrets manager connection you can specify which secrets you want to use that are stored in that secrets manager. To do this:
- Go to the **Secrets Manager** (via the [main burger menu](PreferencesMainMenu.md))
- Go to the **Secrets** page
- Click the **Create** button and choose the type of secret you wish to use. There are three types of secrets:
- Username
- Password (including [SSE-C cloud encryption keys](CloudAdvanced.md))
- Private Key (for [SFTP](FTPSettings.md#sftpkeys))
If you have more than one connection you are first asked which one to use. You are then asked for the secret's details, one dialog at a time:
**Name:** SyncBackPro will retrieve a list of the names of all secrets defined in your secrets manager. You must select the secret you wish to use.
**Description**: If the secrets manager has a description of the secret then it is retrieved. For Bitwarden, Dashlane and 1Password the description is filled in with the type of the item instead: Login, Password, Secure Note, SSH Key or Secret. You can change it. The description is for your reference only (the description in the secrets manager is not changed).
**Key**: If the secret is stored in JSON, or as key/value pairs, then you must choose which key to retrieve the secret from. For example, a secret may contain both a username and a password, so you must choose which key stores the appropriate value. This dialog only appears when the secret has more than one key. If it has just one, that key is used without asking.
To delete a secret, click the **Delete** button. You cannot delete secrets that are being used by a profile (see the **Profiles** column to see which profiles are using a secret). Note that deleting a secret does not delete it from your secrets manager.
To change the description of a secret, click the **Rename** button. A secrets name is set in your secrets manager so it cannot be changed.
To modify a secrets definition, click the **Modify** button or double-click a secret.
### Using Secrets
Secrets can be used in several settings for a profile:
Using a secret is simple. In the [New Profile Wizard](CreatingYourFirstProfile.md), or when modifying an existing profile, if a secret can be used then you can select it from the drop-down menu. For example, with SFTP you can choose to use a secret for the SFTP private key:
When you select **Use a secret** you can then choose the appropriate secret. The pop-up menu has, in this order, **Manage secrets** (to create or change secrets), **Use a secret** and **Stop using secret**. Once a secret is in use, **Use a secret** becomes **Change secret**, followed by the name of the secret.
If a secret is being used you'll be able to see which via the hint on the drop-down menu button, which shows the name of the secret, and also in the pop-up menu, for example:
The value of a secret is never stored locally nor shown to the user (this includes usernames). Within the profiles settings, a secret is similar to a variable, but is hidden from the user.
### What is Secrets Management?
Secrets management is the process of securely storing and managing sensitive information, such as passwords, authentication tokens, and encryption keys.
A secrets manager and a **password manager** are both tools used for managing sensitive information, but they serve different purposes and have different capabilities.
A password manager is a tool used for securely storing and managing passwords. It allows users to generate and store complex passwords for different accounts, reducing the risk of password reuse and making it easier to maintain strong passwords. Password managers often include features like password strength analysis, automatic password filling, and password synchronization across multiple devices.
A secrets manager is a tool used for securely storing and managing any type of sensitive information, not just passwords. This can include API keys, encryption keys, tokens, and other types of credentials. Secrets managers often provide more granular access controls and audit trails to help manage secrets across an organization.
Typically an end user would use a password manager, e.g. LastPass, to login to web sites and services. In most cases only a single user has access to the passwords stored in a password manager. Password managers require that the user manually authenticate themselves first, e.g. they must manually enter a password. A secrets manager is usually used by software, such as SyncBackPro, and not end users. The secrets are stored online using a cloud service, e.g. using AWS Secrets Manager, and can be accessed and used by multiple users (people or software). Secrets managers often audit access to the secrets and limit what secrets a user can access.
### Where are Secrets Stored?
The connection information (to the secrets managers), and which secrets to use, are stored in the program settings (like [shared settings](SharedSettings.md) are). This means when exporting a profile, the importer of the profile will not have access to the secret.
The value of secrets, e.g. actual passwords, are never stored locally nor shown to the user.
### Windows Credential Manager Limits
The Windows Credential Manager user interface has a limit of approximately 512 characters for the maximum username length, and 259 characters for the maximum password length. This is a bug within that software as the actual maximum password length should be approximately 1,280 characters (2,560 bytes). It is possible to get around this limit using [PowerShell](https://stackoverflow.com/questions/29103238/accessing-windows-credential-manager-from-powershell), for example.
For limits with other credentials managers, e.g. HashiCorp Vault, refer to their documentation.
**Further reading:** [Secrets Manager](https://www.2brightsparks.com/resources/articles/secrets-manager.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# 1Password Connect Server
- The 1Password steps on this page are a summary, and 1Password may change them at any time. The definitive instructions are the ones on the 1Password web site: https://www.1password.dev/connect/get-started
SyncBackPro can retrieve usernames and passwords from [1Password](https://1password.com/). Unlike the other secrets managers it supports, it does not connect to 1Password directly. It connects to a [1Password Connect server](https://www.1password.dev/connect/) that you run yourself, and that server is what talks to your 1Password account. You must therefore set up a Connect server before you can use 1Password with SyncBackPro.
The Connect server is part of 1Password Secrets Automation. It is a small REST service, supplied by 1Password as two Docker containers, that holds a copy of the items in the vaults you give it access to and hands them out to software that presents a valid access token. Because you host it, your secrets are not exposed to any other service, and you decide which machines can reach it.
### What You Need
- A 1Password account with Secrets Automation. Connect servers are not limited to business accounts: they work with an Individual account too. On a Teams or Business account, your user account must also be in a group with permission to manage Secrets Automation.
- A machine to run the Connect server on, e.g. a Linux server, a NAS or a virtual machine, with Docker installed. It can be on your local network.
- Network access from the computer running SyncBackPro to that machine.
The Connect server does not need to be reachable from the Internet, and in most cases it should not be.
### Step 1: Create a Shared Vault
A Connect server cannot access your Personal, Private or Employee vault, nor the default Shared vault. Create a new shared vault in 1Password, e.g. **SyncBack**, and put in it the logins and passwords you want SyncBackPro to use.
SyncBackPro can only use items in the **Login** and **Password** categories, and it only reads the **username** and **password** fields of those items. Items in other categories are ignored.
### Step 2: Create the Connect Server
Sign in to your account on [1Password.com](https://my.1password.com/) and:
1. Go to **Developer** and then **Directory**.
2. Under **Infrastructure Secrets Management** choose **Other**, then **Create a Connect server**.
3. Give the server a name and tick the shared vault you created in step 1. A Connect server can only see the vaults you tick here.
4. Save the **1password-credentials.json** file that is offered to you. This file is how the Connect server itself signs in to 1Password, so keep it safe.
5. Create an **access token** for the server, and grant it access to the same vault. Copy the token, as it is not shown again. Note the expiry date you choose: when the token expires, profiles that use it will start to fail.
The same can be done from the command line with the [1Password CLI](https://www.1password.dev/cli/), using **op connect server create** and **op connect token create**.
### Step 3: Deploy the Connect Server
Copy **1password-credentials.json** to the machine that will run the server, and put the [docker-compose.yaml](https://i.1password.com/media/1password-connect/docker-compose.yaml) file that 1Password provides in the same folder. It starts two containers:**1password/connect-api** (the REST API that SyncBackPro talks to) and **1password/connect-sync** (which keeps its data in step with your 1Password account). Then start it:
**docker compose up -d**
If you use Kubernetes, 1Password also provides a Helm chart for deploying the Connect server. See the [1Password Connect documentation](https://www.1password.dev/connect/get-started) for details.
By default the API listens on port **8080**. To check that it is working, from the computer that will run SyncBackPro, open a browser or use **curl** in a Command Prompt (in Windows PowerShell type **curl.exe** instead, because **curl** there is a different command) to request:
**http://*hostname*:8080/v1/vaults**
with the header **Authorization: Bearer** ***your-access-token***. You should get back a list of the vaults that the token can see, each with an **id** and a **name**. If that works then SyncBackPro will work.
### Step 4: Find the Vault ID
SyncBackPro needs the vault ID, not the vault name. It is the **id** value shown in the **/v1/vaults** response above. You can also get it with the 1Password CLI, using **op vault list**, or from the address bar when you open the vault on 1Password.com.
### Step 5: Create the Connection
In SyncBackPro, go to the [Secrets Manager](SecretsManager.md) (via the [main burger menu](PreferencesMainMenu.md)), go to the **Connections** page, click **Create** and choose **1Password**. You are then asked for:
**Name**: The name you want to give to the connection. This is for your reference.
**URL**: The address of your Connect server, e.g. **http://*hostname*:8080**. Do not include **/v1**, as SyncBackPro adds that itself.
**Vault Token**: The access token you created in step 2.
**Vault**: The vault ID from step 4.
SyncBackPro connects immediately and lists the items in the vault, so you will know straight away if any of the details are wrong. Once the connection exists, you create secrets that use it in the usual way, as described in [Secrets Manager](SecretsManager.md).
### Security
- The access token is stored, encrypted, in the SyncBackPro settings. The value of a secret is never stored locally nor shown to the user.
- An access token can be used by anything that can reach the Connect server, so treat it as a password and limit which machines can reach the server, e.g. with a firewall rule.
- Connect uses plain HTTP by default. If the server is not on a trusted network then either configure the Connect server to serve HTTPS itself, using your own TLS certificate, or put it behind a reverse proxy that provides HTTPS. In both cases use the**https://** address in the URL setting.
- Give the token access only to the vault that SyncBackPro needs. Revoking the token in 1Password immediately stops SyncBackPro from retrieving those secrets.
- Depending on your 1Password account type, you may be able to review in 1Password which items the Connect server accessed and when.
### Limitations
- SyncBackPro only reads from 1Password. It never creates, changes or deletes items, and items cannot be added to 1Password from within SyncBackPro.
- Only **Login** and **Password** items are listed, and only their username and password fields are used. Private keys, e.g. for [SFTP](FTPSettings.md), cannot be retrieved from 1Password, so use another secrets manager for those.
- Items are identified by their title, so give each item a unique title. If two Login or Password items in the vault have the same title, both are refused with an error rather than guessed at: 1Password lists items in no fixed order, so the username and password could otherwise come from different items.
- A connection covers a single vault. If your secrets are in several vaults then create a connection for each one, and give the token access to each vault.
- 1Password service accounts and the 1Password SDKs are not supported. A Connect server is required.
### Troubleshooting
**A 401 error**: the token is wrong, has expired, has been revoked, or belongs to a different Connect server.
**A 403 error**: the token has not been given access to that vault, or the vault ID is wrong.
**No secrets are listed**: the vault contains no Login or Password items.
**A 404 error**: the URL is wrong. Check that **/v1** has not been included.
**Socket Error # 10061 Connection refused**, **Socket Error # 11001 Host not found** or another socket error: SyncBackPro cannot reach the Connect server. Check the host name and the port number, that the server is running, and that a firewall is not blocking it. If SyncBackPro is run elevated, or as a scheduled task using another user account, make sure that account can reach the server as well.
**400 Bad Request: Invalid Vault UUID**: the Vault setting holds the vault's name, or something else that is not a vault ID. Use the vault ID.
**More than one 1Password item is called ...**: two Login or Password items have the same title. Rename one of them so that every title is unique, then, if needed, modify the secret in the Secrets Manager and select the item again.
**Secret does not exist**: the item has been renamed, deleted or moved out of the vault, or the token can no longer see it. Modify the secret in the Secrets Manager and select the item again.
**Secrets work at first and then stop working**: the access token has probably expired. Create a new token in 1Password and modify the connection to use it.
See also: [Secrets Manager](SecretsManager.md)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Dashlane
- The Dashlane steps on this page are a summary, and Dashlane may change them at any time. The definitive instructions are the ones on the Dashlane CLI web site: https://cli.dashlane.com/personal/devices
SyncBackPro can retrieve logins, passwords, secure notes and secrets from [Dashlane](https://www.dashlane.com/). Dashlane has no web API for the contents of a vault, because a vault is only ever decrypted on your own devices. SyncBackPro therefore uses the [Dashlane CLI](https://cli.dashlane.com/) (dcli.exe), a free and open source program from Dashlane, and signs in with it as a non-interactive device.
### What You Need
- A Dashlane account that is used only by SyncBackPro. Dashlane recommends a separate account for non-interactive devices. Share with it just the items that SyncBackPro needs. The account must have a master password: passwordless accounts, and accounts that use single sign-on (SSO), cannot be used. It must also not be set to ask for a one-time password at every login.
- The Dashlane CLI for Windows, version 6.2412.0 or later, from the [Dashlane CLI releases page](https://github.com/Dashlane/dashlane-cli/releases).
- The [Microsoft Visual C++ Redistributable](https://learn.microsoft.com/cpp/windows/latest-supported-vc-redist) for Visual Studio 2015-2022 (x64). The Dashlane CLI will not start without it.
- 64-bit Windows. The Dashlane CLI is only available for 64-bit Windows.
- Internet access to Dashlane from the computer running SyncBackPro.
### Step 1: Install the Dashlane CLI
Download **dcli-win-x64-signed.exe** from the releases page, rename it to **dcli.exe** and save it somewhere every user account that runs your profiles can read, e.g. **C:\Program Files\Dashlane CLI\dcli.exe**. To check that it works, open a command prompt and run:
**"C:\Program Files\Dashlane CLI\dcli.exe" --version**
It should print a version number. If it says **The specified module could not be found** then install the Visual C++ Redistributable and try again.
### Step 2: Register a Device for SyncBack
In the same command prompt run:
**dcli devices register "SyncBack"**
You are then taken through these steps:
1. Enter the email address of the Dashlane account.
2. The command shows a web address. Open it in a web browser, and the page gives you a token, a long code made of letters, digits and dashes. Enter it at the prompt **Please enter the token given in the browser**.
3. Dashlane then emails a 6-digit code to the account. Enter it at the next prompt. If the account uses an authenticator app for two-factor authentication, enter the code from the app instead.
4. Enter the master password of the account.
The command then prints a line like this:
**DASHLANE_SERVICE_DEVICE_KEYS=dls_*...***
Copy everything from **dls_** to the end of the line. These are the **device keys**. They are shown only once, and they contain the master password of the account, so treat them as you would the master password itself.
If you later change the master password of the account then the device keys stop working, and you must register a new device.
### Step 3: Create the Connection
In SyncBackPro, go to the [Secrets Manager](SecretsManager.md) (via the [main burger menu](PreferencesMainMenu.md)), go to the **Connections** page, click **Create** and choose **Dashlane**. You are then asked for:
**Name**: The name you want to give to the connection. This is for your reference.
**Path to dcli.exe**: Where you saved the Dashlane CLI in step 1. If you leave it blank then SyncBackPro looks for dcli.exe on the path.
**Device Keys**: The device keys from step 2, starting with **dls_**.
SyncBackPro connects immediately and lists the items in the vault, so you will know straight away if any of the details are wrong. The first time can take a little longer as the vault is downloaded. You then create secrets that use the connection in the usual way, as described in [Secrets Manager](SecretsManager.md).
### Which Items Can Be Used
- **Logins**: you choose whether the secret is the **login**, **email** or **password** of the item.
- **Secure Notes** and **Secrets**: the whole text is used. For example, an [SFTP](FTPSettings.md) private key can be kept in a secure note. Secrets are only available in Dashlane's business plans (Password Management and Credential Protection); logins and secure notes are available in every plan.
Items are listed by their title, and a login without a title is listed by its web site address. The title must match exactly, including upper and lower case. Give each item a unique title. If items of different kinds have the same title, a login is used before a secure note, and a secure note before a secret. Two items of the same kind with the same title, for example two logins, are refused with an error rather than guessed at, because the username and password could otherwise come from different items.
**Renaming an item breaks the profiles that use it.** SyncBackPro remembers a Dashlane item by its title and nothing else. If you rename the item in Dashlane, every profile that uses that secret fails with **Secret does not exist** until you modify the secret in the [Secrets Manager](SecretsManager.md) and select the item under its new title. The same happens if the item is deleted, or is no longer shared with the account.
Also, if you give a different item the old title, SyncBackPro will use that item from then on, without any warning. So once an item is used by a profile, do not rename it, and do not reuse its old title for anything else.
### Elevated, Scheduled and Administrator Protection
SyncBackPro does not use any Dashlane login stored in your Windows profile. Each time it connects it gives the Dashlane CLI its own temporary folder, which is deleted afterwards, and nothing is stored in Windows Credential Manager. A Dashlane connection therefore works in the same way when SyncBackPro is run normally, run elevated, run under [Administrator Protection](AdminProtWindows.md), or run from a scheduled task, including one that runs whether or not the user is logged on. The account the profile runs as must be able to reach Dashlane over the Internet.
### Security
- The device keys are stored, encrypted, in the SyncBackPro settings. The value of a secret is never stored locally nor shown to the user.
- The device keys contain the master password of the Dashlane account, which is one reason to use an account that holds only the items SyncBackPro needs.
- To stop SyncBackPro retrieving secrets, remove its device from the Dashlane account, e.g. with **dcli devices list** and **dcli devices remove**.
- While a profile runs, an encrypted copy of the vault is kept in a temporary folder, so that all the Dashlane secrets the profile uses can share one connection. It is deleted when the profile finishes.
- Do not also use the same Dashlane account with the Dashlane CLI yourself, under the same Windows account. SyncBackPro removes the Credential Manager entry that the Dashlane CLI keeps for that account.
### Limitations
- SyncBackPro only reads from Dashlane. It never creates, changes or deletes items.
- Every profile run that uses a Dashlane secret signs in to Dashlane and downloads the vault, which takes several seconds and needs Internet access. This happens once per run for each connection, not once per secret, as the secrets of a run share one connection.
- The Dashlane CLI cannot use a proxy server. It ignores the Windows proxy settings and the HTTPS_PROXY environment variable, so the computer, and the account the profile runs as, need direct HTTPS access (port 443) to *.dashlane.com.
- Passwordless accounts, accounts that use single sign-on (SSO), and accounts that ask for a one-time password at every login cannot be used.
- Other item types, e.g. passkeys, payments, IDs and attachments, cannot be used.
- Items are found by their title only, so renaming an item in Dashlane breaks every profile that uses it until the secret is selected again. See **Which Items Can Be Used** above.
### Troubleshooting
**The specified module could not be found**: the Visual C++ Redistributable (x64) is not installed.
**The Dashlane CLI (dcli.exe) was not found**: the path in the connection is wrong, or it is blank and dcli.exe is not on the path. If SyncBackPro is run as another user, e.g. from a scheduled task, check that user can read the file.
**The Dashlane CLI is version ...**: the Dashlane CLI is too old to use device keys. Download the latest version.
**... is not the Dashlane CLI as signed by Dashlane**: the device keys unlock your whole vault, so SyncBackPro only gives them to a dcli.exe that carries Dashlane's own digital signature. The file is the unsigned download (dcli-win-x64.exe), has been changed or damaged, or is a different program. Download dcli-win-x64-signed.exe again. While a profile is using the Dashlane CLI, dcli.exe cannot be replaced, so update it when no profiles are running.
**The Dashlane CLI needs 64-bit Windows**: Dashlane does not provide the CLI for 32-bit Windows, so Dashlane cannot be used on this computer.
**Error while verifying the master password**: the device keys are wrong, the device has been removed from the account, or the master password has changed since the device was registered. Register a new device and modify the connection to use its keys. If the message ends with a network code, such as ECONNREFUSED, ETIMEDOUT or ENOTFOUND, the keys are not the problem: the Dashlane CLI could not reach Dashlane (see below).
**The Dashlane CLI did not finish within 120 seconds**: the computer, or the account the profile runs as, cannot reach Dashlane. Check the Internet connection and the firewall. The Dashlane CLI cannot use a proxy server, so a network that only allows Internet access through a proxy must allow direct HTTPS access to *.dashlane.com.
**More than one Dashlane login is called ...**: two items of the same kind have the same title. Rename one of them so that every title is unique, then, if needed, modify the secret in the Secrets Manager and select the item again.
**Secret does not exist**: the item has been renamed or deleted in Dashlane, or is no longer shared with the account. Modify the secret in the Secrets Manager and select the item again.
**No secrets are listed**: the account has no logins, secure notes or secrets. Check that the items have been shared with the account.
See also: [Secrets Manager](SecretsManager.md)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Bitwarden
- The Bitwarden steps on this page are a summary, and Bitwarden may change them at any time. The definitive instructions are the ones in the Bitwarden help: https://bitwarden.com/help/cli/
SyncBackPro can retrieve logins, passwords, secure notes and SSH keys from [Bitwarden](https://bitwarden.com/). It uses the [Bitwarden CLI](https://bitwarden.com/help/cli/) (bw.exe), a free and open source program from Bitwarden, and signs in with the personal API key of your Bitwarden account.
This is for Bitwarden **Password Manager**, the vault you use in the Bitwarden apps and browser extensions. It works with every Bitwarden plan, including the free personal plan. Bitwarden **Secrets Manager** is a separate Bitwarden product, and it cannot be used.
### What You Need
- A Bitwarden account that is used only by SyncBackPro and holds just the items it needs. See **Why the Master Password Is Stored** below. The account must have a master password. Accounts that sign in with single sign-on (SSO) and trusted device encryption, or through Key Connector, have no master password and cannot be used.
- The personal API key of that account (see step 2).
- The Bitwarden CLI for Windows, version 2024.7.0 or later, from the [Bitwarden download page](https://bitwarden.com/download/). Nothing else needs to be installed to run it.
- 64-bit Windows. The Bitwarden CLI is only available for 64-bit Windows.
- Internet access to the Bitwarden server from the computer running SyncBackPro, either directly or through a proxy server (see **Proxy Servers** below).
### Step 1: Install the Bitwarden CLI
On the Bitwarden download page, find the **Command Line Interface** section and download the Windows version. It is a zip file that contains a single program, **bw.exe**. Extract it and save it somewhere every user account that runs your profiles can read, e.g. **C:\Program Files\Bitwarden CLI\bw.exe**. To check that it works, open a command prompt and run:
**"C:\Program Files\Bitwarden CLI\bw.exe" --version**
It should print a version number.
Before it runs bw.exe, SyncBackPro checks that the file carries Bitwarden's own digital signature. It will not run any other program.
**Give bw.exe a folder of its own.** Do not save it in a folder that also contains a folder called **bw-data**. The Bitwarden CLI would keep its data in that folder instead of the private folder that SyncBackPro gives it, so SyncBackPro refuses to run it.
### Step 2: Get the Personal API Key
Log in to the Bitwarden web vault with the account that SyncBackPro will use. This is **https://vault.bitwarden.com** for an account on Bitwarden's US servers, **https://vault.bitwarden.eu** for one on its EU servers, or the address of your own server. Then:
1. Go to **Settings**, then **Security**, then the **Keys** tab.
2. Click **View API key** and enter the master password.
3. Copy the **client_id** and the **client_secret**. The client_id starts with **user.**
This is the personal API key of the account. The API key of a Bitwarden organisation, from the organisation's own settings, cannot be used. See [Personal API Key for CLI Authentication](https://bitwarden.com/help/personal-api-key/) in the Bitwarden help for more details.
Treat the client_secret as you would a password. If you rotate the API key, the old one stops working and you must modify the connection in SyncBackPro.
### Step 3: Create the Connection
In SyncBackPro, go to the [Secrets Manager](SecretsManager.md) (via the [main burger menu](PreferencesMainMenu.md)), go to the **Connections** page, click **Create** and choose **Bitwarden**. You are then asked for:
**Name**: The name you want to give to the connection. This is for your reference.
**Path to bw.exe**: Where you saved the Bitwarden CLI in step 1. If you leave it blank then SyncBackPro looks for bw.exe on the path.
**Server**: Choose **https://vault.bitwarden.com** (the default) for an account on Bitwarden's US servers, or **https://vault.bitwarden.eu** for one on its EU servers. For your own self-hosted Bitwarden or Vaultwarden server, enter its address. The address must start with **https://**.
**client_id**: The client_id from step 2, starting with **user.**
**client_secret**: The client_secret from step 2.
You are then warned that the master password will be stored with the connection (see below). Click **OK** to continue, and you are asked for:
**Bitwarden Master Password**: The master password of the account.
SyncBackPro connects immediately and lists the items in the vault, so you will know straight away if any of the details are wrong. This can take several seconds. You then create secrets that use the connection in the usual way, as described in [Secrets Manager](SecretsManager.md).
### Why the Master Password Is Stored
The API key only logs in to Bitwarden. Everything in a Bitwarden vault is encrypted, and only the master password can decrypt it, so SyncBackPro needs the master password as well. The client_id, client_secret and master password are stored, encrypted, in the SyncBackPro settings, in the same way as the credentials of any other connection.
This means that anyone who can decrypt the SyncBackPro settings could open the whole vault. **We strongly recommend a dedicated Bitwarden account** that holds only the credentials your backup profiles need. A tidy way to do this is to keep those items in a collection of a Bitwarden organisation, and share that collection with the dedicated account.
If you change the master password, or rotate the API key, modify the connection and enter the new details.
Two-step login on the account does not stop SyncBackPro from signing in. Bitwarden does not ask for it when the API key is used.
### Which Items Can Be Used
- **Logins**: you choose whether the secret is the **username**, the **password**, or a custom text or hidden field of the item. A custom field is listed as **field:*name***, where *name* is the name of the field. An empty password is used as an empty password.
- **Secure Notes**: the whole text of the note is used.
- **SSH Keys**: you choose whether the secret is the **privateKey** or the **publicKey** of the item. For example, the private key can be used for [SFTP](FTPSettings.md).
Cards and identities are not listed, and items in the trash are ignored.
Items are listed by their name. The name must match exactly, including upper and lower case. Give each item a unique name. If items of different kinds have the same name, a login is used before a secure note, and a secure note before an SSH key. Two items of the same kind with the same name, for example two logins, are refused with an error rather than guessed at, because the username and password could otherwise come from different items.
**Renaming an item breaks the profiles that use it.** SyncBackPro remembers a Bitwarden item by its name and nothing else. If you rename the item in Bitwarden, every profile that uses that secret fails with **Secret does not exist** until you modify the secret in the [Secrets Manager](SecretsManager.md) and select the item under its new name. The same happens if the item is deleted, or is no longer shared with the account.
Also, if you give a different item the old name, SyncBackPro will use that item from then on, without any warning. So once an item is used by a profile, do not rename it, and do not reuse its old name for anything else.
### Elevated, Scheduled and Administrator Protection
SyncBackPro does not use any Bitwarden login stored in your Windows profile. Each time it connects it gives the Bitwarden CLI its own private temporary folder, which is deleted afterwards. A Bitwarden connection therefore works in the same way when SyncBackPro is run normally, run elevated, run under [Administrator Protection](AdminProtWindows.md), or run from a scheduled task, including one that runs whether or not the user is logged on. The account the profile runs as must be able to reach the Bitwarden server.
Each connection also has its own device identity. Bitwarden sees the same device every time, not a new device (and a new device email) on every profile run.
### Proxy Servers
The Bitwarden CLI ignores the Windows proxy settings. It only uses an HTTP proxy server if the **HTTPS_PROXY** environment variable is set for the Windows account the profile runs as, e.g. **http://proxy.example:8080**. If the proxy server needs a user name and password, include them, e.g. **http://user:password@proxy.example:8080**.
If the Bitwarden CLI cannot reach the server, the error from SyncBackPro says so and reminds you about HTTPS_PROXY.
### Security
- The client_id, client_secret and master password are stored, encrypted, in the SyncBackPro settings. The value of a secret is never stored locally nor shown to the user.
- Together, the API key and the master password open the whole vault. This is why you should use an account that holds only the items SyncBackPro needs.
- To stop SyncBackPro retrieving secrets, rotate the API key of the account in the Bitwarden web vault. If you think someone else may know the master password, change it as well.
- SyncBackPro only gives the credentials to a bw.exe that carries Bitwarden's own digital signature.
- While a profile runs, an encrypted copy of the vault is kept in a temporary folder, so that all the Bitwarden secrets the profile uses can share one connection. It is deleted when the profile finishes.
### Limitations
- SyncBackPro only reads from Bitwarden. It never creates, changes or deletes items.
- Every profile run that uses a Bitwarden secret signs in to Bitwarden and downloads the vault, which takes several seconds and needs Internet access. This happens once per run for each connection, not once per secret, as the secrets of a run share one connection.
- Accounts with no master password (single sign-on with trusted device encryption, or Key Connector) cannot be used, and nor can organisation API keys.
- Bitwarden Secrets Manager, a separate Bitwarden product, cannot be used.
- Cards and identities cannot be used.
- Items are found by their name only, so renaming an item in Bitwarden breaks every profile that uses it until the secret is selected again. See **Which Items Can Be Used** above.
### Troubleshooting
An error reported by the Bitwarden CLI itself is shown after **The Bitwarden CLI failed (exit code ...)**. The most common errors are:
**client_id or client_secret is incorrect**: the API key is wrong, or it has been rotated. Also check the server: an account on Bitwarden's US servers does not exist on its EU servers, and the other way round. Modify the connection and enter the current details.
**Bitwarden could not unlock the vault: the master password is wrong**: the master password is wrong, or it has been changed in Bitwarden. Modify the connection and enter the current master password. Accounts with no master password (SSO with trusted devices, or Key Connector) cannot be used.
**Insecure URL not allowed** or **The Bitwarden server must be an https:// address**: the server address starts with http://. Use an https:// address.
**The Bitwarden CLI (bw.exe) was not found**: the path in the connection is wrong, or it is blank and bw.exe is not on the path. If SyncBackPro is run as another user, e.g. from a scheduled task, check that user can read the file.
**The Bitwarden CLI is version ...**: the Bitwarden CLI is older than version 2024.7.0. Download the latest version.
**... is not the Bitwarden CLI as signed by Bitwarden**: the credentials unlock your whole vault, so SyncBackPro only gives them to a bw.exe that carries Bitwarden's own digital signature. The file has been changed or damaged, or is a different program. Download the Bitwarden CLI again. While a profile is using the Bitwarden CLI, bw.exe cannot be replaced, so update it when no profiles are running.
**The Bitwarden CLI would use the bw-data folder beside ...**: there is a folder called bw-data in the same folder as bw.exe. Put a copy of bw.exe in a folder of its own and change the path in the connection.
**The Bitwarden CLI needs 64-bit Windows**: Bitwarden does not provide the CLI for 32-bit Windows, so Bitwarden cannot be used on this computer.
**The Bitwarden CLI did not finish within 120 seconds**, or a network error such as ECONNREFUSED, ETIMEDOUT or ENOTFOUND: the computer, or the account the profile runs as, cannot reach the Bitwarden server. Check the Internet connection, the firewall and the server address. If the computer reaches the Internet through a proxy server, set HTTPS_PROXY as described in **Proxy Servers** above.
**More than one Bitwarden login is called ...**: two items of the same kind have the same name. Rename one of them so that every name is unique, then, if needed, modify the secret in the Secrets Manager and select the item again.
**Secret does not exist**: the item has been renamed or deleted in Bitwarden, or is no longer shared with the account. Modify the secret in the Secrets Manager and select the item again.
**No secrets found**: the account has no logins, secure notes or SSH keys. Check that the items have been shared with the account.
See also: [Secrets Manager](SecretsManager.md)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Profile Progress
The progress details appear when a profile is running and provides visual feedback of the progress of that profile to the user:
A progress bar also appears behind a profiles name in the main window, and if you are running Windows 7 or newer, in the Windows taskbar itself. Note that the progress bar behind a profiles name isn't visible if the profile is highlighted or the **Progress** [column](ColumnsMainMenu.md) is enabled.
If a profile is being run in another instance of SyncBackPro, e.g. run via a scheduled task, then it's name will be in *italics*.
If you don't want the progress to be displayed, switch off the option **Slide out automatically**.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Exploring SyncBackPro
Now you've gained the essential knowledge of using SyncBackPro, we'll turn to taking advantage of some of the options available in the program. SyncBackPro has two Modes that allow you to change the settings for any given profile: [Easy Mode](EasyMode.md) and [Expert Mode](ExpertMode.md).
SyncBackPro is a very flexible program. As you gain confidence in using the program you'll discover the power and ease that backing up and synchronizing can bring to your daily work at the computer. The default settings in SyncBackPro are defined to help you manage your data backup tasks in a simple straightforward manner.
- Remember at all times that SyncBackPro copies, moves, and deletes data. Please ensure that you test your settings before running them. You can achieve this easily by using the Simulated Run or Simulated Restore commands available from the drop-down menu on the **Run** and **Restore** buttons or the context (pop-up) menu for a profile:
The next section of this help file presents the settings and options available to you in Easy Mode.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Easy Mode
SyncBackPro provides two modes to view and change your Profiles: **Easy** and **Expert**. Easy mode presents far fewer options to modify your Profile making the choices you make less complex than in Expert mode. The Easy and Expert Mode options can be found in the burger menu at the top left of the Profile Setup Windows (select a [Profile](CreatingaProfile.md), then click the **Modify** button at the base of the main SyncBackPro window). You can also click the **Easy** or **Expert** items in the list.
What items are listed depends on the profile being modified. For example, if the profile is for copying files from an FTP server, then options for the cloud (for example), will not be listed.
The following screenshots show the option menus:
| | |
| --- | --- |
| Easy Options | Expert Options |
### Easy Mode
[Easy Mode Configuration](EasyModeConfiguration.md)
[Burger Menu options](ClickForOptions.md)
[Simple](SimpleSettings.md)
[Sub-directories and Files](SubDirectoriesandFiles.md)
[Network](NetworkSettings.md)
[Scripts](SetupScripts.md)
[Fast Backup](FastBackup.md)
[Type](SetupType.md)
[When](When.md)
[Log](Log.md)
[Notify](WindowsNotify.md)
[Searching the settings](Searching.md)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Easy Mode Configuration
After a profile has been created in SyncBackPro you may modify the settings for that profile at any time. If you haven't already defined a profile view [Creating a Profile](CreatingaProfile.md) which will guide you through this simple process.
### Easy Mode Overview
SyncBackPro has two Modes that will allow you to change the settings for any given profile: Easy Mode and Expert Mode.
- Note that these modes affect a single profile and not all profiles.
To find out how **Group Profiles** may be modified go to [Creating a Group Profile](CreatingaGroupProfile.md).
This help page details the options available in the Easy Mode. To modify a profile use the **Modify** button on the main windows toolbar.
The Easy Mode Profile Setup window is shown below with the default **Simple** settings page:
- Note how the text in the white informational area helps you decide what option best suits your requirements by summarizing your profile in a list.
Spend time getting to know what options are available under the additional tabs in the Profile Setup window. The [Simple](SimpleSettings.md), [Network](NetworkSettings.md), [Fast Backup](FastBackup.md), [Type](SetupType.md), [When](When.md), [Log](Log.md), [Notify](WindowsNotify.md) and [Search](Searching.md) options on the left hand list contain a range of options that provide a great deal of flexibility in the way you can perform tasks:
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Burger Menu options
At the top-left of the Profile Setup window is a burger menu button . When pressed some options appear:
- Easy: When selected the window goes into [easy mode](EasyMode.md). In easy mode a number of settings pages are hidden.
- Expert: When selected the window goes into [expert mode](ExpertMode.md). In expert mode all valid settings pages are made available.
- Export profile: If clicked then the profile being edited is [exported](ExportingImportingProfiles.md) to a file.
- Save as defaults: If clicked then the settings for the current page are saved as defaults. This means whenever a new profile is created then those settings will be used in the new profile. Note that this is a page specific setting, meaning it does not save the whole profile as the default, just the settings on the current page. It cannot be used on some settings pages.
- Load defaults: If clicked then the current pages settings are replaced by the default settings for this page. This is a page specific setting. It cannot be used on some settings pages, e.g. Decisions - Files.
- Copy settings from another profile: If clicked then the settings for the **current page** can be replaced with the settings from another profile. Note that this is a page specific setting, meaning it does not copy all the settings from another profile, just the settings for the current page.
- Revert to factory settings: If clicked then the current pages settings are replaced by the factory default settings. Note that these are not the same as the default settings (which can be changed by using the **Save as default** menu item). This is a page specific setting.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Simple
This page gives you an overview of what the profile is configured to do. It also lets you change where files are copied to and from, which files and folders are copied, and what name you want to give to the places where files are copied to and from.
Names are given to the places (locations) you are copying files to and from. For a synchronization profile, it is **Left** and **Right**. For other profile types, e.g. backup, it is **Source** and **Destination**, as it is in the above example screenshot. You are free to change those names to something else. To do this, simply click on the label, e.g. Source, or click on the pen icon next to the name, and change it to whatever you want. For example, you may be doing a backup from your desktop to an external hard drive. Instead of using the labels **Source** and **Destination** you may instead want them to be called **Desktop** and **External Drive**:
The down arrow, to the left of the paths, can be used to change the source/left or destination/right paths to something that is more flexible and/or portable. For example, if the destination is a removable drive then you can have it changed so that the serial number of the drive is used instead of the drive letter. This means if you connect the drive, and it gets a different drive letter assigned to it by Windows, then the profile will still work as expected. Alternatives may also be given if part of the path can be substituted with Windows [variables](Variables.md). A tick will appear next to the path that SyncBackPro suggests you use:
By default all your files and folders in the chosen folders are copied (with the exception of things like the swap file). However, if you'd like to not copy some specific folders or files, or choose which types of files not to copy (e.g. temporary files), then you can click the [Choose sub-directories and files](SubDirectoriesandFiles.md) button to make those selections. Read more about choosing sub-directories in the [Sub-directories and files](SubDirectoriesandFiles.md) section of this help file.
To filter out files and folders based on their name, e.g. you may not want to copy any .exe files, then click the **Change Filter** button. Read more about the filters in the [Filter Settings](FilterSettings.md) section of this help file.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Sub-directories and Files
To select exactly which folders and files you want to include in your profile, click the **Choose sub-directories and files** button on the [Simple](SimpleSettings.md) page. By default all files and sub-folders (with the exception of some folders and files you wouldn't want to copy, e.g. your swap file) are included. SyncBackPro always takes the approach that it is better to include files than to exclude them.
- The files & folders listed will not include the destination/right files or folders unless it needs to. Deciding on whether it needs to or not depends on the type of profile and the [file decisions](DecisionsFiles.md) you've selected. For example, if you're doing a backup to an FTP server then the files and folders on the FTP server won't be shown. However, if you're synchronizing or copying from an FTP server then it will show its files and folders in the tree. If you want to force the tree to display files and folders in both the source/left and destination/right then use the drop-down menu on the **Choose sub-directories and files** button.
The tree displayed is similar to the one used in Windows File Explorer. You can collapse and expand the folders to see the files and folders within. A folder or file with a tick next to it is included in the profile.
### Shared Settings
Unless you are using a SyncBack Fast Backup profile, you can share the file & folder selections between different profiles. See the **Shared Settings** menu.
If you are using shared settings, be aware of the possible issues that are listed below, as well as:
- If you choose to **Skip and Exclude** files and folders from the [Differences](TheDifferencesWindow.md) window, or the [HTML special links](Log.md), then keep in mind it changes the selections and so affects all profiles using those shared selections, not just that profile.
- The [Filters](FilterSettings.md) are not shared, but if you change those then you may update the selections. Filters profile specific and are used when a file or folder has not been explicitly include or excluded using the file & folder selections.
### Searching
To search for a file or folder, simply start typing the file name. The focused item will change to the matched entry.
### Icons
When all the files and child folders in a folder are included in the profile, the color of the folders will be solid . If any files or child folders are not included, then the folder will be half solid .
Note that in some cases it is not known if all files and child folders are included until the folder has been fully expanded.
If the file or folder is ticked then the icons will be *ghosted* if the file or folder does not exist . This lets you easily see if a file or folders exists in the source/left and/or destination/right.
### New Files and Folders
There are two columns that configure what to do with new files or folders: **New Files** and **New Folders**. These options let you decide on whether the profile should include any new files or folders that are created within that folder. By default all new files & folders are included. If a folder is not ticked then no files or folders will be included in the profile. These options are not available until you expand the folder. This is because SyncBackPro cannot know what files and folders are new until a folder is expanded revealing what the current contents of the folder is. You can also choose these options via the pop-up menu.
As an example: you may have a folder in which you only want two specific files included and no other files or folders. You would tick those two files and untick all the other files and sub-folders. Then you would change the folder settings to ignore new files and folders. This way even if a new file is created in that folder it will be ignored, and so will any new sub-folders.
### Menu
At the top-left of the window is the a burger menu a **Settings** menu:
- Burger Menu
- Export Selections: If you want to use the same file & folder selection settings with another profile you can export them and then import them in the other profile. Selections related to deleting folders are not exported. Keep in mind that if you have never expanded a folder then SyncBackPro will not know the contents of that folder, which means you've not made any selections in that folder, so the contents of that folder will not be exported.
- There are three different export formats that have different advantages and disadvantages:
- Import Selections: Import previously exported file & folder selections, replacing the existing selections.
- Ignore all new files and folders: All expanded folders will be set to ignore any new files and folders created in them.
- Include all new files and folders: All expanded folders will be set to include any new files and folders created in them.
- Change Filter: Clicking this button displays the filter window. This lets you choose which types of files to include or exclude, and also choose which folders to include or exclude based on their name. See the [Filter Settings](FilterSettings.md) section for more information.
- Clean Up: Files or folders that do not exist will be removed from the tree if this button is clicked. Files and folders that do not exist are highlighted in red. If a file or folder has been marked for deletion then it will not be cleaned.
- Settings
- Do not use selections (can improve performance): If this checkbox is ticked then file & folder selections are ignored. This can reduce a profiles run time, sometimes dramatically. To further improve performance you may also want to [disable the filters](FilterSettings.md#ignorefilters). You can also switch off the selections using the [-noselect](CommandLineParameters.md#noselect) command line parameter.
- Show files: This allows you to show or hide files in the tree.
- Show files and folders...: These options let you show or hide files and folders depending on whether they exist in the source/left or destination/right. If your profile is synchronizing files then the file icons also inform you if a file exists in the source/left and/or destination/right.
- Show files and folders that do not exist: You may have previously selected a file and/or folder to include in your backup. However, that file or folder may no longer exist, e.g. it has been deleted. In this case it will still appear in the tree but will be highlighted in red. If this option is unticked then those non-existent files and folders will be hidden. You can permanently remove them by clicking the **Clean up** button or ticking the **Clean up automatically** option.
- Clean up automatically: Files or folders that do not exist will be automatically removed from the tree. You can manually remove them by clicking the **Clean up** button.
- Do not display file icons: To improve performance on slower computers you can choose to not have file icons displayed.
### Pop-up menu
If you right-click on the tree then a pop-up menu appears with a number of options. These options apply to the selections you have made in the tree:
- Tick selected: All the items selected in the tree will be ticked.
- Untick selected: All the items selected in the tree will be unticked.
- Delete from destination/source: The selected folders will be deleted from the destination (or source) when the profile is next run. This option is not available if shared settings are being used. You can only choose to delete entire folders (not individual files) and only from unticked folders. Anything marked for deletion will be not cleaned. **IMPORTANT:** Any versions will also be deleted.
- Do not delete: The selected folders will not be deleted on the next profile run.
- **Collapse all:** All the folders in the tree will be collapsed.
- **Collapse selected:** All the selected folders in the tree will be collapsed.
- **Exclude folders with this name:** Folders with the same name as the ones you've selected in the tree will be added to the filters (folders not to copy) list.
- **Exclude files with this name:** Files with the same filename as the ones you've selected in the tree will be added to the filters (files not to copy) list.
- **Exclude files with this extension:** Files with the same filename extension as the ones you've selected in the tree will be added to the filters (files not to copy) list.
- **Include folders with this name:** Folders with the same name as the ones you've selected in the tree will be added to the filters (folders to copy) list.
- **Include files with this name:** Files with the same filename as the ones you've selected in the tree will be added to the filters (files to copy) list.
- **Include files with this extension:** Files with the same filename extension as the ones you've selected in the tree will be added to the filters (files to copy) list.
- **Ignore new files:** Any new files created in the selected folders will be ignored.
- **Ignore new files (inc.all sub-folders):** Any new files created in the selected folders (and all their child folders) will be ignored.
- **Include new files:** Any new files created in the selected folders will be included in the profile
- **Include new files (inc.all sub-folders):** Any new files created in the selected folders (and all their child folders) will be included in the profile
- **Ignore new folders:** Any new sub-folders created in the selected folders will be ignored.
- **Ignore new folders (inc.all sub-folders):** Any new sub-folders created in the selected folders (and all their child folders) will be ignored.
- **Include new folders:** Any new sub-folders created in the selected folders will be included in the profile.
- **Include new folders (inc.all sub-folders):** Any new sub-folders created in the selected folders (and all their child folders) will be included in the profile.
- Add file: Add one or more files to the selected folder (or the parent folder of the selected file). To add multiple files separate them with a forward slash (/), e.g. file 1.txt/file 2.txt/file 3.txt. This menu item is hidden if the automatic clean-up checkbox is ticked. It is also hidden if a file or folder has not been selected (or multiple selections have been made). Why would you want to add a non-existent file? The file may not currently exist, but you know that it will in future. Note that as the file does not currently exist, if you click the **Clean Up** button then it will be removed from the tree.
- Add folder: Add one or more sub-folders to the selected folder (or to the parent folder of the selected file). To add multiple folders separate them with a forward slash (/), e.g. folder 1/folder 2/folder 3. This menu item is hidden if the automatic clean-up checkbox is ticked. It is also hidden if a file or folder has not been selected (or multiple selections have been made). Why would you want to add a non-existent folder? The folder may not currently exist, but you know that it will in future. Note that as the folder does not currently exist, if you click the **Clean Up** button then it will be removed from the tree.
- Open folder: The selected folder will be opened using Windows File Explorer.
You can select multiple items in the tree by clicking the mouse and using the **Shift** and **Ctrl** keys.
To fully expand a folder, press the asterisk (*) key. **Warning**: this could take a very long time if the folder is on a remote system or contains a large number of files and folders.
Links
If you are [copying directory symbolic links and junction points](CopyDeleteLinks.md#junctionpoint), the tree will warn you if a directory on one side (e.g. the source) is a junction point or symbolic link, and the directory on the other side is just a directory. For example, see the **Link** directory below:
If you are [preserving file hard links](CopyDeleteLinks.md), the hint on the tree will show file hard links:
### Re-selecting
There are a number of directory related settings, that if changed, require you to revisit your selections and change them as necessary.
- [Ignore NTFS junction points (reparse points)](CopyDeleteLinks.md) (Copy/Delete -> Links)
- [Ignore hidden directories](CompareOptionsAttributes.md) (Compare Options -> Attributes)
- [Ignore system directories](CompareOptionsAttributes.md) (Compare Options -> Attributes)
- [Ignore placeholder directories](CompareOptionsAttributes.md) (Compare Options -> Attributes)
- [Do not copy pinned files and ignore pinned directories](CompareOptionsAttributes.md) (Compare Options -> Attributes)
- [Do not copy unpinned files and ignore unpinned directories](CompareOptionsAttributes.md) (Compare Options -> Attributes)
These settings have an impact on what is included in any scan and override the selections. Below is an example of why you should do this:
- You switch off the option to ignore NTFS junction points, so they will be scanned. They are not being ignored.
- You choose sub-directories and files and select a junction/reparse point folder and files and sub-directories in the junction/reparse point folder. In this example, let's say it is *C:\JunctionPoint\*. It has a file in it called *example.txt* (*C:\JunctionPoint\example.txt*). It also has a sub-directory (*C:\JunctionPoint\SubDir\*) and a file in that sub-directory (*C:\JunctionPoint\SubDir\SubFile.txt*).
- You save the profile and run it.
- Later, you modify your profile and now choose to ignore NTFS junction points, so they will not be scanned. They are now being ignored.
- Now, when you run the profile there will be issues. The folder *C:\JunctionPoint\* will not be scanned, because it is a junction/reparse point. All the files in it (e.g. *C:\JunctionPoint\example.txt*) will also be ignored. However, the sub-directory (*C:\JunctionPoint\SubDir\*), and everything in that sub-directory, will not be ignored. This is because they have been explicitly selected and the sub-directory itself is **not** a junction/reparse point, so it will not be ignored. All the files in the folder *C:\JunctionPoint\* will be ignored because the directory is being ignored. Also, any sub-directories in it that have not been explicitly selected are also ignored. Any sub-directories in *C:\JunctionPoint\* that have been explicitly selected will not be ignored (unless they are also junction/reparse points).
- Because of this, if you change any of the options listed above you should update your file & folder selections.
If you are using **shared** file & folder selections, then the settings listed above may cause other issues. For example:
- You are sharing the file & folder selections in Profile A and Profile B
- Profile A is set to ignore hidden directories
- You modify Profile A and change the file & folder selections. Hidden directories will not be shown and so cannot be chosen. If you run Profile A, hidden directories will be ignored. This is normal and as expected.
- Profile B is **not** set to ignore hidden directories
- You modify Profile B and change the file & folder selections. Hidden directories will be shown and so can be chosen. If you run profile B, hidden directories will not be ignored. This is normal and as expected. However, Profile A, when run, will still ignore those hidden directories, even if chosen. This is normal and as expected, however you may be confused as in Profile B you can see hidden directories were selected, but were not included in Profile A.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Network
If your source/left and/or destination/right directory are on a network, and you are using a UNC path, e.g. \\machine\share\directory, then this page allows you to set the username and password required to connect to the network shares. You can only edit the values if you are using a UNC path or if the path contains variables (because it is impossible to know if it will be a UNC path or not until the profile is actually run).
This profile settings page can use and create [shared settings](SharedSettings.md).
- **Username:** Your network username for the source/left or destination/right (as appropriate). If none is specified then SyncBackPro will use the [defaults](NetworkAdvanced.md). You can use a [secret](SecretsManager.md) for the username.
- **Password:** Your network password for the source/left or destination/right (as appropriate). If none is specified then SyncBackPro will use the [defaults](NetworkAdvanced.md#default). You can use a [secret](SecretsManager.md) for the password.
- **Test Connection:** Click this button to test if SyncBackPro can connect to the **source/left** and/or **destination/right** using the current settings. This button is disabled if the path is not a UNC path (if variables are being used in the path then keep in mind that variables can change value and so the currently expanded variables may not make the path a UNC path).
If you use the Network settings in SyncBackPro take account of the following Windows issues:
- To use a network for the source/left or destination/right you must specify a valid UNC path, e.g. **\\Machine Name\ShareName\Folder\**
- The [defaults](NetworkAdvanced.md#default) are used before the supplied username and password (unless the option **Use this username and password before trying my current username and password** is ticked).
- The username may need to be in the form **Domain\Username** or **MachineName\Username** for it to work correctly.
- If the destination computer is configured to use simple file sharing (the default on Windows XP) then it may connect even if an invalid username and password is used. Note that it may also connect even if an invalid username and password is used because Windows caches connection information and so may use valid cached credentials instead.
- Windows networking has many quirks and problems. Please experiment with various settings before seeking help.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Scripts
Using this window you can specify which [Runtime](RuntimeScripts.md) scripts will be used with the profile, and also if the destination/right files are managed by a [location](LocationScripts.md) script. You must first [install the script](Scripting.md#installing).
- **Destination/right files are managed by the following script:** If the destination/right should be managed by a [location script](LocationScripts.md) then tick this checkbox and then select the location script.
- **Scripts that should be used when this profile is run (and in the order specified):** Tick the [runtime scripts](RuntimeScripts.md) you wish to use when the profile is run. You can define the sort order by clicking on a script then using the up and down buttons to move it.
- The order in which the scripts are set to run is important. This is because, in some cases, only one script can perform an action. For example, if you have a runtime script that renames a file then obviously a file can only be renamed once. This means the first script to rename a file is the one that will rename it. Any following scripts cannot rename the file.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Fast Backup
SyncBack can make backing up even faster if you choose the **Fast Backup** option. **Read this help page carefully** before you continue as there are some important considerations to make when choosing this option. You'll also find some [Frequently Asked Questions](FastBackup.md#fastbackupfaq) about Fast Backup below along with some [examples](FastBackup.md#fbexamples).
The Fast Backup option is displayed when you create or modify a profile and select the option from the tree:
- Some of the descriptions below refer to "Fast Backup data". This is data that is kept by SyncBack to keep track of what has changed between each profile run. It is used internally by SyncBack.
- **Fast Backup:**
- **Do not perform a fast backup:** Enable this option to perform a standard backup, i.e. the source and destination will be scanned and compared to decide which files must be copied.
- **Perform a fast backup:** Enable this option to greatly improve the performance of a backup profile by not scanning the destination. Note that this option is only available when a profile is configured in a certain way (i.e. the source is not being changed by the settings). For more information, including side effects of fast backups, please see the [section below](FastBackup.md#fastbackupfaq).
- **Perform a fast backup using the archive attribute:** Enable this option to greatly improve the performance of a backup profile by not scanning the destination. This option is different from the one above because it uses the traditional backup method of using the archive attribute of a file to decide if a file should be copied or not. Note that this option is only available when a profile is configured in a certain way. For more information, including side effects of fast backups, please see the [section below](FastBackup.md#fastbackupfaq).
- **Perform a fast backup of emails:** Enable this option to greatly improve the performance of the backup of emails. Note that this option is only available when a profile is configured to [backup emails](BackupEmail.md) and the email server is **not** POP3. For more information, including side effects of fast backups, please see the [section below](FastBackup.md#fastbackupfaq).
- **Keep fast backup data based on the actual destination directory (each destination has a full backup):** If this option is unticked then a fast backup works much the same as an [incremental](Glossary.md#incremental) backup. This means that only new or modified files are copied from the source to the destination regardless of where the destination is. If you are not using [variables](Variables.md), e.g. %DAYOFWEEK%, in the destination then you can leave this option unticked as it will make no difference. This option is not available when using a Fast Backup with the archive attribute or backup of emails.
If you are using variables in the destination then you should consider ticking this option. If this option is ticked then the fast backup works in a different way. It keeps track of which files and folders are in each destination. This means each destination directory will have a complete backup and not just contain the new/changed files.
- **Differential backup (do not update the fast backup data):** If this option is ticked then a fast backup works the same as a [differential](Glossary.md#differential) backup. This means that only new or modified files since the last full backup are copied from the source to the destination. If you are not using variables, e.g. %DAYOFWEEK%, in the destination then you can leave this option unticked as it will make no difference. For example, if your destination is X:\%DAYOFWEEK%\, and you force a rescan on Mondays, then your Monday backup will be a full backup. Your Tuesday backup will contain new and changed files since Monday, Wednesday’s backup will contain new and changed files since Monday, etc. If the Fast Backup is using the archive attribute then the archive bit is not cleared on the original file when it is copied unless it is a full/rescan backup. This option is not available when using a Fast Backup of emails.
- **Delete all the files and folders in the destination before the backup (only if it is not a rescan):** If this option is ticked then all the files and folders (just the Zip file if compressing to one single Zip file) in the destination are deleted before the backup is made. The files and folders are not deleted if a re-scan has been forced or is required.
This option is best used when **Keep fast backup data based on the actual destination directory** is unticked. For example, if you keep 7 days worth of backups (using the %DAYOFWEEK% variable in the destination), and force a rescan each Monday, then by enabling this option you'll ensure that the Monday backup contains a complete backup and that the backups for all the other days just contain new/changed files since the previous day.
This option is not available when using a Fast Backup of emails.
- Note that with this option enabled it is not advisable to run incremental/differential backups more than once when SyncBack is backing up to the same folder. Considering the above example: if you run incremental backup on **Tuesday** morning then all the new/changed files since Monday will be copied to Tuesday folder. Again, if you run incremental backup on **Tuesday** afternoon then, all the existing files/folders (those files/folders copied in the last run) in the Tuesday folder will be deleted (as 'Delete all files and folders..' option is enabled) and only the new/changed files from the last run until now will be copied to the Tuesday folder. Hence, the Tuesday folder will not be a complete incremental backup from Monday as some of the files/folders were deleted from the incremental backup folder during the second run.
- **Use a different folder for full (rescan) backups:** If this option is ticked then you can define which folder should be used for full backups, i.e. where to backup to if there is a re-scan. This can be very useful when you always want full backups to go into one folder, and incremental/differential backups to go into the usual destination folder. If you tick this option then SyncBack will automatically set the full folder to your destination folder. However, it is unlikely this is the folder that you wish to use so you should modify it as appropriate.
For example, if your destination is X:\%DAYOFWEEK%\, and you have it set to rescan on Monday, then you probably want your full backup folder set to X:\1\. This means the full backups will always go into the Monday (1) folder even if you force a rescan on a Friday, for example.
This option is not available when using a Fast Backup of emails.
- **Force Re-scan:** Click this button to force SyncBack to scan the destination/email server next time the profile is run. Please read the notes below about the consequences of forcing a rescan when using FTP. If the button is disabled it is either because the profile is not a Fast Backup profile or SyncBack will already be performing a rescan on the next profile run, e.g. the button has already been pressed. If you want to force several Fast Backup profiles to re-scan then select them in the main window and select **Rescan** from the [pop-up menu](ProfilesPopUpMenu.md).
- **Do Not Re-scan:** If you are using Fast Backup with the archive attribute, then click this button to force SyncBack to **not** scan the destination next time the profile is run. If the button is disabled it is either because the profile is not an Archival Fast Backup profile or SyncBack will already **not** be performing a rescan on the next profile run, e.g. the button has already been pressed. To force a rescan, click the **Force Re-scan** button. This button is useful when you create a new profile and do not want it to scan the destination when it is first run.
- **Force a re-scan when:** This lets you define when SyncBack should perform a complete re-scan of the destination/email server. For example, to force a complete re-scan every Monday you would select **%DAYOFWEEK%** from the list, select equals from the drop-down, and type in **1** (1=Monday, 7=Sunday) in the edit box. See the section below for details on why this may be required and what it does. Please read the notes below about the consequences of forcing a rescan when using FTP. Note that you cannot enter a list of values, for example you cannot use **%DAYOFWEEK%** and enter 1,3 to rescan on Mondays and Wednesdays. Only one value may be entered. With the Pro version it is possible to use scripting to decide when a rescan should occur, meaning far more complex evaluations can be made (see the [IncVar](ExampleScripts.md#incvar) example script). If you use greater than, greater than or equal, less than or less than equal, then see below on what happens when you evaluate strings and not numbers. If you hover the mouse over the list of variables then a hint will appear with the current value of the variable. If you select a variable by double-clicking it then the variable will be selected and the variables current value will be used.
## Important Information About Fast Backups
### Explaining Fast Backups
When you backup files to the destination it is assumed that no other application, or person, will be changing the files in the destination. For example, if you backup your files to another drive you are not going to be editing or changing those backup files (except using SyncBack to replace them as appropriate). Because of this SyncBack should be able to remember what files, and directories, are on the destination without needing to scan it to find out.
### How 'Fast Backup' works
First, you need to enable a Fast Backup option on the Fast Backup tab. The Fast Backup option is not available if the profile is configured such that it cannot use the Fast Backup option, e.g. it's an Intelligent Synchronization profile.
How Fast Backup works depends on the method chosen:
- **Backup of emails:** Email servers (not supported with POP3) give each email a unique index value (a UIDL). When SyncBackPro asks the email server for a list of emails it needs to get the email headers of each email to see what the local filenames will be and so compare it to the locally stored emails. Retrieving that email header can be slow. When Fast Backup is enabled SyncBackPro will get a list of email UIDL's (not the headers) and then check its local Fast Backup database to see which of those emails have been downloaded previously. For those emails that have been downloaded before, it will skip them, and for those it hasn't downloaded it will get the email header and proceed as per normal. This can greatly reduce the backup time.
- **Not using the archive attribute:** When the profile is next run, SyncBack will remember which files and directories it copied to (or deleted from) the destination directory. This means the first run of a profile, after Fast Backup is enabled, will take the same amount of time as without Fast Backup enabled. However, for the second and subsequent runs of the profile it will not need to scan the destination directory because it remembers what it did the last time the profile was run.
- **Using the archive attribute:** Each file has what is called an **archive attribute** (just like files have read-only, hidden, etc. attributes). Whenever a file is changed the archive bit is automatically set (by Windows), and when SyncBack copies a file it clears the archive bit. So when SyncBack needs to know which files are to be copied to the destination it just needs to see if the archive attribute is set. There is no need to scan the destination. The main advantage to using the archive attribute is that there is no need to keep information on the state of the files (so less disk space is used). It may also be very slightly faster (as it doesn't need to read and save the information on the files). The disadvantage is that it has no record of if a file is deleted in the source as no database is kept. You cannot use the archival bit fast backup method when using the cloud. This is because SyncBackPro needs information on the files in the cloud.
Using Fast Backup means the scan time is substantially lower (at least twice as fast, often far more) especially if the destination is on a slow device, e.g. networked drive, cloud, FTP server, etc.
### Rescan with archival backups
If a rescan is done, either by clicking the **Force Re-scan** button or by other means, then when the profile is next run it will scan both the source and destination, compare the files, then copy new and changed files. This has a side effect with archival backup in that it will not copy a file (even if it has its archive attribute set) if the source and destination files are the same. If the profile is run again (so it is not a rescan) then it will scan the source, see the file has the archive attribute set, and copy it to the destination regardless.
### Can I use Fast Backups on all profile types?
No. The Fast Backup option is only possible when no changes are being made to the destination by other programs, profiles, or users or it is a backup of emails. This means it cannot be used with backups from FTP or Zip files, synchronization profiles, or profiles that use prompting. It is for backup profiles only. Fast Backup can be used with all cloud storage services except Backblaze B2. Backblaze B2 must be used via the S3 compatibility interface.
If you are using archival backups you must keep in mind SyncBack is relying on the archive attribute being set once a file is created or changed and is not reset by anything else other than that profile in SyncBack. Once the archive attribute is set then SyncBack knows the file needs to be backed up. However, some other programs, e.g. other backup software, may also use and reset file archive attributes. You must also be careful not to have more than one profile that copies the same files and resets the archive attribute. You cannot use the archival bit fast backup method when using the cloud. This is because SyncBackPro needs information on the files in the cloud.
### Sometimes SyncBack scans the destination directory or email server even though I've enabled Fast Backups. Why?
There are a number of reasons why SyncBack may scan the destination directory:
- The **Force Re-scan** button has been pressed for that profile.
- The settings on the **Fast Backup** tab specify a re-scan should be performed under certain conditions.
- The **–full** [command line parameter](CommandLineParameters.md) was used.
- The fast backup data has been deleted.
- The [filters](FilterSettings.md) or [file & folder selections](SubDirectoriesandFiles.md) have been modified.
### What options does using Fast Backup disable?
When using Fast Backups you cannot enable the following options in your profile:
- Reset the archive file attribute on files once they have been copied.
- Files cannot be moved (to or from the source), and files cannot be copied to the source or deleted from the source (this option can be used with archive attribute fast backups)
- The destination cannot be watched for file changes.
### What side effects are there with using Fast Backups?
If the profile is set to delete destination only files, SyncBack may not know a new file has been created in the destination (see [this section](DecisionsFiles.md#deldestonly) for more details).
Because a Fast Backup will not scan the destination (except on the first run after it is enabled for that profile) that means only the changes will be applied to the destination without regard to what is actually on the destination. For example, you could change the destination directory, run the profile, and then only the new/modified files would be copied to the destination (and not all the files as would normally be the case).
This has important consequences when your destination directory is dynamic, i.e. it uses environment variables that can change in value. For example:
- Create a normal backup profile and set the source directory to **C:\My Documents\** and the destination directory to **D:\Backup\%DAYOFWEEK%\**
- Enable Fast Backup for the profile.
- On the first run of the profile (let's assume it's Monday and the destination directory is empty) all the files will be copied to **D:\Backup\1\**
- When the profile is run on Tuesday then only the new or modified files will be copied to **D:\Backup\2\**
- On Wednesday new and changed files will be copied to **D:\Backup\3\** and so on until Monday.
- When it is run again on the following Monday then only the new and changed files will be copied to **D:\Backup\1\**
- Enable the option "Keep fast backup data based on the actual destination directory". This will create full backups for each day and not just incremental backups for Tuesday to Sunday.
Or
- Enable the option "Delete all the files and folders in the destination before the backup" and force a rescan on Mondays. There are three ways to do this (using this example):
1. The best and easiest option is to configure the "Force a re-scan when:" settings to force a re-scan every Monday (select %DAYOFWEEK% from the list, select equals from the drop-down, and type in 1 (1=Monday, 7=Sunday) in the edit box).
2. You can do this manually by clicking the Force Re-scan button on the Mondays.
3. Use the -full command line option (for Monday only when scheduling).
This will mean that the Monday backup is a complete backup, and the backups on Tuesday to Sunday contain just the new/changed files since the previous days backup.
### What about cloud storage and Fast Backups?
Cloud storage services like Amazon S3 and Microsoft Azure have worked with Fast Backup since the feature was introduced. This is because "business/professional" cloud storage services like these can record meta-data with the files, e.g. they can store the last modification date & time, uncompressed size, etc. However, starting with SyncBackPro V10, Fast Backup can also be used with consumer cloud storage services like Dropbox, Google Drive, Box, etc.
When using Fast Backup with some cloud storage services, e.g. **Box**, **SugarSync**, **WebDAV**, **ShareFile**, **pCloud**, if you perform a rescan then SyncBackPro may request a full upload. The reason for this is some cloud systems cannot store meta-data so all the meta-data is stored in a database managed by SyncBackPro. When a rescan is performed, the local meta-data is deleted and the cloud storage service is re-scanned to get that information. As it does not have it, SyncBackPro may not be able to determine if the file has changed. If you know which files have not changed, then on the [Differences](TheDifferencesWindow.md) window you could choose to copy the meta-data from the local file to the cloud (database) for those unchanged files. For the other files, they can be copied as normal and the new meta-data will be stored in the database. If you are using Fast Backup with multi-zip compression and Fast Backup, then you will also get the same issue with rescan on **SharePoint** and **OneDrive** as although we can store some meta-data, e.g. last modification date & time, we cannot store custom meta-data, e.g. the uncompressed size of a file. **Google Drive** and **Dropbox** have no issues because they can store meta-data.
### What about cloud *cold* storage and Fast Backups?
Cloud storage services like Amazon S3 and Microsoft Azure have cold storage options. Basically, this means that objects (files) stored in cold storage are stored offline (e.g. on tape drives) for long-term storage. To change or retrieve objects stored in cold storage, a request must be made to the cloud storage service to copy the object from offline storage (e.g. tape) to online storage (e.g. SSD). Changes can then be made to the object and it can be moved back to cold storage once complete. Often the bucket/container is configured to automatically move objects to cold storage once they've been stored for a certain amount of time, e.g. after 7 days moved an object to cold storage. This can be a problem with Fast Backup because Fast Backup requires that the destination is not changed. Automatically moving an object to cold storage (after upload at a later time) is a change to the destination. For example: if you want to change the date & time of a file in cold storage then it will fail because to change the date & time of a file it must be retrieved from cold storage first, changed and then moved back to cold storage. Keep this in mind if you are using Fast Backup and cold storage.
### What about email and Fast Backups?
The main benefit of using Fast Backup and email is that it can greatly reduce the backup time. One side effect of using Fast Backup and email is that if SyncBackPro has already downloaded an email it does not check to see if the email backup file actually exists. For example, you may have a profile that backs up your emails and then runs a 3rd party program that processes or moves those email files. This will not effect the next run of SyncBackPro as it doesn't care if the email file exists or not, only if it has been downloaded before or not. If you force a rescan then of course it will then compare the local email files with the actual emails on the server and act as appropriate.
### What about FTP and Fast Backups?
One of the benefits of using Fast Backup and FTP is that it can really improve the backup time. Apart from not having to scan the FTP server to find changes, SyncBack also does not need to set the date & time of the file on the FTP server to match that of its equivalent file on your PC. This can further reduce the backup time.
The Archival Fast Backup option is not available when doing multi-zip backup to an FTP server. When multi-zip files are stored on an FTP server SyncBack must name the Zip files in a special way (to store information like their uncompressed size, for example). Because of this the destination must be scanned to know what those filenames are. The non-archival Fast Backup method can be used (in most cases) because it knows what the destination filename is without scanning (because it is in the fast backup database). However, if the destination folder is dynamic, e.g. it is using a variable, then it can cause problems as it will not always be able to know what the destination filename is.
If you don't care if the date & time of the files on your FTP server match those on your PC then you can untick the "**If the FTP server cannot set a files date & time then change the local files date & time to match that on the server**" option on the FTP tab.
There are important consequences to doing this: the date & time the file should be set to (on the FTP server) is kept in the Fast Backup data. Therefore, if you force a re-scan (so erasing that data) then the last date & time information is permanently lost. What does this mean?
- When you do a restore all the files will be retrieved from the FTP server along with their last modification date & time, which is not the original value. As the date & times won't match, all the files will be restored unless you've configured your profile to ignore file date & times.
- When you next run a backup all the date & times will be mismatched so forcing a complete backup (unless you've configured your profile to ignore file date & times).
### What about backup to a single Zip file on an FTP or cloud server?
Making a backup to a single Zip file on a remote FTP server creates some interesting challenges:
1. To update a remote Zip file it would need to be downloaded, updated, and then uploaded. Depending on the size of the Zip file, this could be extremely slow.
2. To know what files and folders are in a remote Zip file it would need to be entirely downloaded.
Because of this SyncBack will always replace the existing Zip file and therefore assume there are no files in the remote Zip file. The solution is to use a Fast Backup profile, i.e. an incremental or differential backup. For example, to keep 7 days worth of backups, and have a full-backup on Mondays and incremental backups on all the other days of the week:
- Create a backup profile and configure your source as appropriate, and set your destination as appropriate (i.e. a single Zip file on an FTP server)
- Set the **Destination** to something (the %DAYOFWEEK% is required) like **\My Backups\%DAYOFWEEK%.zip**
- Go to the Fast Backup tab and enable the options: **Perform a fast backup** and set the full-backup folder to **\My Backups\1.zip**
- In the **"Force a re-scan when:"** box select the **%DAYOFWEEK%** item, select **Equals** from the drop-down list to the right of the box, and enter **1** into the box to the right of the drop-down list (we use 1 because Monday is day 1, Tuesday is day 2, etc).
- You should schedule the profile to run just once every day
### Note about "Delete all the files and folders in the destination before the backup"
This option should be used with care because it will delete all the files and folders in the destination before running the profile. However, if you are compressing to a single Zip file it will just delete that Zip file and no other folders or files.
An important detail to remember about this setting is that the destination files are not deleted if the profile run is doing a rescan. For example, if you've configured your profile to rescan on Mondays (%DAYOFWEEK% equals 1) then when the profile is run on a Monday it will not delete the destination files. However, it will delete them if there is no rescan. This has consequences if you run your profile more than once and also if you do not ever do a rescan. For example, if you configured your profile to rescan on Mondays then when the profile is run on a Tuesday it will delete the destination files and copy over the new or changed files since the last profile run. However, if you run it again immediately (and assuming it is still Tuesday) it will delete those files and then copy over any new or changed files since the last run, which may be no files at all.
### Versioning
As an alternative to doing incremental or differential backups, you may want to consider using [Versioning](CopyDeleteVersioning.md) instead. With versioning you can keep a defined number of versions of a file. This means you can keep old versions of files that have been changed or deleted. Note that you can use versioning with Fast Backup, but it can become complex and will slow down a Fast Backup (as SyncBack must scan the destination to know what versions are available).
### Equals, Not Equals, Less Than, etc.
If you are using strings (not integer numbers) for the re-scan comparison, then the following rules apply:
- **Equals (=)**, **Not equals (!=, <>)**: a case insensitive string comparison is made, e.g. ABC is the same as abc
- **Less than or equal (<=)**, **Greater than or equal (>=)**: is the equivalent of **Equals**. For example, if it was %DAYOFWEEKNAME% >= Fri, and it was Friday, then it would be a rescan. So it is equivalent to %DAYOFWEEKNAME% = Fri
- **Less than (<)**, **Greater than (>)**: is the equivalent of **Not equals**. For example, if it was %DAYOFWEEKNAME% > Fri, and it was Friday, then it would not be a rescan. So it is equivalent to %DAYOFWEEKNAME% <> Fri
## Example Fast Backup Configurations
The following section provides example backup configurations. You may also want to look at the special [automatically incrementing variable](SetupVariablesIncremental.md) as it can be used to define exactly how many backups you want to keep.
To keep 7 days worth of backups, and have a full-backup on Mondays and incremental backups on all the other days of the week:
- Create a backup profile and configure your source as appropriate
- Set the **Destination** to something (the %DAYOFWEEK% is required) like **D:\My Backups\%DAYOFWEEK%\**
- Go to the Fast Backup tab and enable the options: **Perform a fast backup** and **Delete all the files and folders in the destination before the backup**, and set the full-backup folder to **D:\My Backups\1\**
- In the **"Force a re-scan when:"** box select the **%DAYOFWEEK%** item, select **Equals** from the drop-down list to the right of the box, and enter **1** into the box to the right of the drop-down list (we use 1 because Monday is day 1, Tuesday is day 2, etc).
- You should schedule the profile to run just once every day
To keep 7 days worth of backups, and have a full-backup on Mondays and differential backups on all the other days of the week:
- Create a backup profile and configure your source as appropriate
- Set the **Destination** to something (the %DAYOFWEEK% is required) like **D:\My Backups\%DAYOFWEEK%\**
- Go to the Fast Backup page and enable the options: **Perform a fast backup,** **Differential backup (do not** **update the fast backup data)**, **Delete all the files and folders in the destination before the backup**, and set the full-backup folder to **D:\My Backups\1\**
- In the **"Force a re-scan when:"** box select the **%DAYOFWEEK%** item, select **Equals** from the drop-down list to the right of the box, and enter 1 into the box to the right of the drop-down list (we use 1 because Monday is day 1, Tuesday is day 2, etc).
- You should schedule the profile to run just once every day
To keep 7 days worth of backups and have full-backups for each day:
- Create a backup profile and configure your source as appropriate
- Set the **Destination** to something (the %DAYOFWEEK% is required) like **D:\My Backups\%DAYOFWEEK%\**
- Go to the Fast Backup tab and enable the options: **Perform a fast backup** and **Keep fast backup data based on the actual destination directory**
- Go to the **Decisions - Files** page and configure the profile to delete files from the destination that do not exist on the source. This ensures that your backups don't get cluttered with redundant files.
- You should schedule the profile to run just once every day
To keep 4 backups and have full-backups for each day:
- Create a backup profile and configure your source as appropriate
- We are going to use the special **%AUTOINC%** variable, which is an automatically incrementing variable. Go to the [Variables - Incremental](SetupVariablesIncremental.md) settings page, enable the auto-incrementing variable, set the current and minimum value to 1 and set the maximum value to 4.
- Set the **Destination** to something like **D:\My Backups\%AUTOINC%\**
- Go to the Fast Backup tab and enable the options: **Perform a fast backup** and **Keep fast backup data based on the actual destination directory**
- Go to the **Decisions - Files** page and configure the profile to delete files from the destination that do not exist on the source. This ensures that your backups don't get cluttered with redundant files.
- You can schedule the profile to run however often you wish as for each run the destination directory changes (based on the auto-increment variable).
To keep full-backups on a set of disks:
- Create a backup profile and configure your Source as appropriate
- Set the **Destination,** e.g. **X:\%DISKSERIAL%**, where X: is a drive that accepts removable media, e.g. SD card, USB drive, etc.
- Go to the Fast Backup tab and enable the options: **Perform a fast backup** and **Keep fast backup data based on the actual destination directory**
- Go to the **Decisions - Files** page and configure the profile to delete files from the destination that do not exist on the source. This ensures that your backups don't get cluttered with redundant files.
- Each time you run the profile use a different disk. You could keep 10 days worth of backups by rotating a set of 10 disks. Each disk will have a complete backup.
**Further reading:** [Fast Backup](https://www.2brightsparks.com/resources/articles/fast-backup.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Type
In simple mode it's very easy to decide what type of profile you want, or to reset your [file](DecisionsFiles.md) and [folder](DecisionsFolders.md) decisions. For example, if you want to reset the settings so it’s a backup then select the appropriate backup option.
- [Backup](Backup.md): A backup copies new and changed files in one direction, e.g. from your local drive to your Network Attached Storage (NAS) drive. Files on your local drive will not be deleted, moved or replaced. Files that have not changed are not re-copied.
- [Mirror](Mirror.md): A mirror is the same as a backup except that it will also delete backup files that no longer exist on your source drive. For example: you mirror files from your local drive to a NAS drive. You delete a file from your local drive. When you next run the mirror profile it will delete that file from your NAS drive.
- [Synchronize](Synchronize.md): Synchronization is used when you have two locations and the files may be changed on both. For example, you have a USB stick that you take to work. You create a synchronize profile and run that at home and work to synchronize your local files to your USB stick.
- Custom: You cannot choose this option, but it is selected if your current file and folder decisions do not fit one of the above categories.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# When
This page shows you if a profile has been configured to run on a schedule, e.g. 9 am every morning. To create or change the schedule click the **Edit Schedule** button. There are also three drop-down menu options:
- **Run only when user is logged on**: This creates a schedule that will only run if you are logged on when the scheduled time occurs. In this case you do not need to supply your Windows login password because the schedule will only run if you are already logged into Windows. If this option is not available, see the [Scheduling Problems](SchedulingProblems.md) page.
For details on scheduling, and solutions to scheduling problems, see the [Creating a Schedule](CreatingaSchedule.md) section of this help file. See also the [Automating SyncBackPro](AutomatingSyncBackSE.md) section for more details on scheduling and running profiles periodically in the background. There is also the [Scheduler Monitor Service](SchedulerMonitorService.md) that detects profiles that are not being run by the Windows Task Scheduler.
Click the **Delete Schedule** button to delete an existing schedule.
If the **Delete Schedule** and **Edit Schedule** buttons are not available it is because SyncBack is not being run elevated, but the scheduled task is elevated. Windows security does not allow editing or deleting of the task in this case.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Notify
- Notifications are only available on Windows 8 or newer.
With these settings you can be notified when profiles start or finish.
- **Display a notification when the profile starts:** If enabled, when the profile starts a Windows Notification will be activated. If you click on the notification then the SyncBackPro window will be brought to the front.
- **Display a notification when the profile finishes:** If enabled, when the profile finishes a Windows Notification will be activated. If you click on the notification then the profiles log is displayed.
- **Display a notification when a profile prompts:** If enabled (the default), when a profile prompts a Windows Notification will be activated. If you click on the notification then the SyncBackPro window will be brought to the front. A prompt includes displaying the [Differences](TheDifferencesWindow.md) and [File Collision](TheFileCollisionWindow.md) windows.
- **Disable profile prompt notifications for ALL profiles:** If enabled then profile prompts are never shown. This is a quick way to switch off the notifications if you find them distracting.
### Why did a notification not appear?
SyncBackPro uses standard Windows notifications. This means Windows itself, and not SyncBackPro, controls if and when a notification appears on the screen. If a notification you were expecting did not appear, e.g. when a profile finished or failed, then it is usually because Windows chose not to display it:
- If **Do Not Disturb** (Windows 11) or **Focus Assist** (Windows 10) is switched on, then Windows will not show the notification popup. The notification is not lost: it is delivered silently to the Windows Notification Center, where you can read it later.
- By default, Windows turns on Do Not Disturb automatically while you are playing a game or using an application in full-screen mode, e.g. watching a video. During that time notifications will not interrupt you, and instead they go silently to the Notification Center. You can change these automatic rules in Windows **Settings > System > Notifications**.
- To see notifications you may have missed, open the Notification Center. On Windows 11, click the date and time in the taskbar, or press **Win+N**. On Windows 10 it is called the Action Center, and is opened by pressing **Win+A**.
- Windows also lets you disable notifications for each application. If SyncBackPro notifications never appear at all, not even in the Notification Center, then check in Windows **Settings > System > Notifications** that notifications are enabled, both in general and for SyncBackPro.
**Further reading:** [Notifications](https://www.2brightsparks.com/resources/articles/notifications.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Searching the settings
By selecting **Search**, or by clicking search in the window caption, you can search all the settings for a profile (visible or not). Simply type the search text, e.g. **cloud**, into the Search edit box and a list of matching entries will appear. To go to the setting you want simply click on it in the search results.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Expert Mode
To modify a profile either use **Modify** button on the toolbar in the main window. Spend time getting to know what options are available under the many pages in the Profile Setup window.
SyncBackPro provides two modes to view and change your Profiles: Easy and Expert. Easy mode presents far fewer options to modify your Profile making the choices you make less complex than in Expert mode. To access the Expert mode, when modifying a profile, you'll need to select the 'Expert' mode item located in the Burger Menu
Which settings are listed depends on the profile type. For example, a profile that performs a backup to the cloud will not show options for backup of email, FTP, etc.
- Burger Menu The [Burger menu](ClickForOptions.md) allows you to:
- Expert Options The left hand Options List contains a range of settings and choices that provide a great deal of flexibility in the way you can perform and control tasks, many of which are not available in the default Easy Mode. Spend time getting to know what options are available.
### Expert Mode
[Simple, Performance](SimplePerformance.md)
[Simple, History](SimpleHistory.md)
[FTP](FTPSettings.md)
[FTP, Advanced](FTPAdvanced.md)
[FTP, Proxy](FTPProxy.md)
[FTP, Firewall](FTPFirewall.md)
[FTP, HTTP](FTPHTTP.md)
[Cloud](Cloud.md)
[Cloud, Advanced](CloudAdvanced.md)
[Cloud, Proxy](CloudProxy.md)
[Media Transfer Protocol](MTP.md)
[Backup Email](BackupEmail.md)
[Backup Email, Proxy](BackupEmailProxy.md)
[SyncBack Touch](SyncBackTouch.md)
[Network](NetworkSettings.md)
[Network, Advanced](NetworkAdvanced.md)
[VHD](SyncBackContainer.md)
[Scripts](SetupScripts.md)
[HTTP Download](SetupHTTP.md)
[Decryption](Encryption.md)
[Compression](CompressionSettings.md)
[Compression, Advanced](CompressionAdvanced.md)
[Compression, NTFS](CompressionNTFS.md)
[Compression, Compressed](CompressionCompressed.md)
[Intelligent Synchronization](IntelligentSynchronization.md)
[Decisions - Files](DecisionsFiles.md)
[Decisions, Folders](DecisionsFolders.md)
[When, Hot-key](WhenHotkey.md)
[When, Login/Logout](WhenLoginLogout.md)
[When, Changes](WhenChanges.md)
[When, Insert](WhenInsert.md)
[When, Periodically](WhenPeriodically.md)
[When, Time Limit](WhenTimeLimit.md)
[When, Program](WhenPrograms.md)
[When, Touch](WhenSyncBackTouch.md)
[When, Display](WhenDisplay.md)
[Copy/Delete](CopyDeleteSettings.md)
[Copy/Delete, Folders](CopyDeleteFolders.md)
[Copy/Delete, Advanced](CopyDeleteAdvanced.md)
[Copy/Delete, Locked](CopyDeleteLocked.md)
[Copy/Delete, Network](CopyDeleteNetwork.md)
[Copy/Delete, Warning](CopyDeleteWarning.md)
[Copy/Delete, Links](CopyDeleteLinks.md)
[Versioning](CopyDeleteVersioning.md)
[Versioning, Delta](Delta.md)
[Integrity Check](CopyDeleteIntegrity.md)
[Compare Options](CompareOptionsSettings.md)
[Compare Options, File Size](CompareOptionsFileSize.md)
[Compare Options, Date & Time](CompareOptionsDateTime.md)
[Compare Options, Attributes](CompareOptionsAttributes.md)
[Compare Options, Security](CompareOptionsSecurity.md)
[Log](Log.md)
[Log, Pushover](Pushover.md)
[Log, Proxy](EmailProxy.md)
[Log, Advanced](EmailAdvanced.md)
[Log, Email Log](EmailSettings.md)
[Misc.](MiscellaneousSettings.md)
[Misc., Media](MiscellaneousMedia.md)
[Misc., Speech](MiscellaneousSpeech.md)
[Misc., Elevate](MiscellaneousElevate.md)
[Programs Before](ProgramsBefore.md)
[Programs, After](ProgramsAfter.md)
[Auto-close](AutoCloseSettings.md)
[Variables](SetupVariables.md)
[Notes](SetupNotes.md)
[Notify](WindowsNotify.md)
[Ransomware Detection](SetupScripts.md)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Simple, Performance
This page shows you which settings may be affecting the performance of your profile. It is important to keep in mind that speed is not everything, and that what is more important is that the files are copied correctly. For example, verifying that your backup files are correct will slow down the profile but will guarantee your backup files are not corrupted at backup time. The [safe copy](CopyDeleteAdvanced.md#makesafecopies) option is enabled by default for most profiles and it is strongly recommended that you do not switch off this option just to slightly reduce the backup time.
You can jump directly to the appropriate settings page by simply clicking on the items listed in the "**The following settings are slowing down the profile:**", etc., sections.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Simple, History
This page shows you the history of a profile, e.g. when it was run, where it was run, the result, etc. This is similar to the [log files](Log.md) except it's provided in table form. The history is also recorded separately from the log files and uses less disk space, so you may want to keep a longer history. A profile's history is also sent to the [SyncBack Management Service](SBMService.md) (Pro version only) to enable remote monitoring of profiles. Note that no history is kept of simulated runs or integrity checks.
There are two tabs: **Simple** and **Detailed**. The Simple tab just lists the last five runs of the profile and gives a brief overview of what happened. e.g. when the profile was run. The Detailed tab shows every profile run and all the details for those runs.
On the Detailed tab, if you right-click on the history then a pop-up menu appears. Using this pop-up menu you can choose which columns to show or hide. See the **Columns** section below for the meaning of each column.
You can export the entire profile history to a comma-delimited (CSV) file by clicking the **Export all...** button.
Scripts (Pro version only) have access to most of this information via the [SBHistory](SBHistory.md) object.
Note that you cannot save or load defaults nor load the history from another profile.
- **Maximum run history to keep:** The number of profile runs to keep a history of. The default is 50 and the maximum is 500.
## Columns
Columns 1 and 2 show the result of the profile run:
- **Result (1):** The result of the profiles run, e.g. **Success**.
- **Critical Error (2):** If there was a critical error then it is shown in this column.
Columns 3 to 22 show information about the profile and its source/left and destination/right:
- **Type (3):** A description of the type of profile, e.g. **Fast Backup**.
- **Backup Type (4):** If the profile is a Fast Backup then this is the type of backup, e.g. **Incremental**.
- **Group (5):** If the profile was run as part of a group, then the name of the parent group is shown.
- **Group Start Time (6):** The date & time the parent group started (if part of a group).
- **Profile Start Time (7):** The date & time the profile started.
- **Restore (8):** If the profile was run as a Restore then it is indicated in this column.
- **Computer Name (9):** The name of the computer the profile was run on.
- **Username (10):** The Windows username of the user who ran the profile.
- **Source/Left (11):** The source/left path.
- **Source/Left Override (12):** If the source/left path was passed on the command line then it is indicated in this column.
- **Source/Left Volume Serial (13):** The serial number of the source/left volume (that the source/left path is on).
- **Source/Left Free disk space (14):** Free disk space (in bytes) available to the user on the source/left.
- **Destination/Right (15):** The destination/right path or filename.
- **Destination/Right Override (16):** If the destination/right path was passed on the command line then it is indicated in this column.
- **Destination/Right Volume Serial (17):** The serial number of the destination/right volume (that the destination/right path is on).
- **Destination/Right Free disk space (18):** Free disk space (in bytes) available to the user on the destination/right.
- **FTP Server (19):** If an FTP (or SFTP or FTPS) server was used, then this is the hostname of the server.
- **POP3/IMAP4 Server (20):** If an email server was used, then this is the hostname of the server.
- **Cloud (21):** If a cloud server was used then this is the type of cloud server, e.g. **Amazon S3**.
- **Bucket/Container (22):** If a cloud server was used then this is the name of the bucket/container used on the cloud server.
Columns 23 to 33 show information about the differences found between the source/left and destination/right:
- **Files Changed (23):** The total number of file differences between the source/left and destination right. It is a sum of the columns 25 to 31.
- **Files Unchanged (24):** The number of identical files (or there are only versions available).
- **Contents Changed (25):** The total number of files whose contents have changed (only known if the slow method of file comparison is used).
- **Date/Time Changed (Modified) (26):** The total number of files whose last modification date & times are different.
- **Date/Time Changed (Created) (27):** The total number of files whose last creation date & times are different.
- **NTFS Security Changed (28):** The total number of files whose security settings are different.
- **Size Changed (29):** The total number of files whose sizes are different.
- **Attributes Changed (30):** The total number of files whose file attributes are different.
- **Filename Case Changed (31):** The total number of files whose filename case is different.
- **Only in Source (32):** The total number of files only in the source/left.
- **Only in Destination (33):** The total number of files only in the destination/right.
Columns 34 to 43 show information about what was actually done during the profile run, i.e. changes made to the source/left and destination/right:
- **Deleted (34):** The total number of files that were deleted (either from the source/left or destination/right).
- **Deleted (KBytes) (35):** The sum of the sizes of all files that were deleted.
- **Skipped (36):** The total number of files skipped, e.g. nothing was done with or to the files.
- **Copied (37):** The total number of files copied.
- **Moved (38):** The total number of files moved.
- **Copied/Moved (KBytes) (39):** The sum of the sizes of all files that were copied or moved.
- **Renamed (40):** The total number of files or folders renamed.
- **Date Changed (41):** The total number of files that had their last modification date & time changed to match the opposite file.
- **Attributes Changed (42):** The total number of files that had their file attributes changed to match the opposite file.
- **Versions Restored (43):** The total number of files that had versions restored.
Columns 44 to 46 show total error counts accumulated during the profile run:
- **Critical Errors (44):** The total number of files that failed to be copied, moved, or deleted.
- **Compression Errors (45):** The total number of compression related errors, e.g. could not be zipped or unzipped.
- **Cannot Compute Hash (46):** The total number of files that could not have their contents compared (the slow method of comparison).
- **Warnings (47):** The total number of warnings.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Media Transfer Protocol (MTP)
Using this window you can specify which Media Transfer Protocol supported device you want the profile to use.
If possible, it is recommended that [SyncBack Touch](SyncBackTouch.md) be used instead of MTP. Touch is considerably more flexible, faster and has fewer limitations or problems. It is also free to use with the current version of SyncBackPro and SyncBackSE.
- **Destination/right files are on a Media Transfer Protocol device:** If the destination/right is a device that supports MTP then tick this checkbox and then select the appropriate device in the drop-down list.
- **Connect to any MTP device that has the same name**: If this option is enabled then SyncBack will try to connect to the device (via its unique ID) and if that fails it will try and connect to any MTP device that has the same name but a different ID. If this option is not enabled then SyncBack will only connect to the specific device chosen. You may want to enable this option if you have a device that can connect using Wi-Fi or USB and you may use either connection type.
- **If the MTP device cannot set a files date & time then change the local files date & time to match that on the device:** Many MTP devices only implement very basic file system support. This means they often do not store a files last modification date & time or provide it as read-only. This is similar to the problem with some [FTP](FTPSettings.md) servers. If this checkbox is ticked then SyncBack will instead change the local files date & time to match that of the corresponding file on the MTP device.
- **Run this profile when the MTP device is connected:** If enabled then SyncBack will run this profile when the MTP device is connected to your computer, e.g. via USB.
- **Run unattended, i.e. do not prompt me:** If enabled then SyncBack will run the profile unattended when the MTP device is connected. By default it is run attended, i.e. prompts will be made if required.
Please make sure you unlock your device before connecting it to your computer via USB. Because of the security settings on Android devices you cannot access the files on the device unless you unlock it before connecting it. For example, some HTC phones will give a different device ID when connected locked.
The level of MTP support varies between manufacturers. Some devices cannot set the last modification date & time of files, for example. SyncBack can only request an action be made, e.g. delete a file. It is entirely up to the device to perform that action.
On some devices you may need change the USB setting to **Mass Storage** for SyncBack to be able to access your device via MTP. Please refer to the device documentation for how to do this.
Some devices have internal and external memory and may combine the listings for files and folders. For example, you may have a file called **abc.txt** on the internal memory and a file with the same name (but different contents) on the external memory. When asking for a list of files and folders the device may give the same filename more than once (once for each storage device it is in) in the same folder. It is impossible for SyncBack to know which file it is that you want. When this occurs SyncBack will post-fix the filenames with (1), (2), etc. on the local computer storage. This is so you can get all files with the same filename in the same folder. However, this can become an issue if the MTP device changes the order in which it returns the filenames or one of the files is deleted on the device.
**Further reading:** [Media Transfer Protocol (MTP)](https://www.2brightsparks.com/resources/articles/media-transfer-protocol.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# VHD
Using this window you can use existing VHD/X files (on Windows 7 or newer).
VHD (Virtual Hard Disk) is a disk image file format for storing the complete contents of a hard drive. The disk image, sometimes called a virtual machine, replicates an existing hard drive and includes all data and structural elements.
### Settings
- **Mount a VHD (a virtual drive):** If you want to use a VHD file, then enable this option. Note that you must create the VHD file yourself, which is [possible within Windows](https://technet.microsoft.com/en-us/library/gg318052(v=ws.10).aspx). Note that VHD files are only supported on Windows 7 or newer. You must be running [elevated](MiscellaneousElevate.md) to mount a virtual drive.
- **Filename:** This is the filename of the VHD file. SyncBackPro cannot create VHD files. You must use Windows, or another utility, to create VHD files.
- **Mounting Point:** A virtual drive can be mounted on a drive letter, e.g. X:\, or on an empty folder in an NTFS partition. Note that this is entirely optional and not required (unless **BitLocker** is being used). Only mount a virtual drive if you have external programs that need access to the virtual drive while the profile runs. Also, if it is already mounted then the existing mounting point will be used instead.
- If a VHD file is being used, which is protected by BitLocker using a password, then it **must** be mounted to a drive. It cannot be mounted to a folder on NTFS.
- If **AutoPlay** is enabled in Windows, then whatever action you've chosen will be performed by Windows when a virtual drive is mounted, e.g. Windows Explorer may appear. In Windows, it can be switched off via Bluetooth & devices > AutoPlay
### Creating a new VHD file
Windows itself contains the utilities to create VHD files. There are two ways to do this: via **Disk Management** or via **DiskPart**:
**Disk Management**: https://learn.microsoft.com/en-us/windows-server/storage/disk-management/manage-virtual-hard-disks
**DiskPart**: https://technet.microsoft.com/en-us/library/gg318052(v=ws.10).aspx#BKMK_Part
Basically, you need to create the VHD file, create a volume on it and then format it. This only needs to be done once. You do not need to attach or mount it as this is done via SyncBack (however, if it is already attached or mounted then it's not a problem).
To create a VHD via the command line:
1. To start the **DiskPart** command interpreter, open an elevated Command Prompt window (click Start, right-click Command Prompt, and click Run as administrator) and type:
**diskpart**
1. To create a new 2 GB dynamically expanding .vhd file (called Test.vhd) and save it to the C:\vhd folder, type the following command. If you do not specify the **type=expandable** parameter, DiskPart will create a fixed VHD:
**create vdisk file=c:\vhd\test.vhd maximum=2000 type=expandable**
1. We now need to attach the VHD file:
**attach vdisk**
1. To create a primary partition inside the new VHD, type:
**create partition primary**
1. To format the partition, type:
**format fs=ntfs label=”test volume” quick**
1. We can now detach it:
**detach vdisk**
1. And finally exit diskpart:
**exit**
### Using an existing VHD/X file
To use an existing VHD/X file, enable the **Mount a VHD (a virtual drive)** option and click the **Folder** button in the filename edit box.
- **Encryption**: If the VHD/X file is using BitLocker with a password, then enter the password. If no encryption is being used then do not enter a password.
- **Filename**: You can now choose the VHD/X file.
Click the **Finish** button to open the virtual drive.
**Further reading:** [Backing Up to a Virtual Drive Using SyncBack Containers](https://www.2brightsparks.com/resources/articles/backing-up-to-a-virtual-drive-using-syncBack-containers.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Google Photos
- Support for Google Photos will end in April 2025. Google has removed access to all 3rd party backup applications.
You are strongly advised to use a [linked cloud account](LinkedCloudAccounts.md).
SyncBackPro has the ability to backup photos and videos stored on Google Photos. It can only copy files from Google Photos. It cannot upload, delete or change files stored on Google Photos. It is strictly **read-only**.
### How Files are Stored
In Google Photos you can put photos and videos (which we'll now refer to as **files**) in Albums. A file can be in multiple albums or no albums at all. Files on Google Photos also have their original filename stored (which is likely the one used by the camera, for example). This filename is not guaranteed to be unique and is not used by Google Photos (it's purely for you reference). Files on Google Photos also have a unique ID (which is a very long meaningless string of letters and numbers).
SyncBackPro will store the files, downloaded from Google Photos, based on the date the file was created by the device that took it. So at the highest level is the year, followed by the month. The numeric value of the month is used instead of the name (for consistency across all languages). For example:
X:\Google Photos Backup\2019\1\
X:\Google Photos Backup\2019\2\
X:\Google Photos Backup\2018\12\
X:\Google Photos Backup\2016\6\
The local filename used is the filename on Google Photos (e.g. the filename given by the camera) along with a hash of the unique file ID. This is to ensure the filename is unique, e.g. **VIDEO0007.54A7ECCE.mp4**
Due to the way Google Photos works, there are some limitations:
- Google will not allow **location meta-data** to be downloaded so it will not be included in any files downloaded by SyncBackPro from Google Photos.
- SyncBackPro uses Google Photos essentially in read-only mode. It cannot make any changes to anything on Google Photos. To restore your photos to Google Photos, use their web interface or other Google Photos tools.
- Google Photos does not provide file size details, so SyncBackPro does not know how large the files are when we receive the list from Google Photos.
- Some files on Google Photos may not have a date & time or a valid date & time. You cannot change the date & time of a file on Google Photos.
- SyncBackPro does not use the [date & time](CompareOptionsDateTime.md), or the [size](CompareOptionsFileSize.md), for comparisons.
- Files on Google Photos don't have [attributes](CompareOptionsAttributes.md) like on normal file systems.
- When choosing the [file & folders](SubDirectoriesandFiles.md) to download, you actually choose based on the local filesystem and not on what is on Google Photos. For example, if you only want to download files from 2019 then, if not already created, create a local folder called 2019, then [choose the folders](SubDirectoriesandFiles.md) (years) you want to download. Make sure other years are deselected or set it to not include new folders. Alternatively, use a [filter](FilterSettings.md).
- A number of options are not available when using Google Photos, e.g. [Fast Backup](FastBackup.md), [Intelligent Sync](IntelligentSynchronization.md), [Compression](CompressionSettings.md), etc.
### Settings
- **Copy the photos from files from Google Photos:** Enable this option to copy files (photos and videos) from Google Photos.
- **Connect to/Disconnect from Google Photos:** Click this button to allow SyncBackPro to use your Google Photos account (or to stop it using the account). You'll need to login to your Google Photos account via a web browser then enter an authorization code into SyncBackPro. It is strongly recommended that you instead use a [linked cloud account](LinkedCloudAccounts.md).
- **Username:** This is read-only and simply shows the username (email address) of the Google Photos account being used, if any.
- **I use a proxy server:** If you must use a proxy server to connect to Google Photos then you must enable this option.
- **Hostname:** This is the hostname of the proxy server, e.g. proxyserver.com
- **Username:** This is the username to use to connect to the proxy server. It may be optional for your proxy server.
- **Password:** This is the password to use to connect to the proxy server. It may be optional for your proxy server.
- **Port:** The port number of the proxy server. This value varies depending upon the type of proxy server software used. Although "1" is the default, it will almost certainly not be this number.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compression
SyncBack has the ability to compress files using the industry standard Zip format as well as the newer LZMA and LZMA2 (7-zip) format. Compression reduces the size of the file and has the potential to save a lot of disk space, especially when files such as text and office documents are being copied.
Two methods of compression are supported: all the files can be placed into one single compressed file (single Zip), or each file can be placed into it's own individual compressed file (multi-Zip). The first option (single Zip) uses the least amount of disk space, but has the disadvantage that "all the eggs are placed in one basket", so to speak. Also, versioning cannot be used if all files are placed into a single compressed file, and if you store the single Zip in a remote location (e.g. FTP, cloud, etc.) then the Zip file cannot be updated and must be recreated each time.
To increase compression performance SyncBackPro can be configured not to try and compress [already compressed files](CompressionCompressed.md), e.g. MP3's, JPG images, etc. Instead of compressing files of these types it will instead **store** them (without compression) in the Zip file. Note that they are still stored in a Zip file but are not compressed within the Zip file. There is also the option to try and [highly compress](CompressionHigh.md) certain types of files, and also use [low compression](CompressionLow.md) on certain file types.
For maximum security, you can also encrypt and compress the filenames and file details within the Zip file.
- SyncBackPro is Unicode enabled, so it can store files and folders with names in any language, e.g. Chinese, in a Zip file. However, some compression programs are not Unicode enabled. Because of this if you open a Zip file produced by SyncBackPro using a non-Unicode enabled compression program then it will show the filenames incorrectly (probably with question marks). The problem is with the compression program, not the Zip file produced by SyncBackPro. The solution is to use a compression utility that is Unicode enabled, such as **7Zip**, for example. Another possibility is that the compression utility uses UTF-8 Unicode encoding, e.g. WinZip 12. If so, you should [configure the profile](CompressionAdvanced.md#utf8) to use UTF-8 encoding in the Zip file. Also note that if you open a split Zip file created by SyncBackPro in a compression program, e.g. WinZip, then it may give an error saying the file is corrupted. The problem is that it is expecting the split filenames to be named differently. See [this section](CompressionAdvanced.md#splitzipfilesnaming) for details.
### How Compression Is Used
When you are using the [cloud](Cloud.md), [FTP](FTPSettings.md), [SyncBack Touch](SyncBackTouch.md) and [Media Transfer Protocol](MTP.md) (MTP) then the compression applies to that location. This means that any files copied to that location, e.g. FTP, will be compressed to a temporary file and that compressed file will be uploaded to the location. When a file is copied from such a location then the compressed file is downloaded and uncompressed.
In some cases, e.g. with FTP, the compressed file stored in the location will have a special filename. This special filename contains details about the file stored in the compressed file. By doing this SyncBackPro can scan the location and get the details of the file within the compressed file without having to download it and extract it, which would be extremely slow. In most cases, e.g. when using Amazon S3, it doesn't need to do this as those kinds of locations allow SyncBackPro to store meta-data along with the file and this meta-data will contain details of the file within the compressed file.
In the special case that you have compressed files on FTP etc. and want to download them uncompressed then you must run the profile as a **restore**. So you must create a backup profile where you are backing up files to the location using compression and then run that profile as a restore. Keep in mind that if the compressed files are being created by something other than SyncBackPro then they will not have the special filename that contains the details. This means SyncBackPro will not know the size nor the last modification date & time of the file inside the compressed file.
If you want to download files from FTP etc. and have them stored locally compressed, then this is not possible with a single profile. Instead you would need to create two profiles: the first profile would download the files to a temporary location and the second profile would then compress those files. Those two profiles would then be put into a group and you would run the group.
### Which Compression Method to use
If you are looking for maximum compatibility with 3rd party compression utilities, choose **Deflate** or **Deflate64**.
If you require maximum performance use **Zstandard** (zstd) with a lower compression level. Zstandard can only be used with multi-zip compression. If you are compressing all to a single Zip then **Deflate64** has the best performance.
For maximum compression (but the slowest performance) choose **XZ**, **LZMA** or **LZMA2**. All three compress to similar levels. If you choose a higher compression level then avoid **LZMA** as it uses a lot of memory at higher compression levels. XZ can only be used with multi-zip compression. If you are compressing all to a single Zip then **LZMA2** compresses the best.
### Performance
When compressing files there is a trade-off. Less storage (by compressing files) means slower backups (and restores). Compression is a CPU (and memory) intensive process. You cannot compress files and expect similar performance to simply copying files as-is without compression.
To get the best compression performance:
- Use multi-zip compression so each file is stored in its own Zip file, i.e. untick the option "**Compress the files on destination/right into a Zip file**".
- Use multi-threaded (parallel) compression (see the setting "[Number of files to compress/decompress in parallel](CompressionAdvanced.md)"). Do not use too high a number otherwise, i.e. do not use a number higher than the number of threads your CPU supports.
- Use the **Zstandard** compression method.
- Do not use a **compression level** above **5 - Normal compression**. The lower the compression level, the faster it will be.
- Enable the option "[Auto-detect files that may not compress](CompressionCompressed.md)".
### Compression Settings
- **Compress the files on destination/right into a Zip file:** Enable this option to compress files copied to the destination/right into a single Zip file. If you are backing up files to an FTP server or the cloud, please read the [Fast Backup](FastBackup.md#ftpsinglezip) section for tips on getting the best results.
- **Put all the files into a single compressed file (by default each file will be placed in its own compressed file):** If this option is enabled, then the files will be put into a single compressed Zip file. If this option is not enabled (the default), then each file will be placed into it's own Zip file.
- When each file goes into its own Zip file, and those Zip files are being stored on an FTP server, we have the problem of knowing what is in a Zip file on a remote FTP server. To know this SyncBackPro would need to download the Zip file and open it to see what file is inside it, what it's uncompressed size is, and what it's last modification date & time is. To avoid this SyncBackPro changes the filename of Zip files stored on an FTP server by embedding this information in the filename itself. However, if the filename does not contain this information, e.g. it was created on the FTP server by some other utility, then SyncBackPro will not know the files uncompressed size or its last modification date & time. This means (depending on your profile configuration) it will always assume the file has been changed since the last profile run.
- **Type of compression:** There are several types of compression: Deflated (which is the default), Deflated64, Burrows Wheeler, BZip2, LZMA, LZMA2, XZ and Zstandard.
**Deflated** provides the normal type of compression used by the older Zip format (traditional PKZIP 2.04g compression method). This is the most compatible compression method, i.e. nearly all 3rd party compression utilities understand this compression method.
**Deflated64** (also know as Enhanced Deflate) provides a greater level of compression than Deflate, but note that it will increase the compression time and is not compatible with as many 3rd party compression utilities as Deflate. Deflate64™ is a trademark of PKWARE Inc.
**Burrows Wheeler** (popularized by the UNIX and Linux BZip2 program) offers significantly better compression than Deflate but takes longer to compress and decompress data. Tests have shown BWT (Burrows Wheeler Transform) to often achieve between 20% to 30% better compression than Deflate on many popular file types such as databases, pictures, text and executable files. BWT is considered to be one of the most efficient compression algorithms for compressing XML data. In comparison to BWT, Deflated64 is slightly faster but does not compress as well. The compressed file format is Zip.
- Note that the **Burrows Wheeler** compression method is not supported by any other compression program. Only SyncBackSE and SyncBackPro can be used to restore Burrows Wheeler compressed files.
**BZip2** is similar to the **Burrows Wheeler** compression method except that it is compatible with some compression programs, e.g. WinZip 11. Note that in some cases, e.g. with highly random data, the compression speed can be very slow as compared to the other compression methods (see the [Compressed settings page](CompressionCompressed.md) to choose which files not to compress). However, it generally provides the best compression level. The compressed file format is Zip.
**LZMA** (Lempel-Ziv-Markov chain-Algorithm) uses an improved and optimized version of the Lempel-Ziv (LZ77) compression algorithm, backed by a Markov chain range encoder. It uses a variable dictionary size. It is compatible with some compression programs, e.g. WinZip 12. LZMA typically provides much better compression than the Deflate and Deflate64 algorithms at the expense of speed and memory usage when compressing. It also typically provides compression ratios a little better than BZip2/BWT while being a little faster. The compressed file format is Zip.
- LZMA maximum level compression uses a huge amount of memory. If you run two or more profiles in parallel, that use LZMA maximum level compression, then you will probably get the following error: **Compression error: There is not enough free memory to process the file.** It is strongly recommended that you use the [64-bit version](32bit64bit.md) of SyncBackSE or SyncBackPro, and have enough memory, if you need to use maximum level LZMA compression.
**LZMA2:** This is the improved version of LZMA and is compatible with 7-Zip V9 and newer. The compressed file format is 7z.
**XZ:** XZ is an alternative compression engine that uses LZMA2 compression but stores the compressed file in an XZ container within a Zip file, i.e. it does not use the XZ file format but the Zip file format. It is compatible with 7-Zip V9.20, WinRAR 6.24, and WinZip 20.5 and newer.
**Zstandard:** Also called **zstd**, it is the fastest compression method. Although it does not compress as well as XZ, LZMA and LZMA2, it is quicker to compress and decompress. Compatible with WinRAR 6.10 and newer. The compressed file format is Zip.
- **Level of compression:** There are ten levels of compression ranging from level 0 (no compression, files are stored in a compressed file but are not actually compressed) to level 9 (highest compression). The more a file is compressed, the slower it takes to compress the file and it will also use more memory. This option allows you to make a trade-off between speed and file size. The **Type of compression** setting also influences the compression speed and file size. Note that level 9 LZMA compression (not LZMA2) uses a huge amount of memory and will very likely cause memory failures if two or more profiles are run at the same time using level 9 LZMA compression.
- The dates and times stored in a Zip file are stored literally without timezone information. This can cause issues when a Zip file is used in different timezones.
- **Encryption method:** If you wish to password protect the contents of the files in the Zip file then choose the encryption method to use. AES encryption is more secure but not as portable. For example, "Old style" encrypted Zip files can be decrypted and extracted using practically any 3rd party Zip program. However, AES encrypted Zip files can only be decrypted and extracted using newer 3rd party Zip programs, e.g. WinZip 9.
- **Password:** If you want to password protect the files in the compressed archive then enter a password here. It's important to note that if you change the password then the existing files in the destination will still use the old password. Each file in a compressed archive has its own password. The maximum password length is 79 characters. You can use a [secret](SecretsManager.md) for the password.
- **Note that you are entirely responsible for remembering the password used. It is not possible under any circumstances for 2BrightSparks to recover lost passwords.**
- Prompt for the password when run (profile will fail if run unattended): If this option is enabled then every time the profile is run SyncBack will prompt you for the compression password. If the profile is being run unattended, then no prompt will be displayed and the profile run will fail.
- **Encrypt and compress the filenames and details**: SyncBack can optionally encrypt and compress the filenames and file details in the Zip file. By doing this, anyone who opens the Zip file (to see the file list) will be unable to see anything without knowing the password. This encryption method is compatible with [PKWare SecureZip](https://www.pkware.com/zip-reader) (when **Deflate** or **BZip2** compression is used) or 7-Zip (when **LZMA2** compression is used). The PKWare SecureZip encryption is not compatible with the same feature in WinZip and 7-Zip. However, when using LZMA2, it is compatible with 7-Zip. To use this option some other options must be set first:
- All files must be put into a [single Zip file](CompressionSettings.md)
- The Deflated, [BZip2](CompressionSettings.md#bzip2) or LZMA2 compression method must be used
- The encryption method must be AES
- Split Zip files cannot be used
- Self-extracting Zip files cannot be used
- The compression level must be greater than zero (i.e. it must be compressed)
**Further reading:** [Understanding Compression](https://www.2brightsparks.com/resources/articles/understanding-compression.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Single Zip with Cloud, FTP and Touch
- This section contains **important** details you should be aware of when using single Zip [compression](CompressionSettings.md) with [cloud storage](Cloud.md), [FTP/SFTP](FTPSettings.md) or [SyncBack Touch](SyncBackTouch.md) and you are using [Fast Backup](FastBackup.md).
### Audience
**Single zip** compression is where you have configured SyncBack to put all your backup files into a single compressed file. The alternative is **multi-zip** where each backup file goes into it's own compressed file. Here we are going to talk about single zip compression only as multi-zip compression does not act the same way.
### Single Zip with Cloud storage, FTP/SFTP and Touch
When you are backing up all your files to a single Zip file file in remote storage such as the cloud, FTP/SFTP and Touch, then the backup Zip file is **always** deleted and replaced with a new backup. This means it will always make a full backup of all your files. It will not update the backup files. It will simply replace the backup with a new one. You can of course use [variables](Variables.md) in your single Zip filename so that you have multiple backups, e.g. a new backup for every day of the week. The point is, SyncBackPro will **not** download the remote backup Zip file, update it and then upload it to replace the existing one. It will instead create a new Zip file and then upload it, which replaces any existing backup Zip file.
### Fast Backup and Single Zip with Cloud storage, FTP/SFTP and Touch
You can change this by using [Fast Backup](FastBackup.md). With Fast Backup, SyncBack compares the current state of your local files to the previous state when the profile was last run. This means it doesn't need to scan the backup destination (the Zip backup file) to see what has changed. It also means it is not going to backup everything again. Instead, it is only going to put into the new backup Zip file those files that have changed since the last run. In other words, it is going to make an **incremental backup**. You can change this in the Fast Backup settings to make it a **differential backup** instead.
The important point to remember is that the backup Zip file is an incremental or differential backup and not a full backup. This new backup Zip file will then replace any existing remote backup Zip file. Unless you are using variables in your backup destination then this is very probably not going to be what you want.
For example, you are making a backup to FTP, are using Fast Backup, and have configured your profile to backup all files to a single Zip file using the file name **MyBackup.zip**:
- The first time you run the profile it will make a full backup. **MyBackup.zip** will contain a backup of all your files.
- The second time you run the profile it will only put new and changed files into **MyBackup.zip**, which will then replace your existing backup.
- You've now lost the backup of your unchanged files.
We recommend you:
- Enable the [auto-incrementing variable](SetupVariablesIncremental.md) and configure it to how many backups you want to keep (one backup will be full and the others will be incremental or differential)
- Change your backup file name to use the auto-incrementing variable, e.g. MyBackup_**%AUTOINC%**.zip
- Configure your [Fast Backup](FastBackup.md) to force a rescan when **%AUTOINC%** equals 1 (or whatever you set your minimum value to be for the auto-incrementing variable)
- Optionally, configure your [Fast Backup](FastBackup.md) to use Differential backups. Differential backups will use more space but are quicker to restore.
If you do the above, you will have one full backup and several incremental or differential backups (how many depends on the maximum value you used for the auto-incrementing variable).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compression, Advanced
- **Create self-extracting Zip files:** If ticked then a self-extracting Zip file will be created. A self-extracting Zip file is an executable program, that when run, will extract its contents. The benefit is that a 3rd party Zip program is not required to uncompress the files. Please note that as the self-extracting executable is 32-bit, it is limited to roughly 2GB in size (it's not exactly 2GB as it depends on the executable extractor included in the file). This is true even for 64-bit versions of SyncBackPro and SyncBackSE. This option is not available when using LZMA2, XZ or Zstandard compression and when the header is being encrypted.
- **Create a multi-part Zip file with each part having the maximum size of…:** Setting a value means you want a split zip file with each part being no more than the size specified. These separate parts can then be copied manually to an FTP server, cloud, etc. An important point to note about split Zip files is that they cannot be modified once created (this is a limitation of the compression format, and not SyncBack). The existing Zip file will be automatically deleted and rebuilt. For this reason you may wish to use a Fast Backup profile that does full and incremental backups. Note that the naming standard used by SyncBack is not compatible with some Zip programs. See the [section below](CompressionAdvanced.md#splitzipfilesnaming) for more details. This option is not available when using LZMA2 compression or the header is being encrypted.
- **Filename extension:** This option is only available when compressing each file to its own file. Enter the filename extension to use for the destination compressed files. By default '.zip' is used as all the compression methods use the Zip format (except LZMA which uses 7z). Note that although the extension '.bwt' is used with the BWT compression algorithm the file format is actually Zip. It has not been changed for backwards compatibility reasons.
- Store the filenames in UTF8 format: WinZip 12 and newer compression utilities support storing filenames in a special format (UTF8). This allows for non-English filenames, e.g. Chinese, to be correctly recognized. If you are encrypting filenames in the Zip file, or using LZMA2, XZ or Zstandard compression, then UTF8 is enforced.
- **Temporary directory:** By default, temporary files produced during compression are stored in your standard Windows temporary directory. You can however change this using this option. For example, you may be using a small RAM disk as your temporary directory and so when using compression you would like the temporary files stored on your RAM disk. It is recommended you leave this setting empty so that the default temporary directory is used. You can use [variables](Variables.md).
- **Number of files to compress/uncompress in parallel:** When using multi-zip compression, i.e. all files go into their own Zip file, then you can greatly increase performance by compressing/uncompressing files in parallel (at the same time) instead of one at a time. Keep in mind that as you increase this value the memory and CPU consumption will increase. If the value is too high it will instead slow down your profile. This option is only available when copying to another drive and not with FTP, cloud, etc.
### Split Zip Files
- There is no standard way to name split Zip files. The naming standard used by SyncBack for split Zip files is different from that used by **WinZip**, **WinRAR**, and possibly other compression utilities. To open split Zip files you may need to rename the Zip files. For example, the following files may be created by SyncBack: Test.zip Test.z02 Test.z03 If you attempt to open the Zip file using WinZip or WinRAR it will incorrectly report that the Zip file is corrupt. If you wish to open the Zip file using WinZip or WinRAR you must rename the files as follows: Rename test.zip to test.z01 Rename test.z03 to test.zip (i.e. change the extension of the last file to .zip) If you are using the 7-Zip archiver then you must be using version 16 or newer.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compression, NTFS
- **Use NTFS compression on files copied to the source/left (only valid on NTFS volumes):** If enabled, and the source/left is on a volume formatted with the NTFS file system, then files copied from the destination/right to the source/left will be compressed using NTFS compression.
- **Use NTFS compression on files copied to the destination/right (only valid on NTFS volumes):** If enabled, and the destination/right is on a volume formatted with the NTFS file system, then files copied to the destination/right from the source/left will be compressed using NTFS compression.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compression, Compressed
To increase compression performance SyncBackPro can be configured not to waste time trying to compress **already compressed files**, e.g. MP3's, JPG images, etc. Instead of compressing files of these types it will instead **store** them (without compression) in the Zip file. Note that they are still stored in a Zip file but are not compressed within the Zip file.
- **Auto-detect files that may not compress:** If enabled, SyncBackPro will check if a file can be compressed before compressing it. File types in the filter are ignored as those will not be compressed anyway. However, by enabling this option you can avoid trying to compress files that cannot be compressed. To check for compressibility, SyncBackPro will quickly compress 1MB of data from the middle of a file. This is done in-memory and using a low compression level. If that data cannot be compressed by more than 5% then the file is considered to already be compressed or the compression rate is so low it is not worth trying to compress the file. It is important to note that it is impossible to know if a file can be compressed or not unless you actually compress it using the compression method and levels chosen. Therefore, this method of checking for compressibility is not fool proof.
This profile settings page can use and create [shared settings](SharedSettings.md).
To add a file type (not to be compressed, but just stored) click the **Add** button. You can then enter the file type, e.g. JPG. There is no need to prefix it with a period (.) as it will be added automatically.
To remove a file type, select it in the window then click the **Remove** button. While selecting, you can use the **SHIFT** and **CTRL** keys to make multiple selections.
If a file is stored, and not compressed, the variables [%STOREDEXTTOTAL%](Variables.md#emailinglog) and [%STOREDCOMPTOTAL%](Variables.md#emailinglog) are incremented. The log file will also state the total number of files that were not compressed.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compression, High
There are settings to [not compress](CompressionCompressed.md) certain types of files, and there are settings to only use [low compression](CompressionLow.md) on certain file types, there are also settings to highly compress certain file types. For example, large text files can be highly compressed.
If the [compression level](CompressionSettings.md) is already set to the highest level, then these settings cannot be used and are ignored.
To add a file type, click the **Add** button (or press **Ctrl-A**), and to remove a file type, select it (or several) in the list and click the **Remove** button (or press the **Del** key).
When using certain compression situations, the high compression setting cannot be used. For example, if you are compressing all files to a single Zip file and are using Deflated, Deflated64, Burrows Wheeler, BZip2 or LZMA compression, then high compression cannot be used. However, if you use LZMA2, XZ, Standard, or compress each file to its own Zip file, or enable the setting to encrypt and compress the filenames and details, then high compression can be used.
If a file is stored using high compression, the variable [%HIGHCOMPTOTAL%](Variables.md#emailinglog) is incremented. The log file will also state the total number of files that were highly compressed.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compression, Low
There are settings to [not compress](CompressionCompressed.md) certain types of files, and there are settings to only use [high compression](CompressionHigh.md) on certain file types, there are also settings to use low compression levels on certain file types. For example, *.docx* files are already compressed so there is no point trying to waste time compressing them further.
If the [compression level](CompressionSettings.md) is already set to the lowest level, then these settings cannot be used and are ignored.
To add a file type, click the **Add** button (or press **Ctrl-A**), and to remove a file type, select it (or several) in the list and click the **Remove** button (or press the **Del** key).
When using certain compression situations, the low compression setting cannot be used. For example, if you are compressing all files to a single Zip file and are using Deflated, Deflated64, Burrows Wheeler, BZip2 or LZMA compression, then low compression cannot be used. However, if you use LZMA2, XZ, Standard, or compress each file to its own Zip file, or enable the setting to encrypt and compress the filenames and details, then low compression can be used.
If a file is stored using low compression, the variable [%LOWCOMPTOTAL%](Variables.md#emailinglog) is incremented. The log file will also state the total number of files that were compressed with low compression.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# HTTP Download
You may have files stored on a web server that you wish to download. For example, you could create a profile to download the installer for an application.
The HTTP options are not available when also using the cloud, FTP, email, Touch, scripting, etc.
When downloading files using HTTP/HTTPS there are some important points to remember:
- A file may be processed (altered) by the web server before being delivered. For example, if you try to download a HTML or PHP file, then the web server is unlikely to return the raw file (as it is on the server).
- Binary files, e.g. executables, compressed files, binary files, etc. are usually delivered as-is without being changed. However, images may be altered by the web server or an intermediary cache service like Cloudflare.
- Files downloaded may be retrieved from a cache (local or remote), e.g. Cloudflare.
- Links are not followed, meaning if you download a HTML file, for example, then it only downloads that file and not any images etc. that it refers to.
- You can only download files, not upload files. You can specify URL parameters (query strings), but it will always be a **GET** call.
- If a file is created dynamically by the web server then it is likely it will always be downloaded by SyncBackPro. This is because the server will probably not provide the file size and any last modification date and time will constantly change.
If you can access the files you wish to download using FTP, then an alternative is to use FTP with the optional [HTTP download](FTPHTTP.md) function.
### Files and Folders
HTTP download works very differently from other location types, e.g. FTP or cloud. You must specify each file you want to download, the URL to download it from and the folder to store it in locally. This is done in the [Sub-directories and Files](SubDirectoriesandFiles.md).
For example, let's say you want to download the latest versions of SyncBackPro from the 2BrightSparks web server:
- You are now prompted to name the folder. This is the name of the sub-folder we are going to download the files into. In this example, we will name the folder **SyncBackPro**. Click **OK**. A folder is now shown in the window.
- Right-click on that **SyncBackPro** folder and select **Add file** from the pop-up menu:
- You are now prompted to name the file. This is the name of the file we are going to download to. You can give it the same name as it has on the web server, or any other filename. In this example we will call it **SyncBackPro.exe**. Click **OK**.
- We are next asked for the URL to download the file from. Basic AUTH is supported (e.g. **https://*username*:*password*@www.mywebsite.com/**). In this example we'll use the URL https://www.2brightsparks.com/assets/software/SyncBackPro64_Setup.exe
- Click OK once you've entered the URL. The file now appears in the window:
- Right-click on that folder and select **Add file** from the pop-up menu:
- You can now repeat these steps to add more files and folders:
- If you want to remove a file or folder, select it and press the **Delete** key.
- To rename a file or folder, and change a file URL, select it and press the **F2** key. You can also double-click on the name to just rename the file or folder without changing the URL.
- To change just the URL of a file, double-click the URL text.
- Once done, click **OK** to save the settings.
Some points to note:
- The **New Files** and **New Folders** settings (e.g. Include new files) have no meaning when using HTTP download and are ignored.
- The download URL you enter is not validated and is taken as-is.
### Settings
- Download Source/Left files from HTTP: If ticked, then the source/left is a web server, e.g. Apache, LiteSpeed, IIS, etc.
- Number of download threads to use (too many will degrade performance): To improve performance you can download files in parts in parallel. For example, if you specify 5 threads, and a 50MB file is being downloaded, then it will download five 10MB parts in parallel. If zero is specified, then up to 5 times the CPU thread count is used (with a minimum of 5). Note that this is a maximum value as fewer threads will be used if necessary. Once downloaded, the file is assembled locally from the parts.
- I use a proxy server: If you must use a proxy server to connect to external web servers then you must enable this option.
- **Hostname:** This is the hostname of the proxy server, e.g. proxyserver.com. [Variables](Variables.md) can be used.
- **Username:** Your proxy login username. If you do not need to login to your proxy server then leave this blank. [Variables](Variables.md) can be used.
- **Password:** Your proxy login password. If you do not need to login to your proxy server then leave this blank.
- **Port:** The port number of the proxy server. This value varies depending upon the type of proxy server software used.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Decryption
SyncBack has the ability to automatically decrypt copies of NTFS (EFS) encrypted files.
For file encryption please review the [Compression](CompressionSettings.md) page in this help file. The settings on this page refer to NTFS (EFS) encryption, which is not related to the encryption used with compression.
For FTP transmission encryption please review the [FTP, Advanced page](FTPAdvanced.md), and for cloud transmission encryption please review the [Cloud page](Cloud.md).
- **Decrypt NTFS encrypted files copied to source/left (only valid on NTFS volumes):** If ticked, then if an NTFS (EFS) encrypted file is copied to the source/left, it will be automatically decrypted.
- **Decrypt NTFS encrypted files copied to destination/right (only valid on NTFS volumes):** If ticked, then if an NTFS (EFS) encrypted file is copied to the destination/right, it will be automatically decrypted.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Intelligent Synchronization
With Intelligent Synchronization you are given a large number of options of what to do in each situation. Although the list and options appear daunting, taking the default values is nearly always the best option.
- Intelligent Synchronization cannot be used when compressing all files into one single file.
In the description of the options below an example follows about how each option may be triggered when you do an Intelligent Synchronization. With a backup, you typically refer to the file locations as **Source** and **Destination**, i.e. you copy files from the source to the destination. However, with synchronization, there is no source and destination because files are copied in both directions. Because of this, the file locations are referred to as **Left** and **Right**. Remember that you are free to label your file locations however you wish; simply click the location labels to edit them to the text of your choice (per-profile).
## Example Scenario
You have a local copy of the files on your laptop computer. In your profile setup this is the **Left** directory. There is also a copy of those files on the company network. In your profile setup this is the **Right** directory.
| | **Left** | |
| --- | --- | --- |
| | | |
| | | |
| | | |
| **Right** | | |
People in the company are making changes to the files on the network, and when you are out of the office you are changing your files on your laptop. Once you return to the office you are connecting your laptop to the company's network and synchronizing your files using SyncBack.
Note that when you first run an Intelligent Synchronization profile it has no history of data to look at and so, for example, cannot know if a file was only changed in the left but not the right.
### What to do if...:
- **...the same file has been changed in both the left and right:** You have changed a file on your laptop and someone has also changed the same file on the network. In this situation, it's best to be prompted on what to do. You may need to manually merge the file contents. Tick the **Move the file instead of copying it** checkbox to move the file. Note that this decision is also used in the following situations: 1) The left file has changed but it has been newly created in the right and they are different, 2) The left file has not been changed but it has been newly created in the right and they are different, 3) The file has been newly created in the left but the right file has been changed and they are different, 4) The file has been newly created in the left and the right file has not been changed but they are different.
- **...the file has only been changed in the left (unchanged in right):** You have changed a file on your laptop and nobody changed that file on the network. In this situation the default is to copy your changed file to the network (Left overwrites right always). Tick the **Move the file instead of copying it** checkbox to move the file.
- **...the file has only been changed in the right (unchanged in left):** A file was changed on the network and you didn't change your local copy of the file. In this situation the default is to replace your local copy with the changed one (Right overwrites left always). Tick the **Move the file instead of copying it** checkbox to move the file.
- **...a file is deleted from the left (but was changed or created in the right):** You have deleted a file on your laptop but someone has changed that file on the network or created a file with the same name on the network. In this situation the default is to be prompted as you may either want to delete the network file, or copy the network file to your laptop.
- **...a file is deleted from the left (but is unchanged in the right):** You have deleted a file on your laptop and the file on the network was not changed. In this situation the default is to also delete the file from the network (Delete file from right).
- **...a file is deleted from the right (but was changed or created in the left):** Someone has deleted a file from the network but you've changed your local copy of that file (or created a new file with the same name). In this situation the default is to be prompted as you may either want to delete your local copy of the file, or copy the local file to the network.
- **...a file is deleted from the right (but is unchanged in the left):** Someone deleted a file on the network and the file on your laptop was not changed. In this situation the default is to also delete the file from your laptop (Delete file from left).
- **...a new file has been created in both the left & right and are different:** The same file has been created on the network and your laptop. This happens when you first run an Intelligent Synchronization profile. The default is to be prompted, and usually you would choose to copy the newer file over the older file (Newer file overwrites older file). Tick the **Move the file instead of copying it** checkbox to move the file.
- **...a new file has been created in the left only, or is only in the left:** You have created a new file on your laptop and it doesn't exist on the network. This happens when you first run an Intelligent Synchronization profile. The default is to copy the file to the network (Copy file to right).
- **...a new file has been created in the right only, or is only in the right:** Someone has created a new file on the network and it doesn't exist on your laptop. This happens when you first run an Intelligent Synchronization profile. The default is to copy the file to your laptop (Copy file to left).
- **...the properties or the filename case of a file on left have been changed (unchanged on right):** The file on the left and right are identical except for the case of its filename or its properties. The case of the left filename, or its properties, have been changed so that they are no longer the same as the right. For example, the left file was previously called **abc.txt** but has been renamed to **ABC.TXT**. See the [Renaming Case Change](IntelligentSynchronization.md#caserename) section below for important information.
- **...the properties or the filename case of a file on right have been changed (unchanged on left):** The file on the left and right are identical except for the case of its filename or its properties. The case of the right filename, or its properties, have been changed so that they are no longer the same as the left. See the [Renaming Case Change](IntelligentSynchronization.md#caserename) section below for important information.
- **...the properties or the filename case of a file on both left and right are different:** The file on the left and right are identical except for the case of its filename or its properties. The case of both the left and right filename, or its properties, have been changed and they are not the same. See the [Renaming Case Change](IntelligentSynchronization.md#caserename) section below for important information.
- **What to do if a files contents are identical:** The file on the left and right are identical. The default is to do nothing.
- **Detect file renames on Left (note this may reduce performance):** If this option is ticked then SyncBack will try to detect files that have been renamed/moved in the left. If a file has been renamed on the left then it will rename the right file to match it. Note that this option requires that file contents be compared, which means this option could be very slow when there are many files or very large files. It will only compare files when it needs to. This option may not be available, depending on the profiles settings.
- **Detect file renames on Right (note this may reduce performance):** If this option is ticked then SyncBack will try to detect files that have been renamed/moved in the right. This option may not be available, depending on the profiles settings.
- **When prompting, and the run is unattended, ignore the changes:** For some of the decisions you may have chosen to be prompted. However, if the profile is being run unattended then you cannot be prompted. In this case the file is ignored and a [warning is recorded in the log file](Log.md#cannotprompt). With an Intelligent Synchronization profile you may want SyncBack to ignore the changes. See the [Ignoring Changes](IntelligentSynchronization.md#ignoringchanges) section for important details on what this means.
- Clear History: If clicked, then the Intelligent Synchronization history (database) will be cleared. If it is cleared then when the profile is next run SyncBack will not have any history to base its decisions on, so it cannot know if a file was only changed in the left but not the right. Clearing the history is equivalent to not having yet run the profile. This button is disabled if there is no history to clear.
### Ignoring Changes
Intelligent Synchronization works because SyncBack keeps a database of the state of files and folders, to which it can then refer to detect what has changed since the last time the profile was run. For example, if SyncBack knows a file existed on the left, and then when you next run the profile the file no longer exists, it knows the file was deleted from the left. Without that database it would have no idea that the file had existed before. After a profile has finished it updates this database so it can be used on the next run.
However, if a file is being skipped because you cannot be prompted on the decision to make, then you may not want SyncBack to update that database for those files that were skipped because you could not be prompted. Let's use an example of why you may want to do this:
1. You have the same file, file.txt, in the left folder (**C:\Left\file.txt**) and the right folder (**C:\Right\file.txt**).
2. You modify the left file and also modify the right file.
3. The profile is run unattended. Both files have been modified and you've chosen to be prompted if both files have been modified. However, the run is unattended so the files are skipped because you cannot be prompted.
4. **After the profile has finished SyncBack updates the synchronization database with the new details of the files.**
5. Later you modify the left file.
6. The profile is run attended, i.e. you can be prompted. SyncBack will now copy the left file over the right file. Why? Because since the last run (in step 3) the left file has been modified and the right one has not. You've selected that if one file is modified and the other isn't then the modified file replaces the unmodified file.
As you can see the problem here is that you have lost the changes made to the right file. This was because in step 4 SyncBack replaced the old file details with the new ones. If you choose to ignore changes when you cannot be prompted then it would work differently:
1. You have the same file, file.txt, in the left folder (**C:\Left\file.txt**) and the right folder (**C:\Right\file.txt**).
2. You modify the left file and also modify the right file.
3. The profile is run unattended. Both files have been modified and you've chosen to be prompted if both files have been modified. However, the run is unattended so the files are skipped because you cannot be prompted.
4. **After the profile has finished SyncBack does not update the synchronization database for those files that were skipped because you could not be prompted**.
5. Later you modify the left file.
6. The profile is run attended, i.e. you can be prompted. SyncBack will now prompt you about the file because it still has the old details for a previous attended run, and because of this it sees that both the left file and right file have been modified.
The example above highlights that the update (or not) to the synchronization database (in step 4) is the reason for the differences.
### Renaming Case Changes
What does **a change in case** actually mean? Case means upper case or lower case. A file called **abc**, for example, has the same name but different case from a file called **ABC**. In most situations it doesn't matter if the case is different. For example, although Windows keeps the case of a filename it doesn't care if a file is called **abc** or **ABC**. To Windows, and all programs running in Windows, they are the treated as the same name. On Windows you cannot have a folder with a file called **abc** and a file called **ABC**. Windows is not case sensitive.
However, in some situations the case does matter and is important. For example, if files are being stored on a UNIX or Linux system, e.g. via an FTP server, then a file called **abc** is different from a file called **ABC**. A directory could contain both a file called **abc** and a file called **ABC**. Cloud systems are usually case sensitive (Amazon S3™ and Microsoft Azure™ are) so would act the same way as an FTP server on a UNIX/Linux system.
When SyncBack gets a list of files it will check to see if there are files with the same name but different case. If so, an error is recorded in the log file because SyncBack can only use one of those files so the others must be skipped and ignored. For example, if there are files called **abc**, **ABC**, and **Abc** all in the same folder then two of them will be ignored and only one of them used. Which file is used? That cannot be determined or defined. SyncBack will use the first one it finds, but the order of the list of files it receives is often system dependent and could be random.
- On some file systems changing the case of a file or a folder may not work. For example, changing the name from **case** to **CASE** may do nothing. If so, this is a limitation of the file system itself.
### What if a files contents are the same but not the last modification date & time?
Let's say you have a file in the left and right, but the date & time are different, e.g. the right file is older. What happens?
- If you have a backup profile, with the default settings, then the left file is copied to the right. This is because it uses the option of what to do if the files are different, and by default a backup profile will copy the left file to the right.
- If you have a backup profile, and have enabled the option [Use slower but more reliable method of file change detection](CompareOptionsSettings.md#hashing) enabled (or the files are empty) then it will see if the files contents are the same. If not then it will copy the left to the right. If the contents are the same, then it will use the [case changed](DecisionsFiles.md#casechanged) setting to decide what to do. By default it will do nothing, but if you have set it to use the case from the left then the date & time of the left file will be set on the right file.
- For Intelligent Synchronization profiles, it will know which file had its date & time changed, and so will use the appropriate "case changed" setting to decide which date & time to use.
### What if a files contents are the same but not the files attributes?
Let's say you have a file in the left and right, but the attributes are different, e.g. the left file is read-only but the right file is not. What happens? First, by default, a profile does not compare the attributes of files to see if they're different. To compare attributes you need to go to the [Compare Options -> Attributes](CompareOptionsAttributes.md) settings page and choose which attributes you want to compare. For example, you may only care about the **hidden** and **read-only** attributes, and so would only enable comparison of those attributes. Keep in mind that some locations, e.g. FTP, don't have Windows file attributes. Also, some file systems, e.g. FAT32, don't have some attributes. In those situations SyncBack will ignore those unsupported attributes and not compare them.
In the following examples, we assume the profile has been configured to compare the attributes of files:
- If you have a backup profile, with the default settings, then the left file is copied to the right. This is because it uses the option of what to do if the files are different, and by default a backup profile will copy the left file to the right.
- If you have a backup profile, and have enabled the option [Use slower but more reliable method of file change detection](CompareOptionsSettings.md#hashing) enabled (or the files are empty) then it will see if the files contents are the same. If not then it will copy the left to the right. If the contents are the same, then it will use the [case changed](DecisionsFiles.md#casechanged) setting to decide what to do. By default it will do nothing, but if you have set it to use the case from the left then the attributes of the left file will be set on the right file.
- For Intelligent Synchronization profiles, it will know which file had its attributes changed, and so will use the appropriate "case changed" setting to decide which files attributes to use.
### Versioning
If you are using [versioning](CopyDeleteVersioning.md#whereversionskept) then you should set the profile to store versions in a sub-folder of the base folder and **not** in a sub-folder of the original file.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Decisions - Files
Define how SyncBackPro will perform its task under different circumstances.
For example, what SyncBackPro will do if the same file is in the destination but not the source.
The **Decisions - Files** page lets you tell SyncBackPro which files to copy, delete, move, or rename. If this is a new profile then these settings have already been correctly chosen for you and there is no need to change them. Which options are displayed depends on whether you have an [Intelligent Synchronization](IntelligentSynchronization.md) profile or not.
There are five different situations in which SyncBackPro must decide what action to take:
1. When there is a file (with the same name and in the same directory) that is both in the source and the destination but their contents are not the same. For example, you may have changed the file in the source.
2. When there is a file that is in the source, but not in the destination. For example, you may have deleted the file in the destination.
3. When there is a file that is in the destination, but not in the source.
4. When the files have not been changed but the case is different or the properties are different. For example, the source file may be called **abc.txt** and the destination file called **ABC.TXT**. See the [Renaming Case Change](IntelligentSynchronization.md#caserename) section for important information.
5. When the files are considered identical (based on the profile settings), i.e. the source file and the destination file are considered to be the same.
### Basic Synchronization Options
For Intelligent Synchronization profiles please see [this section](IntelligentSynchronization.md) of the help file.
### First Advanced Settings Group
- The first group of settings on this page let you decide what SyncBackPro should do for situation 1, i.e. when a file is in the source and destination, but they are not the same file:
- **Source overwrites destination always (backup):** A file from the source directory will always replace a file in the destination directory. Choose this option when doing backups.
- **Destination overwrites source always (restore):** A file from the destination directory will always replace a file in the source directory.
- **Newer file overwrites older file (synchronize):** The newer file will replace the older file, i.e. the file last modified replaces the older file. Choose this option when synchronizing directories. If the files have the same date & time then they are skipped. However, if it is an Intelligent Synchronization profile, and the dates and times are the same, and it knows which file was changed, then the changed file will replace the unchanged file.
- **Older file overwrites newer file:** The older file will replace the newer file. This is the exact opposite of the previous option. If the files have the same date & time then they are skipped.
- **Larger file overwrites smaller file (skip if same size):** The larger file will replace the smaller file (and no copy is made if they are the same size).
- **Smaller file overwrites larger file (skip if same size):** The smaller file will replace the larger file (and no copy is made if they are the same size). This is the exact opposite of the previous option.
- **Prompt me (skips file if run from command line):** If both files have been changed then you are prompted and will be able to decide what to do. Note that if SyncBackPro is run from the command line, or from the Windows Task Scheduler, then no prompt will appear and the file will not be copied.
- **Do nothing, skip the file:** In this case no file is copied and nothing is done.
- **Move the file instead of copying it:** The file will be moved from the source to the destination. Note that this option is not always available, e.g. if your profile is a Fast Backup profile.
### Second Advanced Settings Group
- The second group of settings on this page let you decide what SyncBackPro should do for situation 2, i.e. when a file is in the source but not the destination:
- **Copy file to destination:** The file is copied from the source to the destination.
- **Move file to destination:** The file is moved from the source to the destination. Note that this option is not always available, e.g. if your profile is a Fast Backup profile.
- **Delete file from source if it hasn't been modified within the last x days:** The file is deleted from the source. If the days value is greater than zero then the file is deleted from the source only if it has not been modified in that number of days. The files last modification date and time is used for the calculation. If this option enabled, and the days value is greater than zero, and you have versioning enabled, then a warning is displayed. This is for two reasons: deleted files may be kept longer than you think (as the file is not deleted for the specific number of days, then the version itself won't be deleted until the versioning requirements are met), and secondly, you may not need this option if you are using versioning. For example, you may have it set to delete a file if it has not been modified in 60 days. You may also have configured the profile to keep versions for 30 days. The lifetime of a version file is based on when the version was made and not the last modification date and time. So in this example, once the file has been deleted (because it has not been modified for 60 days) a version will be kept. That version will be kept for 30 days. So it is possible that a copy of the file is kept for up to 90 days.
- **Prompt me (skips file if run from command line):** You will be prompted on what action to take. Note that if SyncBackPro is run from the command line, or from the Windows Task Scheduler, then no prompt will appear and the file will be be ignored.
- **Do nothing, skip the file:** Nothing will be done and the file will be ignored.
### Third Advanced Settings Group
- The third group of settings on this page let you decide what SyncBackPro should do for situation 3, i.e. when a file is in the destination but not the source:
- **Copy file to source:** The file is copied from the destination to the source.
- **Move file to source:** The file is moved from the destination to the source. Note that this option is not always available, e.g. if your profile is a Fast Backup profile.
- **Delete file from destination if it hasn't been modified within the last x days:** The file is deleted from the destination. If the days value is greater than zero then the file is deleted from the destination only if it has not been modified in that number of days. The files last modification date and time is used for the calculation. If this option enabled, and the days value is greater than zero, and you have versioning enabled, then a warning is displayed. This is for two reasons: deleted files may be kept longer than you think (as the file is not deleted for the specific number of days, then the version itself won't be deleted until the versioning requirements are met), and secondly, you may not need this option if you are using versioning. For example, you may have it set to delete a file if it has not been modified in 60 days. You may also have configured the profile to keep versions for 30 days. The lifetime of a version file is based on when the version was made and not the last modification date and time. So in this example, once the file has been deleted (because it has not been modified for 60 days) a version will be kept. That version will be kept for 30 days. So it is possible that a copy of the file is kept for up to 90 days.
- **Prompt me (skips file if run from command line):** You will be prompted on what action to take. Note that if SyncBackPro is run from the command line, or from the Windows Task Scheduler, then no prompt will appear and the file will be ignore.
- **Do nothing, skip the file:** Nothing will be done and the file will be ignored.
### Fourth Advanced Settings Group
- The fourth group of settings on this page let you decide what SyncBackPro should do for situation 4, i.e. when two files have identical contents but the case of the filenames are different or the properties are different, e.g. the last modification date & time are different. See the [Renaming Case Change](IntelligentSynchronization.md#caserename) section for important information.
- **Rename file on source and copy properties to source:** The file is renamed on the source so that it becomes the same as the destination filename. If any properties are different then they are also copied to the source.
- **Rename file on destination and copy properties to destination:** The file is renamed on the destination so that it becomes the same as the source filename. If any properties are different then they are also copied to the destination.
- **Prompt me (skips file if run from command line):** You will be prompted on what action to take. Note that if SyncBackPro is run from the command line, or from the Windows Task Scheduler, then no prompt will appear and the file will be ignored.
- **Do nothing, skip the file:** Nothing will be done and the differences in filename case will be ignored. This is the default action.
- **Automatic:** The appropriate file is renamed and the properties are copied to that file. Which file is renamed? It depends on what type of backup location you are using and the type of profile you have. If you are using FTP, compressing to a single Zip file, an email server, or the cloud, then it will rename the file stored on a disk or network drive. If you are copying to and from a disk or network drive then it will rename the destination file if it's a backup or mirror to the destination. If it's a backup or mirror to the source then it will rename the source file.
- On some file systems changing the case of a file or a folder may not work. For example, changing the name from **case** to **CASE** may do nothing. If so, this is a limitation of the file system itself.
Fifth Advanced Settings Group
- The fifth group of settings on this page let you decide what SyncBackPro should do for situation 5, i.e. when two files are considered to be identical.
- **Delete from Source:** The source file is deleted.
- **Delete from Destination:** The destination file is deleted.
- **Delete:** Both the source and destination files are deleted.
- **Prompt me (skips file if run from command line):** You will be prompted on what action to take. Note that if SyncBackPro is run from the command line, or from the Windows Task Scheduler, then no prompt will appear and the file will be ignored.
- **Do nothing:** Nothing will be done. This is the default action.
### Fast Backup
If you are using [Fast Backup](FastBackup.md) then you must keep in mind that SyncBack does not scan the destination unless it is a rescan. For example, if you are using a Fast Backup profile that uses the archive attribute, and it is not a rescan, and you've configured the profile to delete destination only files, then it does not know what files are in the destination. This means if you create a new file in the destination, or delete a file from the source, then it will do nothing. If you are using a fast backup that does not use the archive attribute, and it is not a rescan, and you've configured the profile to delete destination only files, then it works slightly differently than the archive attribute method. This is because SyncBack keeps track of what files were previously in the source (which should therefore be the same as the destination). If you delete a file from the source, and there is an equivalent destination file, then it will delete the destination file. However, if you create a new file in the destination then it will not be deleted.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Decisions, Folders
These settings are related to how **empty** folders are created & deleted and how case changes are handled. Note that if a file is created then obviously its folder must also be created (to contain the file). By default it is handled automatically (based on your [file decisions](DecisionsFiles.md)). If you are using an Intelligent Synchronization profile then you are given different [options](DecisionsFolders.md#caserename) on what to do when a directories case is changed.
### What to do if a directory exists on source/left but not on destination/right
- **Create directory on destination/right:** Folders only on the source/left will be created in the destination/right.
- **Delete directory from source/left (if empty):** If the folder is empty it will be deleted from the source/left. Note that the folder will not be deleted if it has files in it, including any hidden files or file versions. You can configure which files SyncBackPro can automatically delete to make a folder empty on the [Copy/Delete Folders](CopyDeleteFolders.md#filestodeletetomakeempty) page.
- **Delete directory from source/left only if a file is moved/deleted from it:** In some cases you may only want a folder to be deleted if a file was deleted/moved from it. As above, the folder must be empty for it to be deleted.
- **Prompt me (skips folder if run unattended):** You will be prompted on what action to take.
- **Do nothing:** Nothing will be done.
- **Do nothing and ignore changes:** This option is only available for [Intelligent Synchronization](IntelligentSynchronization.md) profiles. If enabled then nothing will be done and the changes will [not be recorded](IntelligentSynchronization.md#ignorechanges).
- **Automatic:** SyncBackPro will decide the [best action](DecisionsFolders.md#automatic) to take based on your profile type. This is the default.
### What to do if a directory exists on destination/right but not on source/left
- **Create directory on source/left:** Folders only on the destination/right will be created in the source/left.
- **Delete directory from destination/right (if empty):** If the folder is empty it will be deleted from the destination/right. Note that the folder will not be deleted if it has files in it, including any hidden files or file versions. You can configure which files SyncBackPro can automatically delete to make a folder empty on the [Copy/Delete Folders](CopyDeleteFolders.md#filestodeletetomakeempty) page.
- **Delete directory from destination/right only if a file is moved/deleted from it:** In some cases you may only want a folder to be deleted if a file was deleted/moved from it. As above, the folder must be empty for it to be deleted.
- **Prompt me (skips folder if run unattended):** You will be prompted on what action to take.
- **Do nothing:** Nothing will be done.
- **Do nothing and ignore changes:** This option is only available for [Intelligent Synchronization](IntelligentSynchronization.md) profiles. If enabled then nothing will be done and the changes will [not be recorded](IntelligentSynchronization.md#ignorechanges).
- **Automatic:** SyncBackPro will decide the [best action](DecisionsFolders.md#automatic) to take based on your profile type. This is the default.
### Automatic
The decision SyncBackPro makes for the Automatic option depends upon the type of profile:
- **Backup (copying files from source/left to destination/right):** Folders only in the source/left will be created in the destination/right. Folders only in the destination/right are skipped.
- **Restore (copying files from destination/right to source/left):** Folders only in the destination/right will be created in the source/left. Folders only in the source/left are skipped.
- **Intelligent Synchronization:** Folders only in the source/left will be created in the destination/right, and vice-versa. However, if a folder was deleted from the source/left then it will be deleted from the destination/right, and vice-versa.
- **Mirror Right (copying files from source/left to destination/right, deleting files only in destination/right):** Folders only in the source/left will be created in the destination/right. Folders only in the destination/right are deleted (if empty).
- **Mirror Left (copying files from destination/right to source/left, deleting files only in source/left):** Folders only in the destination/right will be created in the source/left. Folders only in the source/left are deleted (if empty).
- **Old-style Synchronize (copying files to and from source/left and destination/right):** Folders only in the source/left will be created in the destination/right, unless files only in the source/left are being deleted. If files only in the source/left are being deleted then folders only in the source/left are deleted (if empty). Folders only in the destination/right will be created in the source/left, unless files only in the destination/right are being deleted. If files only in the destination/right are being deleted then folders only in the destination/right are deleted (if empty).
### What to do if the properties or the case of the directories are different
See the [Renaming Case Change](IntelligentSynchronization.md#caserename) section for important information. A different set of options are available if this is an Intelligent Synchronization profile. See the [section below](DecisionsFolders.md#caserename) for Intelligent Synchronization options when a directories case changes.
- On some file systems changing the case of a file or a folder may not work. For example, changing the name from **case** to **CASE** may do nothing. If so, this is a limitation of the file system itself.
- **Rename directory on source and copy properties to source:** The directory is renamed on the source so that it becomes the same as the destination directory name. If any properties are different then they are also copied to the source.
- **Rename directory on destination and copy properties to destination:** The directory is renamed on the destination so that it becomes the same as the source directory name. If any properties are different then they are also copied to the destination.
- **Prompt me (skips folder if run unattended):** You will be prompted on what action to take. Note that if SyncBack is run from the command line, or from the Windows Task Scheduler, then no prompt will appear and the changes in directory case will be ignored.
- **Do nothing:** Nothing will be done and the differences in directory case will be ignored. This is the default action.
- **Automatic:** The appropriate directory is renamed. Which directory is renamed? It depends on what type of backup location you are using and the type of profile you have. If you are using FTP, compressing to a single Zip file, an email server, or the cloud, then it will rename the directory stored on a disk or network drive. If you are copying to and from a disk or network drive then it will rename the destination directory if it's a backup or mirror to the destination. If it's a backup or mirror to the source then it will rename the source directory.
### What to do if...
See the [Renaming Case Change](IntelligentSynchronization.md#caserename) section for important information. These options are only available for Intelligent Synchronization profiles. For other profile types see the section above (What to do if the case of the directory names do not match).
- **...the properties or the directory name case of a directory on source/left has been changed (unchanged on destination/right):** The case of the source directory name or its properties have been changed so that it is no longer the same as the destination. For example, the source directory was previously called **abc** but has been renamed to **ABC**. See the [Renaming Case Change](IntelligentSynchronization.md#caserename) section for important information.
- **...the properties or the directory name case of a directory on destination/right has been changed (unchanged on source/left):** The case of the destination directory name or its properties have been changed so that it is no longer the same as the source. See the [Renaming Case Change](IntelligentSynchronization.md#caserename) section for important information.
- **...the properties or the directory name case of a directory on both source/left and destination/right are different:** The case of both the source and destination directory name or their properties have been changed and they are not the same. See the [Renaming Case Change](IntelligentSynchronization.md#caserename) section below for important information.
- **When prompting, and the run is unattended, ignore the changes:** For some of the decisions you may have chosen to be prompted. However, if the profile is being run unattended then you cannot be prompted. In this case the directory change is ignored and a [warning is recorded in the log file](Log.md#cannotprompt). With an Intelligent Synchronization profile you may want SyncBack to ignore the changes. See the [Ignoring Changes](IntelligentSynchronization.md#ignoringchanges) section for important details on what this means.
- If you get the error "**Failed to rename to** ***[new directory name]*** **: The process cannot access the file because it is being used by another process**" it is because another process is currently using the directory that needs to be renamed. For example, a program may be using a file that is in the directory that needs to be renamed. You must close the process/program that is using that directory.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# FTP
SyncBackPro uses multiple modern FTP engines that take advantage of newer FTP standards and extensions, e.g. SFTP (Pro version only), FTPS, XCRC, XMD5, XSHA1, XSHA256, MODE Z transmission compression, UTF8, MFF, RMDA and AVBL and SSL/TLS transmission encryption. This increases performance and compatibility with FTP servers.
The FTP options are not available when the destination/right is using the cloud, email, Touch, scripting, etc.
This profile settings page can use and create [shared settings](SharedSettings.md).
- An alternative to using FTP is [SyncBack Touch](SyncBackTouch.md). Touch is far simpler to setup and configure and has none of the compatibility issues that you may get with FTP servers.
## FTP Servers and File Dates and Times
When SyncBackPro transfers a file to an FTP server it will try and set the last modification date & time of the file so that it matches the date & time of the local file. However, many older or basic FTP servers simply do not provide the functions to perform this. There are standards for communicating with FTP servers, but not all FTP servers follow those standards, or they implement them incorrectly. There are also many FTP features which are optional, and one of those optional features is setting the last modification date & time of files on the FTP server. This is not a limitation of SyncBackPro, but of the FTP server.
SyncBackPro has an advanced FTP engine that will try several methods to set the last modification date & time of files on an FTP server:
1. If the server supports the **MFF** or **MFMT** extensions then those will be used (this does not apply to SFTP servers)
1. If the server supports the **SITE UTIME** extension then that will be used (this does not apply to SFTP servers)
1. If the server supports the **MDTM** extension then that will be used. Note that there are two forms of the MDTM extension: one to get a files date & time, and one to set a files date & time. Many FTP servers support retrieval of a files date & time, but fewer also support setting of a files date & time using MDTM. This does not apply to SFTP servers.
1. If the server supports none of the above then there are two options: have SyncBackPro change the date & time of the local files to match the date & time of the file on the FTP server (which will be the date & time the file was transferred to the FTP server), or change the profile to a [Fast Backup](FastBackup.md) profile. With a Fast Backup profile it will not set the date & time of the files on the FTP server, but it will avoid any problems with the dates & times being different.
SFTP servers only support one way to set a files date & time. However, some SFTP servers do not implement the feature, in which case see point 4 above.
## FTP Servers and File Permissions
When SyncBackPro uploads a new file to an FTP server the FTP server itself sets the default file permissions for the file. Typically that is 0644, which means **read & write** for the file owner, **read** for the group and **read** for other users. The default new file permissions are an FTP server setting. Refer to your FTP servers documentation to change this.
- If you use [safe-copy](CopyDeleteAdvanced.md#makesafecopies) (which is the default) then SyncBackPro uploads files to a temporary file, which means they get the default file permissions from the FTP server. SyncBackPro then replaces the existing file with the temporary file. SyncBackPro will then set the file permissions to what they were previously (if they FTP server supports the CHMOD extension). This takes time. Because of this it is recommended safe-copy is **not** used with FTP unless you need it, e.g. you are using versioning.
## FTP Servers and Filenames
Windows has restrictions on which characters can be used in a filename. It does not allow filenames to contain the following characters: * ? : " < > |
However, some systems, e.g. UNIX, have no such restrictions on which characters can be used in a filename. Because of this, when FTP is used, by default SyncBackPro will automatically convert the filenames so that they are valid for the system they are on. For example, if a file is copied from FTP which has the filename **This * is <> an example?** then when copied to Windows it will have its filename changed to **This %2A is %3C%3E an example%3F**. When the same file is copied back to the FTP server it's name will be changed back to **This * is <> an example?**
You can switch off automatic filename translation on the [FTP -> Advanced](FTPAdvanced.md#filenametrans) settings page.
The table below shows which characters are converted to and from which codes:
| **Original Characters** | **Code Used** |
| --- | --- |
| : | %3A |
| * | %2A |
| ? | %3F |
| " | %22 |
| < | %3C |
| > | %3E |
| \| | %7C |
| (trailing space) | %20 |
### FTP Server Connection Details
- **Destination/right files are on an FTP server:** If ticked, then the destination/right is an FTP server, i.e. you are backing up to or synchronizing with an FTP server. If the destination is an **SFTP** server, or an **SFTP** server (Pro version only), then enable the option **This is an SFTP server** below. If you are backing up files to a compressed Zip file on an FTP server then please read the [Fast Backup](FastBackup.md#ftpsinglezip) section for tips on getting the best results.
- **Hostname:** This is the hostname of the FTP server that has the destination directory on it, e.g. ftp.myserver.com. [Variables](Variables.md) can be used. Note that you must just use the hostname or IP address. Do not enter an URL, e.g. ftp://ftp.myserver.com/folder/
- **Enable IPV6 support:** If you can only connect to your FTP server using IPV6 then enable this option, otherwise it is not recommended to enable it.
- **Username:** Your server login username. [Variables](Variables.md) can be used. Note that typically usernames are case sensitive. If you do not enter a username then SyncBackPro will not login to the server. This may be required when using a [proxy](FTPProxy.md) server. You can use a [secret](SecretsManager.md) for the username.
- **Password:** Your server login password. If you are using an SFTP server with key authentication (Pro version only) then you can leave this blank. If you prefer to be prompted for the password (see the next option) then this edit box is disabled. Note that typically passwords are case sensitive. You can use a [secret](SecretsManager.md) for the password.
- Prompt for the password when run (profile will fail if run unattended): If this option is enabled then every time the profile is run SyncBackPro will prompt you for the password. If the profile is being run unattended, then no prompt will be displayed and the profile run will fail.
- Enable keyboard authentication: This option can only be used with SFTP. If you enable it you are strongly recommended to change your **FTP Engine** to **Chilkat**. As it is an interactive challenge, e.g. a one-time password, then if you run the profile unattended the password will be provided by default, which is often not what is required, as you cannot be prompted if unattended.
- FTP Engine: By default the **WeOnlyDo** engine is used. A number of different engines are available to provide maximum compatibility with the thousands of different FTP server implementations. The **SmartFTP** engine has been removed. Profiles that used it now use **WeOnlyDo**.
- **This is an SFTP server (port 22):** If the FTP server is an SFTP server then tick this checkbox.
- In many cases the root folder, or login folder, for an SFTP login is different from FTP. If you switch from SFTP to FTP, or vice-versa, it is strongly recommended that you check to make sure the directory is still valid. When using SFTP it is often the case that you have access to all the directories on the server, but with FTP it is typically the case that you only have access to a sub-directory that is pretending to be the root directory (for security reasons).
- **SFTP Private Key:** If you are using an SFTP server (Pro version only) with key authentication then this is the filename of the **private** key file (do not use the public key file). [Variables](Variables.md) can be used in the filename. You can use a [secret](SecretsManager.md) for the private key.
- In Windows, to create a public & private key pair for use with SFTP, simply start a **Powershell** console and use the following command (this example creates a 4096-bit RSA key pair, change the email address as appropriate): ssh-keygen -t rsa -b 4096 -C "example@your_email.com" **WeOnlyDo** does not support the OpenSSH format. Using ssh-keygen, you can create PEM (PKCS#1) format keys in two stages: ssh-keygen -t rsa -b 4096 -m PEM -f id_rsa.pem The above creates two files: **id_rsa.pem** – RSA private key in traditional PEM format. This is the file you use in SyncBackPro. **id_rsa.pem.pub** – Public key in standard OpenSSH public-key format (for use on the SFTP server). If your SFTP server cannot use OpenSSH format, then to export the public key in PEM (PKCS#1) format: ssh-keygen -f id_rsa.pem -e -m PEM > id_rsa_public.pem
- **SFTP Private Key Password:** If the private key file requires a password to be used then enter the private keys password here. You can use a [secret](SecretsManager.md) for the password.
- **If the FTP server cannot set a files date & time then change the local files date & time to match that on the server:** SyncBackPro will force the date & time of the file on the FTP server to match that of the file on your PC. **If it cannot set the time of the file on the server, and this option is ticked, then it will change your local files date and time.** However, if this option is not ticked (the default) then the date and time of the file on the FTP server is not changed and neither is the local files date & time. If the FTP server cannot set a files date & time, and you do not want to change your local files dates & times, then the solution is to use a [Fast Backup](FastBackup.md) profile.
Once all the appropriate FTP settings have been set, you can test them by clicking the **Test FTP settings** button. SyncBackPro will then attempt to connect and login to the FTP server with its progress being shown in the window below the button.
### SFTP and Keys
There are two possible sets of keys used when connecting to an SFTP server:
1. If your SFTP server is configured to perform user validation using keys then you need to create a public and private key pair (using **ssh-keygen** in Powershell in Windows (see above) or using 3rd party software, e.g. Putty). You must upload the **public** key to the SFTP server and configure the SFTP server to use it. Check the documentation of your SFTP server for details. For your SyncBackPro profile you must set it to use the private key you created. The public key stays on the SFTP server and is not used by SyncBackPro (your SFTP server uses it).
2. To ensure you are connecting to the correct SFTP server then you can set the server host key in the profile. This is **not** the public key that you stored on the SFTP server and **nor** is it the public key that goes with your private key. It is the servers own public key. If you have the servers public key then you can load it directly into your SyncBackPro profile. If you do not have the servers public key (which is normally the case) then you can click the **Test FTP settings** button to get it. Whenever the profile is run it will check the SFTP servers public key to ensure it is connecting to the correct server. For reference, on UNIX based systems, the public key is usually located in the file /etc/ssh/ssh_host_rsa_key.pub. However, if you are sure you are connecting to the correct SFTP server then it is simpler and less error prone to click the **Test FTP settings** button to get it automatically.
Known supported file formats (others may also be supported):
- **WeOnlyDo**: PEM, PKCS8
- **Eldos**: OpenSSH, PEM, PKCS8 (not ECDSA)
- **DevArt**:OpenSSH (not DSA), PEM, PKCS8
- **Chilkat**:OpenSSH, PEM, PKCS8
Known supported key types (others may also be supported):
- **WeOnlyDo**: DSA, ECDSA, RSA
- **Eldos**: DSA, ECDSA (not PKCS8), ED25519, RSA
- **DevArt**:DSA (not OpenSH), ECDSA, ED25519, RSA
- **Chilkat**:DSA, ECDSA, ED25519, RSA
| | **OpenSSH** | **PEM** | **PKCS8** |
| --- | --- | --- | --- |
| **DSA** | Eldos
Chilkat | WeOnlyDo
Eldos
DevArt
Chilkat | WeOnlyDo
Eldos
DevArt
Chilkat |
| **ECDSA** | Eldos
DevArt
Chilkat | WeOnlyDo
Eldos
DevArt
Chilkat | WeOnlyDo
DevArt
Chilkat |
| **ED25519** | Eldos
DevArt
Chilkat | Eldos
DevArt
Chilkat | Eldos
DevArt
Chilkat |
| **RSA** | Eldos
DevArt
Chilkat | WeOnlyDo
Eldos
DevArt
Chilkat | WeOnlyDo
Eldos
DevArt
Chilkat |
**Further reading:** [An Introduction to FTP](https://www.2brightsparks.com/resources/articles/an-introduction-to-ftp.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# FTP, Advanced
- **Port:** The port number of the FTP server. Most FTP servers use port 21, except when using Implicit SSL/TLS encryption in which case most FTP servers use port 990. Most SFTP servers users port 22. If you set the port number to zero then the default port will be used based on the settings.
- **Reconnect Attempts:** Whenever the connection to the FTP server is lost, for whatever reason, SyncBackPro will reconnect and resume from where it left off. This is done in the background and does not require any user intervention. This setting specifies the number of attempts SyncBackPro should make to reconnect to the FTP server before it gives up. Note that this number refers to sequential attempts, not the total number of attempts that may be made over the entire profile run (i.e. once a reconnection is made the attempt counter is reset back to zero). This value is also used for the initial connection attempt, so if it is set to 1, and no connection can be made, then the profile will fail instead of trying again.
- **Seconds Between Attempts:** The number of seconds SyncBackPro should pause before making another attempt to reconnect to the FTP server.
- **Read timeout (seconds):** In some situations, e. g. when the connection is dropped, an FTP server may not respond to requests from SyncBackPro. This setting tells SyncBackPro how long to wait (in seconds) for an answer from the server whenever one is required. By default SyncBackPro will wait for 60 seconds before disconnecting and reconnecting to try again.
- **Scan threads:** When SyncBack scans an FTP server, to see what files and folders are there, it does it one folder at a time on a single connection. This reduces the load on the FTP server, and in some cases, FTP servers only allow one connection at a time from a user. However, if you are allowed multiple simultaneous connections to an FTP server, and server load is not an issue, then you can configure SyncBack to use multiple connections to scan the FTP server. This can drastically reduce the scanning time, but results can vary. You will get the best results when you have multiple folders. Multi-threaded FTP scanning will not improve performance if you are only scanning the contents of one folder that only contains files. You can think of this setting as how many simultaneous (concurrent) connections (not including the main connection) there will be to the server when scanning. The maximum number of threads is 32.
- [CompleteFTP](https://enterprisedt.com/products/completeftp/doc/guide/html/howtolistfoldertree.html) (Professional and Enterprise Editions V12.1.0 or newer) includes a feature to enable single-call directory scanning (see the **Folder-tree file** setting in the **Details** section of CompleteFTP). SyncBackPro will automatically use this feature if it is available, resulting in considerably faster scanning of the FTP server.
- **Worker threads:** Performance can be significantly improved by using multiple worker threads. A worked thread is basically another connection to the FTP server which is used to delete, upload and download files in parallel (at the same time). If you are using SFTP, and not using wodFTP, then it will also automatically upload and download large files in chunks if this value is greater than 1. Increasing this value too high can slow down the profile (the maximum number of threads is 64) and also use a significant amount of memory (if Chilkat is being used). It is also likely that the FTP server has a limit on the number of connections a user can have. Note that in some circumstances SyncBackPro will not use worker threads, e.g. if [runtime scripts](RuntimeScripts.md) are used. You can think of this setting as how many simultaneous (concurrent) connections (not including the main connection) there will be to the server when downloading, uploading and/or deleting files.
- If you're using worker threads and the Chilkat FTP engine, then be aware of possible high memory usage. SyncBack will use approximately 20MB per worker thread if 32-bit, or 50MB if 64-bit. This only applies to Chilkat. Other FTP engines use the file system and not memory.
### Concurrent Download
If you are using the Eldos FTP Engine, and are not using SFTP, then you can use concurrent downloads. If the **Threads** value is greater than 1 then files larger than the **Minimum size** will be downloaded using multiple threads. This feature is useful when downloading multiple large files. This setting is different from **Worker threads** as that downloads multiple files at the same time where as this setting downloads a single large file using multiple threads. If concurrent downloads is used along with worker threads then files that will be downloaded concurrently will not be downloaded in worker threads. Note that this feature may not improve performance and may actually reduce it. It is only useful where the FTP server limits the outgoing bandwidth per connection.
- **Threads:** The number of concurrent threads to use. The minimum and default value is 1 (meaning concurrent downloads will not be used), with the maximum being 10.
- **Minimum size:** Files this size or larger (MBytes) will be downloaded concurrently. The minimum and default value is 5.
### Encryption and compression options
Note than none of these options are available when using an SFTP server as they are not applicable.
- **Encrypt the communication channel:** If enabled the communication channel will be encrypted (FTPS). This means that all commands sent to and received from the server will be encrypted, e.g. the password is encrypted. Note that this does not encrypt any file communication. For that you need to enable the option **Encrypt the data channel**. If the FTP server does not support encryption then this option and all the encryption settings are ignored.
- If you're using FTPS with a scheduled profile then the schedule must be set to use a password.
- **Client certificate to use:** If FTP encryption is being used then you can use this setting to specify which certificate SyncBack should use (or if one should be used at all). The certificate list is taken from the Personal certificates installed on the computer.
- **Encrypt the data channel:** If enabled the data channel will also be encrypted. Note this will significantly slow down the profile. For the data channel to be encrypted you must have the communication channel encrypted.
- **Use implicit connection (port 990):** If enabled an implicit SSL connection will be made (most FTP servers use port 990 for implicit connections). If disabled, an explicit SSL connection is made (most FTP servers use the standard FTP port 21 for explicit connections). This option is not available when using an SFTP server.
- **Do not fallback to an unencrypted connection:** By default if SyncBack cannot connect to the FTP server using an encrypted connection then it will fallback to an unencrypted connection. However, if you want the connection to only be encrypted then enable this option.
- **Reduce bandwidth by using compression (MODE Z):** To increase performance on slower networks enable this option. It will transmit data to and from the server in compressed form to reduce the send and receive time. Note that this option requires that the FTP server supports the MODE Z FTP extension. If not, this option will be ignored. Also note that enabling this option when the FTP server is on a LAN will actually decrease performance.
- **SFTP Host Key:** If you are using an SFTP server (Pro version only) then this is the MD5 fingerprint of the servers public key (it is not the public key related to your login private key). If you have the servers public key then you can load it to have it set. If you do not have the servers public key (which is normally the case) then you can click the **Test FTP settings** button and accept the public key that is received from the SFTP server. Whenever you connect to the SFTP server then SyncBackPro will check to make sure that the public key received by the SFTP server is the one expected. If not you will be prompted to either accept it or not. If the profile is run unattended then the profile will abort if they do not match. If you have not set a public key then the profile will prompt, or if run unattended it will continue running the profile. If you have the servers public key in a file then you can load it by clicking the folder icon. It is important to remember that this public key (the host identity key) is not related to the private key or user specific. All users connecting to the SFTP server get the same public key from the server. Please see the [SFTP and Keys](FTPSettings.md#sftpkeys) section for more details.
- DSA keys are a legacy key type that modern SSH servers no longer accept. Use an Ed25519 (Chilkat engine only), ECDSA or RSA key instead.
### Misc.
- **Limit bandwidth usage to…:** This option lets you restrict the amount of bandwidth used for the FTP connection. For example, you may also be using the network for other things the same time the profile is run and do not want the profile to use all available bandwidth on the network. The option is not available for all FTP engine types.
- **Quote Character:** If your FTP server supports wrapping quotes around filenames, e.g. if they have spaces, then enter the quotation character here. If your FTP server does not require or support quoting (most do not) then leave this empty. In most cases uses any value here will cause problems. This option is not available when using SFTP.
- **Server timezone:** If the FTP server is in a different timezone then enter the number of minutes difference from GMT/UTC, e.g. +120 (meaning 120 minutes ahead of GMT/UTC), -60 (meaning 60 minutes behind GMT/UTC). SyncBackPro will ignore this setting if the FTP server reports the timezone it is in. However, you can force SyncBackPro to use this setting by prefixes an exclamation mark, e.g. !+120. Generally you do not need to enter a value, but in case the FTP server is incorrectly changing the date & times of files then you can correct it here. This option is not relevant and is ignored if your FTP server supports the **MFMT** or **SITE UTIME** extensions. See also the **MDTM syntax** and **Self-correct** settings. This option is not available when using SFTP.
- **Use Unicode (UTF8):** This setting tells SyncBackPro to either use or not use the UTF8 extension on the FTP server. Some FTP servers do not correctly support UTF8 so you may wish to tell SyncBackPro not to use it. Also, some FTP servers do support it but don't tell FTP clients that they can and do support it.
- **MDTM syntax:** In most situations it's best to leave this setting as **Default**. However, some FTP servers may require that a different command format be used. The **MDTM** command is used to set the last modification date & time of a file on the FTP server. This option is not relevant and is ignored if your FTP server supports the **MFMT** or **SITE UTIME** extensions. See also the **Server timezone** and **Self-correct** settings. This option is not available when using SFTP.
- Do not use MLST and instead use LIST (not recommended): Modern FTP servers support more advanced methods of returning directory listings (via the MLST command). Such listings have a defined format that is designed for machine parsing. Older FTP servers often only support the old method of returning directory listings (via the LIST command, which is designed to be human readable and so is difficult to parse and often contain less information). In rare cases the output from the MLST command is invalid or corrupted and so cannot be used by SyncBack. If so, try enabling this option (and also see the following two settings). This option is not available when using SFTP.
- Use custom LIST command (not used if server uses MLST): When requesting directory listings from the FTP server, and the LIST command is being used, then you can optionally define the LIST command to be sent to the FTP server. By default the command is **LIST -la**. This option is not available when using SFTP. When using **DevArt** and **Chilkat** this must be the parameters to send to the LIST command and cannot be a different FTP command. If the custom command you use is prefixed by LIST then it will be automatically removed. For example, if you use the custom command **XYZ -123** then **LIST XYZ -123** is sent to the FTP server.
- Use alternative file list parser: If SyncBackPro is unable to parse the directory listings, e.g. the FTP server is old or rare, then try enabling this option. If enabled SyncBackPro will try other parsers to see if it can read the directory listings. It will also use the **Server timezone** setting with any file modification dates & times (unless MLST is being used). This option is not available when using SFTP.
- **Self-correct when setting a files date and time:** Unfortunately many FTP servers do not set the correct date & time of a file, e.g. they incorrectly assume the date & time given to them is a local date & time. To avoid these kinds of problems you can ask SyncBackPro to check to see if the server is setting the dates & times correctly, and if not, to compensate. Note, however, that this is not always possible (it will not work on some old or basic FTP servers).
- **Server requires Allocate command:** Some (old) FTP servers require that the FTP client reserve disk space before transferring files to the server. In general, the majority of FTP servers do not require or support this. This option is not available when using SFTP.
- **Force binary transfers:** To increase performance SyncBackPro will not tell the FTP server it wants to transfer files in binary mode before every file is transferred. If this option is not enabled (default) then it will tell the FTP server to use binary mode immediately after the connection is made, and it will not tell it again. If this option is enabled then SyncBackPro will force the FTP server into binary mode before every file transfer. This will increase profile run times but may be required for some FTP servers. This option is not available when using SFTP.
- Use the HOST command as this is a virtual host: Some FTP servers, usually when using the Microsoft IIS FTP server, are virtual hosts, meaning the server hosts multiple web sites. In this case, when SyncBackPro connects to the server it needs to tell the FTP server which host it needs to use (by using the [HOST command](http://tools.ietf.org/html/draft-hethmon-mcmurray-ftp-hosts-02)). By default, this option is not enabled, and if it is enabled, and the server is not a virtual host, then it may stop SyncBackPro from connecting. This option is not available when using SFTP.
- Automatically translate invalid filenames: By default SyncBackPro will translate filenames so they are compatible with Windows file systems. See [this section](FTPSettings.md#filenametrans) for details.
- Force SFTP V3: By default SyncBackPro will use the highest available version of SFTP that the SFTP server supports. Enabling this option will instead tell SyncBackPro to use V3, which can help resolve issues, e.g. with SFTP extensions. This option is only available when using **SFTP** and the WodFTP engine is **not** being used.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# FTP, Proxy
- **I use a proxy server:** If you must use a proxy server to connect to external FTP or SFTP servers then you must enable this option.
- **Hostname:** This is the hostname of the proxy server, e.g. proxyserver.com. [Variables](Variables.md) can be used.
- **Username:** Your proxy login username. If you do not need to login to your proxy server then leave this blank. [Variables](Variables.md) can be used.
- **Password:** Your proxy login password. If you do not need to login to your proxy server then leave this blank.
- **Port:** The port number of the proxy server. This value varies depending upon the type of proxy server software used. Although "1" is the default, it will almost certainly not be this number.
- **Proxy Type:** This setting defines what type of proxy server you are using. It is important the correct setting is used otherwise SyncBackPro will not be able to login to your proxy server. Check with your Network Administrator on which proxy setting to use. This setting may not be available, depending on the FTP engine being used. Note that the choice of proxy server types is more limited when using SFTP because some proxy servers are not applicable to SFTP.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# FTP, Firewall
Note that none of these settings are available when using SFTP as they are not applicable.
- **Passive:** If you are behind a firewall then you may need to enable this option. If SyncBack can login to the FTP server, but cannot transfer files or retrieve a folder listing, then try enabling this option to see if it fixes the problem. Passive FTP connections mean that the FTP client (SyncBack) connects to a TCP/IP port opened on the server when transferring data. Active connections (i.e. not passive) mean that the FTP server connects to a TCP/IP port opened on computer running the FTP client (SyncBack) when transferring data. So with an active connection you need to configure your firewall to allow inbound connections. The settings below relate to that.
- **Try to keep the connection alive during file transfers:** Unless you are using the Chilkat FTP engine, **it is not recommended that this option is used.** This option is not available when using the DevArt FTP engine. Use of this option with many FTP servers can cause odd errors (because the commands sent to the FTP server, and the replies given by it, can become "out of sync"). For all FTP engines except Chilkat, if this option is enabled then when files are sent to, or received from the FTP server, a **NOOP** command is sent to the FTP server every 30 seconds. In some rare cases this can stop the FTP server from assuming the connection has been broken during long file transfers. However, in the majority of cases the use of this option instead causes more problems. When using Chilkat, it works differently. If enabled, and when uploading large files (over 300MB in size), then the file is uploaded in 100MB chunks. Using this method it is hoped the FTP server will not disconnect due to perceived idle time. If the connection is very slow, then it may not help. Also, more memory is required (100MB) to temporarily hold the data.
- **Use Clear Command Channel (CCC):** Choose this option if you are behind a firewall or router that uses NAT (Network Address Translation) and you are having connection problems. Some routers can dynamically change the FTP communication to translate I.P. addresses but this can only be done if that part of the FTP communication is not encrypted. This setting is only used with encrypted connections.
- **For passive connections, always use the servers IP address:** This option is only available with passive connections. By default, the IP address returned in the PASV reply is used to communication with the server. However, if this option is enabled the IP address of the connection is used. This is useful when the FTP server has not been configured correctly for passive connections and is returning its LAN IP address instead of its Internet (External) IP address.
- **Port mode for active connection:** This option is only used with active (not passive) connections (see above). If you are behind a router, and are using NAT (Network Address Translation), then you may need to specify your external I.P. address. There are three choices: default, manual and automatic. Default means the I.P. address of your computer is used. This is very likely to be wrong, but it is possible your router will try to automatically fix this. Manual means you specify the I.P. address to use (see the **External I.P. address** setting below). Automatic means it will try and determine what your external I.P. address is by querying your router (if it's UPnP enabled), and if that fails it will use an external web site to retrieve it. This setting is not available with all FTP engines.
- **External I.P. address:** This option is only enabled if it is an active (not passive) connection and the port mode is set to **manual**. This is usually the I.P. address of your router and is not a local I.P. address. [Variables](Variables.md) can be used. Also, it is not available with all FTP engines.
- **Use ports ranging from...:** If you are behind a firewall then this is the range of TCP ports that you must open on your firewall to allow the FTP server to contact SyncBack. If the ports are not open then files cannot be transferred and directory listings will fail. This option is only used with active connections (because with a passive connection the FTP server must be configured to specify which ports it tells the FTP client, SyncBack, to use). Also, it is not available with all FTP engines.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# FTP, HTTP
These options are not available if [compression](CompressionSettings.md) is being used.
It is common to use Content Delivery Networks (CDN's) like Cloudflare, Akamai, Amazon CloudFront, etc. These are used, amongst other things, to cache content so the overall performance of a web site is improved.
If you are downloading files from an FTP/FTPS/SFTP server (from here on we will just state FTP), which also hosts a web server (e.g. Apache), then it is possible to have SyncBack retrieve the files from the web server instead of the FTP server. When there is a web cache server (e.g. a CDN) between the computer running SyncBack and the web server, then download performance can be greatly improved.
When this option is enabled and configured, it works like this:
- SyncBack scans the FTP server as per normal.
- When a file is to be downloaded from the FTP server, it checks if it is a file that can be served by the web server. This is achieved by specifying the base folder of the web site on the server, e.g. **/var/www/mywebsite.com/**
- If the file to be downloaded is one the web server can access, then SyncBack asks the web server for details on the file, e.g. it's size and last modification date and time.
- If the web server can provide the file, and the size and last modification date and time match what the FTP server says they are, then SyncBack will download the file using HTTP/HTTPS from the web server and not by using FTP
- If there is a cache then it is often considerably faster to download the file using HTTP/HTTPS than using FTP
- If that fails, or the size or date don't match, then SyncBack falls back to downloading the file from the FTP server as per normal
You can configured what the minimum file size should be for it to use HTTP/HTTPS, and also what types of files (based on their filename extension) should be downloaded. For example, you should not download HTML or PHP files from the web server as they will not be the actual file contents.
### Settings
- Download files using HTTP: If ticked, then files can be downloaded from the specific web server.
- Web server URL: This setting specifies the URL to download the file from (e.g. **https://www.mywebsite.com/**). Basic AUTH is supported (e.g. **https://*username*:*password*@www.mywebsite.com/**). It must match the **Web server base path** setting. For example, if you only want to download files from the web server that are in a specific sub folder, e.g. **/assets/software/**, then the URL should include that, e.g. **https://www.mywebsite.com/assets/software/**
- Web server base path: This is the path on the server that the web server delivers files from. It must be relative to the base/root folder of your FTP account. For example, if your FTP account can access all the folders on the web server (so it's base/root path is **/**) then you would specify the path of the web site files relative to the root (**/**), e.g. **/var/www/mywebsite.com/**. If, for example, your FTP user accounts base/root folder is **/var/www/**, then your web server base path would be **/mywebsite.com/**
- Ignore files less than x MB in size: By default, files under 5MB in size will not be downloaded using the web server. Depending on the performance on your FTP server, network connection, cache server, etc. there will be no benefit in downloading small files from the web server.
- HTTP filter: Click this button to specify which files can and cannot be downloaded from the web server. By default .exe, .zip, iso, and .pdf files will be downloaded, but all other file types will be ignored.
The log file and [profile history](SimpleHistory.md), after the profile is run, will specify how many files were downloaded using HTTP. If none were downloaded then there will be no entry in the log file specifying the number. There is also a variable (**%HTTPDOWNLOAD%**) that can be used.
HTTP/HTTPS will not be used to download any [Ransomware detection](SetupRansomware.md) files.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Cloud
You are strongly advised to use a [linked cloud account](LinkedCloudAccounts.md). This profile settings page can also use and create [shared settings](SharedSettings.md).
SyncBackPro can backup and synchronize files with the following cloud storage services:
- Amazon S3™ (and files stored on [Glacier](Cloud.md#glacier)™ via Amazon S3, as well as storage types such as One-Zone Infrequent Access). S3 compatible services include Cloudflare R2, Storj, DreamObjects, S3ForMe, Dunkel, HiCloud, Wasabi, Oracle, IDrive, IBM, Contabo and others.
- Backblaze™ B2
- Box
- Citrix ShareFile™
- Dropbox™ (including support for Dropbox Business)
- Egnyte™ ([deprecated](Egnyte.md))
- Google Drive™ (including support for Team Drives)
- Google Storage™
- Microsoft Azure™ Blob Storage (including support for Hot, Cool and Archive Tiers)
- Microsoft OneDrive™
- Microsoft OneDrive for Business (Office 365)
- Microsoft SharePoint™ (Office 365)
- OpenStack compatible services, e.g. Rackspace™
- OVH™ (via Rackspace/OpenStack)
- pCloud™
- SugarSync™
- WebDAV
This means your files will be securely stored on their servers, and having an offsite backup of your files is highly recommended. Before you can use this feature you must create an account on the relevant cloud storage service. Once you've created an account you will receive your account details which you will need to use their service.
There are some cloud services which are compatible with Amazon S3. To use such a service with SyncBackPro you simply need to set the **Cloud Service** and **Service URL** as appropriate.
If you want to download files from a web server, using HTTP, see [HTTP](SetupHTTP.md).
- **Important:** It is highly recommended that you use a [linked cloud account](LinkedCloudAccounts.md) when using cloud services. This is especially important if you're using **Box**™. The exception to this is when using multiple profiles in parallel with the same Egnyte (deprecated) account (see below for details).
- Destination/right files are on a cloud storage server: If ticked, then the destination/right is a compatible cloud storage service, i.e. you are backing up to or synchronizing with a cloud service.
### Server Connection Details
- **Cloud Service:** Select the appropriate type of cloud storage service that is to be used.
- **The cloud service forces file versioning:** Some cloud services forcibly enable their own file versioning. Click this link to go to the [Versioning](CopyDeleteVersioning.md) settings page to configure automatic purging of excess versions files.
- S3 compatible service: If you are using an S3 compatible cloud storage service, e.g. DreamObjects, S3for.Me, Oracle Cloud, etc. then tick this checkbox. This switches off certain features that are usually only available on the Amazon S3 servers themselves.
- Use Identity V3 API (required for some OpenStack services): If you are using an OpenStack compatible cloud storage service then you may need to tick this checkbox. Check with your cloud service if you are not sure.
- Use my Dropbox Teams root folder (only valid when using Dropbox Business): If you are using **Dropbox Business**, and want SyncBackPro to copy files and folders from your teams root folder (instead of your home folder), then select this option. Note that your home folder is a folder within your teams folder. Your home folder typically contains only your personal files and folders, whereas the teams root folder has your home folder as well as team folders (which are folders shared between members of your team). If you change this setting then the cloud database will be deleted. You will also need to change your [file & folder selections](SubDirectoriesandFiles.md).
- Ignore OneNote files: If you are using **OneDrive Personal, OneDrive for Business or Sharepoint**, and want SyncBackPro to ignore OneNote files stored on the cloud storage service, then select this option.
- **Service URL:** If you are using **Amazon S3** or **Microsoft Azure** then it is recommended that you leave this setting as **[default]**. You only need to change this setting if you are using a service which is compatible with Amazon S3 or Microsoft Azure. For example, DreamObjects is an S3 compatible service. In these cases you must use the URL supplied by the compatible service (otherwise it would connect to the Amazon or Microsoft servers). If you are using **OpenStack** then you must enter the services Identity V2 URL (the authorization URL). If you are using **Microsoft Azure**, and want to use a **Shared Access Signature (SAS)**, then supply it here. Note that it must include the container.
- **Site Path / Domain:** If you are using **SharePoint**, and you want to access a path or sub-site within your site, then enter the path to it here. For example, if you want to access *https://mycompany.sharepoint.com/path/to/destination* then enter **path/to/destination**. Another example, if you want to access *https://mycompany.sharepoint.com/subsite* enter **subsite**. This setting is optional, and if you don't want to access a path or sub-site, then you should leave it as **[default]**. For Egnyte (deprecated), you need to supply your domain name (not the entire URL, e.g. **mydomain** and not **mydomain.egnyte.com)**.
- **Project ID:** If you are using **Google Storage**, then enter the project ID here. You can retrieve your project ID from your Google Storage console.
- **Tenant / Project:** If you are using an OpenStack compatible cloud service then you may need to specify a tenant/project. Check with your cloud service if you are not sure.
- **Username / Access Key ID / Account Name / Account ID:** Depending on the cloud service, this is essentially the cloud login username. On Amazon S3 this is called the access key you want to use to connect to the S3™ service. Microsoft Azure™ calls this the account. This setting is not relevant for some cloud services, e.g. Google Drive™. For those cloud services you should use a [linked cloud account](LinkedCloudAccounts.md) or click the **Authorize** button. For non-OAuth cloud services, e.g. Amazon S3, you can use a [secret](SecretsManager.md) for the username.
- With Google Storage you can use a Service Account Private Key file instead of OAuth authentication. This is recommended as it allows for parallel file transfers.
- **Password / Secret Access Key / Primary Access Key / API Key / Application Key / Access Token:** Depending on the cloud service, this is essentially the cloud login password. On Amazon S3 this is called the secret key. Microsoft Azure calls this the access key. You can optionally have SyncBackPro prompt you for the password instead of entering it here. This setting is not relevant for some cloud services, e.g. Google Drive™. For those cloud services you should use a [linked cloud account](LinkedCloudAccounts.md) or click the **Authorize** button. For non-OAuth cloud services, e.g. Amazon S3, you can use a [secret](SecretsManager.md) for the password.
- **Prompt for the password when run (profile will fail if run unattended):** If this option is enabled then every time the profile is run SyncBackPro will prompt you for the password. If the profile is being run unattended, then no prompt will be displayed and the profile run will fail. This setting is not relevant for some cloud services, e.g. Google Drive™.
- **Use encrypted (https) connection:** If this option is enabled then all communication with the cloud servers is encrypted. This does not mean the files are encrypted, it means that all the communication is encrypted. Note that encrypting the connection may reduce performance. If you want to store your files encrypted you must use the [encryption settings](CompressionSettings.md). This setting is not relevant for Google Drive™, OneDrive™, Dropbox™ or Box because an encrypted connection is always used.
- **Use my account:** This button is not relevant for some cloud services, e.g. Amazon S3™. For the other cloud services (e.g. Google Drive™) then by clicking this button you are setting the profile to use your [linked cloud account](LinkedCloudAccounts.md).
- **Authorize:** This button is not relevant for some cloud services, e.g. Amazon S3™. For the other cloud services (e.g. Google Drive™) you must click this button to allow SyncBackPro to connect to your cloud service. Depending on the cloud service you'll need to login to your cloud service via a web browser then enter an authorization code into SyncBackPro. It is strongly recommended that you use a [linked cloud account](LinkedCloudAccounts.md).
- **Delete DB:** This button is not relevant for some cloud services, e.g. Amazon S3. SyncBackPro keeps a local (and [optionally remote](CloudAdvanced.md#uploaddb)) database for storing the details of the files on the cloud service. This database is used to store details that cannot be stored on the cloud service. For example, some cloud services do not allow the last modification date & time of a file to be changed. To get around such limitations SyncBackPro keeps a record of what those details are. By clicking this button SyncBackPro will delete the local and remote database. This means you will lose all the details stored in that database and so the next profile run may result in files being copied or deleted as the information to make those decisions has been deleted.
- **Bucket / Container / Library / Team Drive:** On many of the enterprise cloud services, e.g. Amazon S3, all files must be stored within a **bucket**. Microsoft Azure has the same concept but calls it a **container**. Google Drive can optionally use a **Team Drive** (part of GSuite). SharePoint also uses **Libraries**, which are optional. You can have multiple buckets/containers (like you can have multiple drives on a computer) but a profile can only backup/sync with one bucket/container (other profiles can of course use other buckets/containers). An Amazon S3 bucket name must be globally unique (meaning nobody else can use the same bucket name). A Microsoft Azure container name does not need to be globally unique. Buckets/containers need to adhere to some naming restrictions (these are restrictions of the service and not of SyncBackPro):
Amazon S3 bucket naming rules for buckets created outside of the **US Standard** location are:
- Must be globally unique, i.e. you cannot have the same bucket name as someone else
- The maximum length is 63 bytes and the minimum length is 3 bytes
- Must start with a lowercase letter or a number
- Can only contain lowercase letters, numbers, periods (.), and dashes (-)
- Cannot contain consecutive periods, e.g. a bucket cannot be called **bad..name**
- Cannot contain a dash next to a period, e.g. a bucket cannot be called **bad.-name**
- Must end with a lowercase letter or a number
- Must not be formatted as an IP address (e.g., 192.168.5.4)
Amazon S3 bucket naming rules for buckets created in the default **US Standard** location have more relaxed bucket naming rules (see below). However, it is strongly recommended that you stick to the stricter naming rules as it gives you greater flexibility and compatibility with name servers, web sites, other utilities, etc.:
- Must be globally unique, i.e. you cannot have the same bucket name as someone else
- The maximum length is 255 bytes and the minimum length is 3 bytes
- Can only contain letters (upper or lower case), numbers, periods (.), dashes (-), and underscores
Microsoft Azure container naming rules are:
- The maximum length is 63 bytes and the minimum length is 3 bytes
- Must start with a lowercase letter or a number
- Can only contain lowercase letters, numbers, dashes (-), and underscores
- Cannot contain consecutive dashes, e.g. a container cannot be called **bad--name**
- Should not end with a dash, e.g. a container cannot be called **bad-name-**
Backblaze B2 bucket naming rules are:
- Bucket names are globally unique. This means if another B2 user has created a Bucket named for example **myphotos**, then you cannot create a Bucket named **myphotos**
- Each Backblaze B2 account can have a maximum of 100 Buckets.
- Bucket names must be a minimum of 6 characters long and a maximum of 50 characters long.
- Bucket names can be consist of numbers (0-9), letters (a-z) and the "-" (dash). No other characters are valid, including "_" (underscore).
- Bucket name are case insensitive, meaning that "MYPhotos" is the same as "myphotos".
- Bucket names that start with "b2-" are reserved by Backblaze and cannot be used
Google Storage bucket naming rules are:
- Bucket names must contain only lowercase letters, numbers, dashes (-), underscores (_), and dots (.). Names containing dots require verification.
- Bucket names must start and end with a number or letter.
- Bucket names must contain 3 to 63 characters. Names containing dots can contain up to 222 characters, but each dot-separated component can be no longer than 63 characters.
- Bucket names cannot be represented as an IP address in dotted-decimal notation (for example, 192.168.5.4).
- Bucket names cannot begin with the "goog" prefix.
- Bucket names cannot contain "google" or close misspellings of "google".
- Also, for DNS compliance and future compatibility, you should not use underscores (_) or have a period adjacent to another period or dash. For example, ".." or "-." or ".-" are not valid in DNS names.
For **Google Drive**, you must use the Google web interface to create **Team Drives** (which are optional and part of the **GSuite** service). For **SharePoint** you must use the relevant Microsoft tools (or web services) to create **Libraries** (which are optional).
- On Amazon S3, it is possible to restrict a user from listing all the buckets. If so when you click the **Refresh** button then you will get an **Access Denied** error message. To manually add the bucket to the list right-click on the Bucket/Container list and select **Add bucket** from the pop-up menu. You can then manually type in the name of the bucket you want to use. Note that S3 is case sensitive so you should double-check that you have typed in the bucket name correctly.
### Empty folders and Amazon S3, Azure, Backblaze B2, OpenStack and Google Storage
Cloud storage services Amazon S3, Microsoft Azure, Backblaze B2, OpenStack (Rackspace) and Google Storage, store files as objects. Each object has a unique name within its bucket or container. For easy reference, objects are named just like files on a local file system, e.g. **\My Documents\Bank\statement.txt**. The key difference is that the objects are not stored in folders, although they look like they are, and these cloud systems do not have folders.
For example, you could have an object called **\Level1\Level2\file.txt** and another one called **\Level1\Level2**. They have no relationship to each other. You could delete **\Level1\Level2** and **\Level1\Level2\file.txt** would still exist. Also, if you have an object called **\Level1\Level2\file.txt** it does not mean there is a folder **\Level1\Level2** or **\Level1**. Some services give the impression, via their web interface, that you can create folders, but what they actually do is create empty objects to make it appear there is a folder.
Because of this some options in SyncBackPro are not available when using these cloud systems. For example, you cannot [create empty directories](DecisionsFolders.md).
### Amazon S3 Bucket Names and Locations
Files within a bucket can be accessed via a web browser, so you may want to keep this in mind when deciding on a bucket name (i.e. use the stricter naming rules). For example, if you created a bucket called **companyname.com** then you could access the files in that bucket using the URL **http://companyname.com.s3.amazonaws.com/filename**. By default files created in a bucket cannot be accessed via a browser because the default access policy is **private**. You can change this on the [advanced](CloudAdvanced.md) settings page.
Another important factor is that buckets are location dependent, which means the files in a bucket are physically located in a specific place. When you create a bucket you can choose its physical location. Obviously performance is going to be affected by where you are accessing the files in the bucket from and where the bucket is located.
### Amazon Glacier and Azure Archive objects
Amazon S3 allows for objects to be moved to Glacier. In this situation an entry for the object is kept in S3 but the actual objects contents is stored in their Glacier archival system. Glacier objects cannot be manipulated using S3. All that can be done with them is to delete them or request a temporary copy for later retrieval. The temporary copy is automatically deleted by Amazon S3 after a [user specified number of days](CloudAdvanced.md#glacier) (the original Glacier file is not deleted, just the temporary copy). As Glacier is an archival system it typically takes 3 to 5 hours for a temporary copy of the object to be retrieved.
If a file is stored on Glacier, and needs to be accessed by SyncBackPro, then a request will be sent for a temporary copy of a file. An entry will be recorded in the log file to note this. When the profile is next run SyncBackPro will check to see if the temporary copy is available, and if so, it will use it as required.
Azure has a similar feature with its archive storage class, and it is handled by SyncBackPro the same transparent way as Glacier objects, i.e. a request is made to the cloud service to restore the object from cold/archive storage.
### Google Storage
When creating a bucket in Google Storage there are three types of buckets that can be created:
- **Nearline**: A Nearline bucket is similar to Amazon's Glacier. Nearline Storage enables you to store data that is long-lived but infrequently accessed. Nearline data has the same durability and comparable availability as Standard storage but with lower storage costs. Nearline Storage is appropriate for storing data in scenarios where slightly lower availability and slightly higher latency (typically just a few seconds) is an acceptable trade-off for lowered storage costs.
- **Durable Reduced Availability**: A DRA bucket is similar to Amazon's Reduced Redundancy Storage. Durable Reduced Availability Storage enables you to store data at lower cost, with the trade-off of lower availability than standard Google Cloud Storage. DRA storage is appropriate for storing data that is particularly cost-sensitive, or for which some unavailability is acceptable. DRA buckets can also be created in regions, i.e. there are a wider range of locations that the bucket can be created in.
- **Standard**: A normal bucket where the data is stored as per normal.
### Backblaze B2
First, it's important to understand that Backblaze B2 is not the same as the Backblaze backup service. You cannot access your Backblaze backup files using B2. Backblaze B2 is a cloud storage service, provided by Backblaze, that is similar to others like Amazon S3 and Google Storage. Although it is similar, there are some very important differences that must be considered before using it:
- B2 should be thought of as an archiving system. Once a file is uploaded to B2 it cannot be modified. You can upload a replacement file but the file existing file cannot be modified.
- Files in B2 cannot be copied, renamed or moved, which means safe copying and [versioning](CopyDeleteVersioning.md) cannot be used. However, versioning is built-into B2 and enabled by default. See below.
- The meta-data for a file cannot be changed. Meta-data is data about the file, e.g. its hash value, last modification date & time, etc. This means you cannot choose the action to use a source files details, for example.
Within the B2 web interface, you can [set the life-cycle rules](https://www.backblaze.com/b2/docs/lifecycle_rules.html) for files stored within a bucket. This gives you fine grained control over what files to keep and for how long. Within SyncBackPro you can also specify how many [versions to keep](CopyDeleteVersioning.md), with the default being 32. If set to zero then no versions are kept.
The current version of SyncBackPro cannot restore versions from B2. To do this you must use the Backblaze B2 web interface.
### Microsoft Azure $root container
The name **$root** is a special container name in Microsoft Azure. A root container serves as a default container for your storage account. A storage account may have one root container. The root container must be explicitly created and must be named $root. A blob (file) stored in the root container may be addressed without referencing the root container name, so that a blob can be addressed at the top level of the storage account hierarchy. For example, you can now reference a blob that resides in the root container in the following manner:
**http://myaccount.blob.core.windows.net/mywebpage.html**
### OpenStack and large files
When using OpenStack, and you are uploading large files (over 10MBytes), then the file will be uploaded in parts. This improves the upload and download speed and also allows larger files to be uploaded. If you are using a browser, or other software, to view your files on your OpenStack service (e.g. Rackspace), then the parts will have names like **B30D35E0-A13B-4DEB-B9C4-88ED11D7DCBE.Part1.DO_NOT_REMOVE**. Do not delete these files. If you are using [versioning](CopyDeleteVersioning.md), then these file parts remain in their original upload folder and are not moved to the versions sub-folder (**$SBV$**).
### What format are Google Docs files downloaded in?
Google Docs files stored on Google Drive do not have a defined type. For example, if you create a document file on Google Docs then it can be exported in several formats. This causes a problem for SyncBackPro because the Google Docs file has no defined size (it is reported as having no size) as the size depends on what format it is exported in. When SyncBackPro downloads a Google Docs file it will store it locally using the Microsoft format, e.g. .docx for document files. If the Microsoft format is not available then the first export format available for that file is used.
Google Docs files stored on Google Drive do not record milli-seconds. This means the [last modification date & time comparison](CompareOptionsDateTime.md) must be not be less than 1 seconds difference.
### Upgrading Dropbox and OneDrive Cloud API
When you upgrade from an earlier version of SyncBackPro, or import a profile from an earlier version of SyncBackPro, and the profile is using **Dropbox**, **OneDrive** (**Personal** or **Business**) or **SharePoint**, then SyncBackPro will continue using the old (legacy) interface with that cloud service. This ensures your profile continues to work. However, it is recommended that you update the profile to use the new cloud API. See the [Upgrading Cloud Service](CloudServiceUpgrade.md) section for details.
### Which cloud storage service should I use?
When deciding on which cloud storage service to use you should base it on what is most important to you:
1. **Price:** The cloud services frequently change their pricing, often reducing it. Also, the cost may depend on what storage class you use for the object and/or bucket/container. Pricing may be based on where (regionally) you decide to store your files. Some cloud services provide free storage up to a certain level. The cloud service may also charge differently depending on if it's an upload or a download. Working out costs can be complex.
1. **Speed**: The upload and download performance largely depends on where your files are physically located. The closer they are to you, the faster it is that they can be accessed. If possible, try the services using a typical set of files (at the same time of day you would use the service) to see any differences in performance.
1. **Size**: Microsoft Azure can store files up to 200GB in size, and for Amazon S3 it is 5TB. The limit for Box depends on the type of account you have, e.g. 250MB for personal and 5GB for Enterprise. These limits can change so please verify with the cloud service.
1. **Security**: The security and integrity of your files may be paramount. It is impossible to say which service is more secure. You can reduce security risks by telling SyncBackPro to [encrypt](CompressionSettings.md) your files.
1. **Meta-data**: Many of the professional/business cloud services support storing meta-data for files. This is data about the files, e.g. the real file size if the file is stored compressed. If a cloud service supports meta-data then a cloud database is not required. This can make things much simpler and result in fewer issues.
### Large file uploads and security time-outs
For some cloud services, e.g. Google Drive and Box, if it takes a long time to upload a file then it may fail because the security token has expired. When SyncBackPro connects to a cloud service it is given a security token that is passed back to the cloud service with every call made. The security tokens are only valid for 60 minutes (usually, although this is service specific) but they can be refreshed and are refreshed automatically by SyncBackPro. However, if it takes longer to upload a file than the security token is valid for then the upload will always fail as the security token will have expired by the time the upload has completed, and the cloud service will only check the security token once the upload has complete. This is a limitation of those cloud services that use expiring security tokens.
### Naming restrictions
All of the cloud services have restrictions on what characters can be used in a file or folder name. These restrictions may be more restrictive than Windows and may change over time. For example, at time of writing a semi-colon cannot be used in any file or folder names in Microsoft OneDrive. As these rules are likely to change, SyncBack does not check names to see if they meet the rules and instead leaves that to the cloud service itself. You may need to rename your files to meet their naming restrictions.
Dropbox also filters out some files and will not allow them to be uploaded (see https://www.dropbox.com/en/help/145 for more details). For example, if you attempt to upload a file called **desktop.ini** to Dropbox then it will return the error message **"The file desktop.ini is on the ignored file list, so it was not saved."**. You cannot force Dropbox to accept those files. The only option is to [deselect](SubDirectoriesandFiles.md) the files, or [filter](FilterSettings.md) them out, in your profile so that SyncBackPro doesn't even try to upload them.
### Cloud database
Many of the professional/business cloud services support storing meta-data for files. This is data about the files, e.g. the real file size if the file is stored compressed. However, the consumer orientated cloud services often do not support this (with the exception of Dropbox and Google Drive). SyncBack needs to store important data about the files, e.g. the last modification date and time. If the cloud service does not support meta-data then that data must be stored locally in a database. This can result in problems if that database is deleted, as that important data is then lost. For example, if you backup to Box, and store the files compressed, then SyncBack needs to store the actual uncompressed size of the original source file. This is so it can detect changes in that file. That data is stored in the database as Box does not support meta-data. If you delete the database then SyncBack no longer knows the true size of the compressed file on Box. You can rebuild the database by copying the source file properties to the destination (via the Differences window), but you will need to know which files have changed and which have not.
### Egnyte Performance
We always recommend using a [linked cloud account](LinkedCloudAccounts.md) when using cloud services except in one specific use case: if you have multiple profiles that run in parallel (at the same time), and use the same Egnyte account, then you will get better performance by not using a linked cloud account. It is better to authorize each profile with Egnyte so each profile gets its own security access token. The reason for this is due to how Egnyte limits usage. If your Egnyte profiles are not run in parallel, i.e. not at the same time (serially, one after the other), then it is still recommended to use a linked cloud account.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Cloud, Advanced
- **Storage Class/Blob Tier:** Amazon allows for different storage classes, while Microsoft Azure allows for different blob tiers. They are essentially the same thing. A storage class (or blob tier) defines how a file is stored on the cloud service, e.g. it may have less chance of being corrupted or may be stored at a lower cost on a slower storage device. You are advised to read the [Amazon S3 documentation](http://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) related to storage classes and/or the [Microsoft Azure documentation](https://learn.microsoft.com/en-us/azure/storage/blobs/access-tiers-overview). This option is not available for S3 compatible services. Note that Amazon no longer recommend using the Reduced Redundancy Storage (RRS) storage class and advise using the Standard class instead.
- **Glacier**, and other archiving classes/tiers, are for long term storage (archiving) of files that do not change, not backup. Do not use these classes for backup. **Amazon Lightsail** storage must use the **Standard** storage class otherwise you may receive Access Denied errors when trying to upload files.
- **Use Amazon S3 server-side encryption:** When this option is enabled SyncBackPro will request that the cloud server automatically encrypt any uploaded files. You do not need to specify a password, and do not require a password to restore any files. All the encryption and decryption is handled automatically and transparently by the server. This is an extra layer of protection in case anyone gets direct access to your files on their servers. If someone has your Amazon S3 login details then this will not stop them accessing your files. To avoid that situation you must use the [encryption](CompressionSettings.md) supplied by SyncBackPro. Note that when you enable or disable this option it will only apply to files uploaded after that point, i.e. any existing files on the server will not be encrypted or decrypted. This option is not available when using an S3 compatible service.
- **Use newer Amazon S3 security:** When this option is enabled SyncBackPro will use the newer [AWS Signature V4](http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) security. This is required when using buckets located in newer regions, e.g. Frankfurt. Note that when using S3 emulated services it's unlikely to be supported and so setting this option may cause it to fail to connect. SyncBackPro will attempt to automatically use the newer security if it is required by the server. All Amazon S3 regions support the newer security, however using it can reduce performance.
- **Use Amazon S3 transfer acceleration:** When this option is enabled SyncBackPro will use the transfer acceleration feature of S3. Please refer to the Amazon S3 documentation on how to enable this feature on a bucket, the restrictions that apply and the increase costs associated with using this feature.
- **Use Path-Style Access (else Virtual-Hosted–Style Access):** When this option is enabled SyncBackPro will use the deprecated path style access with S3 (or compatibles), which is where the bucket name goes in the URL path. This option is not enabled by default, meaning it will use the virtual hosted style, which is where the bucket name goes in the domain name. For example, with path style access you would have a URL like *https://s3.us-west-2.amazonaws.com/example-bucket/document.pdf*, but with virtual hosted style it would be like *https://example-bucket.s3.us-west-2.amazonaws.com/document.pdf*. Refer to the Amazon S3 [documentation](https://aws.amazon.com/blogs/aws/amazon-s3-path-deprecation-plan-the-rest-of-the-story/) for more details, including why not to use path style access.
- **Use ListObjectsV2 (e.g. if using MinIO):** When this option is enabled SyncBackPro will use the newer ListObjectsV2 call with S3 compatible systems. If you are using S3 or **Cloudflare R2** then this option is ignored and ListObjectsV2 is always used. This option is useful with S3 compatible systems, e.g. MinIO, where SyncBackPro cannot automatically detect which compatible system is being used. If you enable this option, and your system does not support it, you will receive an error and the profile will fail, so you must check your system (and version) supports it.
- **Retrieve a list of all the files and folders then filter (faster in most situations):** There are two methods for SyncBackPro to request a list of all the files and folders from the cloud storage server. It can either request the lists folder by folder (which is how it does it with local drives, FTP servers, etc.) or it can ask the server for a list of all the files and folders in one go (the default). One method may be faster than the other depending on how many of the files and folders on the cloud service are going to be filtered out by your profiles. If lots of the files are going to be ignored (due to [filter](FilterSettings.md) and [file & folder selections](SubDirectoriesandFiles.md)) then the profile may run faster if this option is switched off. If your cloud storage system has tens of thousands of files on it then you may need to disable this option as SyncBackPro may use a large amount of CPU time retrieving the list. If Fast Backup is being used then this option is always used (if the cloud service supports it).
- **Do not use the delta API:** This option is only available when a cloud service is being used that supports getting a delta changes list, e.g. Dropbox™ is being used. A delta changes list provides the ability to quickly discover what changes have been made since the last profile run. It is recommended that you do not enable this option unless it is causing problems, e.g. changes are not being discovered. Note that if you disable this option then the first run after disabling it may take a long time to run as the delta changes list may be very large. But after that first run with delta API enabled, subsequent profile runs should be much quicker than with this option enabled (delta API disabled). If Fast Backup is being used then the delta API will not be used.
- **Upload the database to the cloud:** SyncBackPro keeps a local database for storing the details of the files on the cloud service. This database is used to store details that cannot be stored on the cloud service. For example, some cloud services do not allow the last modification date & time of a file to be changed. To get around such limitations SyncBackPro keeps a record of what those details are. You can optionally also store that database on the cloud. If you are using the cloud service with SyncBackPro from more than one computer then it is strongly recommended you enable this option. This ensures that any changes made to the details will be visible to all SyncBackPro installations. Due to the way SugarSync™, OneDrive for Business (Office 365) and SharePoint™ (Office 365) work this option is not available when using those cloud services. It's also not available when using Amazon S3, Microsoft Azure, Google Storage, etc. as they do not require a database.
- **Move deleted cloud files to trash:** Some cloud services, e.g. Google Drive, support an option where files deleted from the cloud service are moved to the trash instead of being permanently deleted. If this option is enabled, which is the default, then SyncBackPro will move files to the trash when they are deleted. Note that some cloud services will move files to the trash regardless and provide no option not to do this, just as some will only permanently delete files and not have a trash feature. This option is only available when a cloud service supports the option of moving files to the trash.
- Automatically translate invalid filenames: For some cloud services,SyncBackPro will translate filenames so they are compatible with Windows file systems. This option is enabled by default and works the same way [as in FTP](FTPSettings.md#filenametrans). This feature is not available (and not functional) with Amazon S3, Backblaze B2, Google Storage, Microsoft Azure, Rackspace, Egnyte (deprecated) and Citrix Share.
- Mute file change notifications in cloud apps: Some cloud services, e.g. Dropbox, have client applications that notify you when a file is uploaded or changed. By enabling this option you can configure SyncBackPro to tell the cloud service not to notify you when it uploads a file.
- **Number of worker threads to use (too many will degrade performance):** File upload and download performance with Amazon S3, Microsoft Azure, Egnyte (deprecated), Backblaze B2, Rackspace/OpenStack and Google Storage (if using a private key) can be significantly improved by enabling parallel file copying. You can set the number of files to upload in parallel. SyncBackPro will upload smaller files in parallel, and large files serially (as these are already uploaded using multiple threads, see following setting). Note that increasing this value too high can slow down the profile or cause the cloud system to throttle the connection. Also, in some circumstances SyncBackPro will not use worker threads, e.g. if [runtime scripts](RuntimeScripts.md) are used. Note that with **Egnyte** (deprecated) the maximum number is 12 (due to restrictions the service imposes). If you are using multi-zip compression then worker threads will not be used to upload files.
- **Number of upload/download threads to use (too many will degrade performance):** Some cloud services, e.g. Amazon S3 and Microsoft Azure, allow for multi-threaded access so upload and download performance can be improved. When SyncBackPro uploads or downloads files, or retrieves the meta-data on the files, it will do so in parallel by using a number of different threads. This can significantly improve performance, but if too many threads are used then it can also significantly reduce performance (by overloading the network, CPU, and increasing memory usage). On cloud services that support this, by default 30 threads are used. If you are limiting the bandwidth, and have more than one thread, then this will be highlighted in the user interface. For cloud services that do not support threaded access then only 1 thread is ever used. The maximum number of threads is 150. Note that with **Egnyte** (deprecated) the maximum number is 12 (due to restrictions the service imposes).
- In regards to the cloud, the maximum number of threads (connections) made to the cloud service for uploading and downloading files is the total of worker threads and upload/download threads. If you have a limit on the number of connections allowed to a cloud service, e.g. **Egnyte** (deprecated), then you should split this value between them. For example, if you have 12 maximum connections, then use 6 for worker threads and 6 for upload/download threads.
- **Number of scanning threads to use (too many will degrade performance):** Some cloud services, e.g. Amazon S3 and Microsoft Azure, allow for multi-threaded access so scanning for changes performance can be improved. This can significantly improve performance, but if too many threads are used then it can also significantly reduce performance (by overloading the network, CPU, and increasing memory usage). The maximum number of threads is 100. Note that with **Egnyte** (deprecated) the maximum number is 12 (due to restrictions the service imposes).
- **Send and receive timeout (seconds):** Sometimes network problems and disconnections can cause communication with the cloud storage server to freeze, e.g. SyncBackPro may be waiting for a response from the server which may never arrive. You can set a limit for how long SyncBackPro should wait for a response before it tries again. By default the timeout value is 60 seconds.
- **Block size:** This setting is for Azure, S3, Backblaze B2, Rackspace and Google Storage. It defines the size of the blocks used when uploading and downloading files. If set to zero then a default value is used (50MB). With Backblaze B2, the default block size value is set by the cloud service. When uploading or downloading very large files, and the block size is too small, a larger block size is used automatically. Larger block sizes mean fewer calls, which can reduce costs (if you are using a cloud service to charges per call). However, if there are network issues then it may take longer to upload/download. Smaller blocks sizes mean more calls, a potentially higher cost, but will work better with unreliable and slow network connections.
- **Access Policy applied to uploaded files:** This setting only applies to Amazon S3 (Azure sets its security via the container). By default SyncBackPro will use the highest security setting, i.e. only you and nobody else can access the files. However, you may be storing files that you want others to be able to access (e.g. via a web page) and so would want a different access policy. Note that there is also an access policy on the bucket. Please refer to the cloud service documentation on the meanings of the access policies.
- Limit bandwidth usage to: This limits the bandwidth usage when uploading and downloading files to and from the cloud. Note that the throttling uses an average over time meaning that it will transmit in bursts (at maximum speed) and then pause, i.e. the transfer rate will not be constant. Note that if the bandwidth throttle is set too low then you may experience timeout failures. If you limit the bandwidth then you should also reduce the number of threads (ideally to just 1).
- **Number of days to restore Glacier files for:** This setting only applies to Amazon S3. If SyncBackPro needs to retrieve a [Glacier](Cloud.md#glacier) file then this is the number of days Amazon will store the temporary copy of that file.
- **Glacier retrieval tier to use:** This setting only applies to Amazon S3. If SyncBackPro needs to retrieve a [Glacier](Cloud.md#glacier) file then this is the speed at which the file(s) will be retrieved from Glacier. Check the Amazon documentation for the costs associated with different retrieval speeds:
- **Retrieval tier to use:** This setting only applies to Azure. If SyncBackPro needs to retrieve a file from archive storage then this is the tier in which it will be retrieved to. Check with Azure documentation on the costs associated with different retrieval tiers:
- **Customer-provided encryption keys (SSE-C):** This setting only applies to Backblaze B2 and Amazon S3 and compatible services, e.g. **Wasabi** and **Oracle** S3 compatible storage. Note that [Amazon has deprecated](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) the use of SSE-C encryption keys. If you are using server-side encryption with your own encrypted keys (SSE-C) then you can specify the key here. When creating your own SSE-C key, refer to the cloud services documentation for the encryption cypher to be used. For example, at time of writing, Backblaze and Amazon S3 require AES-256-CFB. You can use a [secret](SecretsManager.md) (the secret type is password) for the key. If you use SSE-C:
- SyncBackPro requires the SSE-C key encoded in Base64.
- Always use an encrypted connection. This is to protect your key.
- Do not use more than one key with objects in a bucket, i.e. all objects in the bucket must use the same key. If you use more than one key then scanning will fail.
- If you change keys then you will need to delete the objects and re-upload all of them with the new key. Alternatively create a new empty bucket and use that bucket with the new key.
## Setting the MIME type (Content-Type)
You can change the MIME Content-Type for files that are uploaded to a Cloud Storage Service by using a custom **MIME.TXT** file. Note that not all cloud services allow the Content-Type to be specified.
Create a text file called **MIME.TXT** in the folder where the SyncBackPro executable is. By default, this location is at:
**32-bit**: C:\Program Files (x86)\2BrightSparks\SyncBackPro
**64-bit**: C:\Program Files\2BrightSparks\SyncBackPro
The text file must specify the extension and what mime type it should be. Specify one extension/mime per line. For example:
```
txt=text/plain
asf=video/x-ms-asf
webm=video/webm
```
Please note that it is not necessary to put a period before the extension (example - txt instead of .txt), but it wouldn't matter either if you place the period before such extensions.
## Setting the Content-Disposition (Amazon S3 only)
You can set the Content-Disposition to **attachment** for files that are uploaded to a Amazon S3 by using a custom **CONTDISP.TXT** file.
Create a text file called **CONTDISP.TXT** in the folder where the SyncBackPro executable is. By default, this location is at:
**32-bit**: C:\Program Files (x86)\2BrightSparks\SyncBackPro
**64-bit**: C:\Program Files\2BrightSparks\SyncBackPro
The text file must specify the filename extension or the filename (no path). Specify one filename extension or filename per line. For example:
```
.txt
download.exe
```
Please note that it **is** necessary to put a period before an extension otherwise it is treated as a filename. Any file uploaded that matches a filename or extension, or filename, in this list will have its Content-Disposition set to **attachment** when uploaded.
If you want all files to have the Content-Disposition set to **attachment** then put a single asterisk in the file:
```
*
```
**Further reading:** [Cloud Archive Storage Classes](https://www.2brightsparks.com/resources/articles/cloud-archive-storage-classes-guide.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Cloud, Proxy
- **I use a proxy server:** If you must use a proxy server to connect to external cloud servers then you must enable this option.
- **Hostname:** This is the hostname of the proxy server, e.g. proxyserver.com.
- **Username:** This is the username to use to connect to the proxy server. It may be optional for your proxy server.
- **Password:** This is the password to use to connect to the proxy server. It may be optional for your proxy server.
- **Port:** The port number of the proxy server. This value varies depending upon the type of proxy server software used. Although "1" is the default, it will almost certainly not be this number.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Cloud, Tags
Amazon S3 allows for tags to be included with uploaded/updated objects. Refer to their [documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html) for details and restrictions. As these kinds of restrictions are often changed, and tagging may be expanded to other cloud services in future releases, SyncBackPro does not make any attempt to validate the tags you use. You can use [variables](Variables.md) both in the key name and the value name.
For reference, at the time of writing, these are the Amazon S3 object tagging restrictions:
- You can associate up to 10 tags with an object. Tags that are associated with an object must have unique tag keys.
- A tag key can be up to 128 Unicode characters in length, and tag values can be up to 256 Unicode characters in length.
- The key and values are case sensitive.
- The allowed characters across services are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @
- The **aws:** prefix is reserved for AWS use.
Note that the tags are only set on objects that are uploaded or updated. If you change the tags then they are only changed for existing objects if that object is updated.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Backup Email
This profile settings page can use and create [shared settings](SharedSettings.md).
Using these settings it is possible to backup your email messages (this is not to be confused with [emailing the log](EmailSettings.md)). SyncBackPro can make a backup of emails stored on most types of email servers.
You can backup whichever IMAP4 [folders you like](SubDirectoriesandFiles.md). When using POP3 you cannot select your [source](SimpleSettings.md) (folder). This is because the POP3 has no concept of folders. It only has a single list of emails (files).
How do you restore your emails? You cannot restore the emails to your (SMTP) email server using SyncBackPro. Instead you must import the [EML files](BackupEmail.md#emlfilename) into your email client (see the **Filename of EML files** setting below).
How do you have the emails deleted from the email server after a copy has been made? You must configure the [Decisions - Files](DecisionsFiles.md) settings so that the emails are **moved** instead of just being copied.
To reduce the backup time it is recommended that you enable the [Fast Backup](FastBackup.md#email) feature. Note that this is not possible if you are using a POP3 email server (which is not recommended).
## Retrieving Server Connection Details
- **Email Service:** If you use a public email service, e.g. GMail, then you may be able to choose it from the drop-down list. If so, some of the settings will be set automatically for you. Note that you may still need to set things like the login username as they are unique to your account.
- **Server Type:** For most people this should be typically be IMAP4. If you are using a Outlook, Hotmail or Office 365 email address then you most likely need to use the **Outlook/Office 365** server type. If you're using a Microsoft Exchange server then you can change this as appropriate. If you are using Microsoft Exchange 2007 or newer then do not use the WebDAV option unless you are using an old version of Microsoft Exchange (2000 or 2003). Check with your email provider or systems administrator. If you've created a client ID and password for Gmail then use [GMail OAUTH](Gmail.md).
- **Hostname:** The hostname (or IP address) of your POP3 or IMAP4 server. Check with your email provider or systems administrator on what that is. Note that in some cases, e.g. Gmail (when not using OAUTH) and other web based email services, you may need enable access to your emails via a POP3 (or IMAP4) server.
- **Port:** The port number of your email server. It is recommended you leave it as zero (then SyncBackPro will use the default port number based on your settings). If you are using Microsoft Exchange then this value is not required.
- **Connection Encryption:** If your email server requires an encrypted connection, or it supports one and you want your email to be transmitted from the server in encrypted form, then select the appropriate option. Some email servers, e.g. GMail, require an encrypted connection. If your POP3/IMAP4 server supports a direct encrypted connection then select **Direct SSL/TLS connection** option. The **Use STLS command** is different from the direct setting in that it connects to the email server using an unencrypted connection and then once connected it requests that the connection be encrypted by sending a special command to the email server. Choose this option if your email server does not support a direct encrypted connection. If you're using **Microsoft Exchange** then select either option to use an encrypted connection.
- **Login**: If you must login to your email server (and if you are using Microsoft Exchange then you must) then select **Must login to email server** and enter your login username and password below. Note that some servers require a login whereas others may fail if you do attempt to login. Check with your email provider or systems administrator. Some email services have 2-step verification for added security. In this case the password may need to be an application specific password and not your actual password. Refer to your email services documentation on how to create an application specific password. Due to spam, most email servers now require you to login. SyncBackPro can login to email servers that require a username and password in clear-text, NTLM, CRAM-MD5, or MSN.
- **Password**: The password used to login. This is only enabled if **Login** is set to **Must login to email server**. If your password has spaces in it, and you're not using Exchange, then you may need to enter it with double-quotes. For example, if your password is **abc 123** then enter **"abc 123"** as the password. You can use a [secret](SecretsManager.md) for the password.
- **Modify the email received time**: This should be left as zero unless you are having problems with the last modification date & time of the EML files (see the warning below about a bug in Windows). This value is the number of minutes to increment (or decrement, if negative) to the received date & time of the email. For example, if you set this to 180 then the received date & time is incremented by 3 hours (180 minutes).
## Filenames
- **Filename of EML files:** This is the filename to use for the email files. Each email is downloaded and stored in its own self-contained EML file, i.e. the EML file contains the email body and all attachments. EML is a standard file format used by many of the popular email clients, e.g. Mozilla Thunderbird. You can use [special variables](Variables.md#backupfromemail) for the filename. The default filename is **%EMAIL_SUBJECT% [%EMAIL_IDORMD5%].eml**. The filename will be automatically trimmed if it exceeds 255 characters (that is the filename of the EML file, not the complete path). The filename extension will kept unless it itself exceeds the maximum length. Also, any invalid filename characters will be removed (e.g. carriage returns) or converted to dashes (e.g. asterisks).
- There is a known bug in Windows where the last modification date & time of EML files is changed. See our [KB article online](https://help.2brightsparks.com/support/solutions/articles/43000335813) for more details and a fix.
- **Also export the email bodies and attachments:** If you also want the email stored in plain text and the email attachments saved as-is then you should enable this option. Please keep in mind that the EML file already includes the body and attachments so it is not recommended or required that you enable this option.
- **Sub-folder to export the emails and attachments to...:** This is the sub-folder to store the emails in. You can use [special variables](Variables.md#backupfromemail) in the sub-folder name. The default sub-folder is **\%EMAIL_DATE%\%EMAIL_IDORMD5%\%EMAIL_SUBJECT%\**. Note that each variable will be expanded to a single valid filename with invalid filename characters changed to dashes (-). For example, %EMAIL_DATE% will be converted to 30-08-2013 and not 30\08\2013.
## Gmail (without 2FA)
If you are using a Gmail account, and are **not** using 2FA (Two Factor Authentication) with your Google Account, the following explains how to configure it so it can be used with SyncBackPro:
- [Login to your Gmail account](https://www.google.com/gmail/)
- Click **Settings** link in top-right
- Go to **Forwarding and POP/IMAP** tab in Settings
- Enable **Enable POP for all mail (even mail that's already been downloaded)** and **Enable IMAP**
- Change **When messages are accessed with POP** to **keep Gmail's copy in the Inbox**
- Click **Save Changes**
- You also need to allow access via less secure apps. To do this visit https://myaccount.google.com/lesssecureapps
The problem with Gmail is that it sometimes forgets these settings and so you may have the problem of SyncBackPro saying there are no emails. This is because the Gmail POP server is saying there aren't any emails because the **Enable POP for all mail** setting is sometimes "forgotten" by Gmail. Also, sometimes Gmail doesn't appear to delete emails that SyncBackPro asks it to delete.
## Gmail Authentication
If you are using [OAUTH with Gmail](Gmail.md), then there is no need for an App Password. You use the client ID and password to authorize. We recommend using a [Linked Account](LinkedCloudAccounts.md).
If you are using 2FA (Two Factor Authentication) with your Google Account, and **not** using OAUTH with Gmail, then you need to create an [App Password](https://myaccount.google.com/apppasswords) for SyncBack. You then use that password instead of your Google password.
**Further reading:** [Internet Message Access Protocol (IMAP)](https://www.2brightsparks.com/resources/articles/internet-message-access-protocol.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Backup Email, Proxy
- **I use a proxy server:** If you must use a proxy server to connect to your email server then you must enable this option.
- **Hostname:** This is the hostname of the proxy server, e.g. proxyserver.com. [Variables](Variables.md) can be used.
- **Username:** Your proxy login username. If you do not need to login to your proxy server then leave this blank. [Variables](Variables.md) can be used.
- **Password:** Your proxy login password. If you do not need to login to your proxy server then leave this blank.
- **Port:** The port number of the proxy server. This value varies depending upon the type of proxy server software used.
- **Proxy Type:** This setting defines what type of proxy server you are using. It is important the correct setting is used otherwise SyncBackPro will not be able to login to your proxy server. Check with your Network Administrator on which proxy setting to use.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SyncBack Touch
Using this window you can specify which SyncBack Touch device you want the profile to use.
SyncBack Touch is **free** when used with the current version of SyncBackPro or SyncBackSE.
- **Destination/right files are on a SyncBack Touch device:** If the destination/right is a SyncBack Touch device then tick this checkbox and then select the appropriate device in the drop-down list. If you click the **Find** button then a scan of the local network is made to find all the devices currently running SyncBack Touch and are available. This is achieved via a UDP broadcast on port 24671 (so if this UDP port is being blocked by a firewall then it won't be possible to find the servers). If the device cannot be found, or you are accessing it via the Internet, you can also optionally type in the hostname or I.P. address of the device. If you do manually enter the hostname or I.P. address then you should untick the following checkbox.
- **Port:** This setting is not enabled if the device is being connected to via its name as the port number will be discovered automatically. By default SyncBack Touch uses port 8080. Note that if you use Rapid Transfer (see below) then the port above it also used, e.g. if you use port 8080 then Rapid Transfer will also use port 8081.
- **Find and connect to the SyncBack Touch device using its name:** If you have entered the hostname or I.P. address into the above edit-box then leave this checkbox unticked. However, if you want the device to be found via a broadcast then tick this checkbox. By using the broadcast method you don't need to worry about the hostname or IP address (which can change) of the device. You can also have the profile run automatically when SyncBack Touch starts on the device and becomes available.
- **Windows and SBMS usernames and passwords are required:** If you have configured SyncBack Touch to use both impersonation and SBMS, then enable this checkbox. You will need to supply both the Windows username and password and a SBMS username and password. SyncBack Touch V1.7.7.0 (or newer) is required.
- **Username/Windows Username:** This is only required if the SyncBack Touch device is configured to verify usernames and passwords with an [SBMS](SBMService.md) server or Touch is on Windows and was installed to support user impersonation. If you have ticked the checkbox **Windows and SBMS usernames and passwords are required** then enter a Windows username. By default no username is required by SyncBack Touch.
- **Password/Windows Logon Password:** This is only required if the SyncBack Touch device is configured to verify usernames and passwords with an [SBMS](SBMService.md) server, has been configured to require a password or is using user impersonation. If you have ticked the checkbox **Windows and SBMS usernames and passwords are required** then enter a Windows password. By default no password is required by SyncBack Touch.
- **SBMS Username:** If you have ticked the checkbox **Windows and SBMS usernames and passwords are required** then enter the SBMS username here.
- **SBMS Password:** If you have ticked the checkbox **Windows and SBMS usernames and passwords are required** then enter the SBMS password here.
- **Transfer Threads:** This is the number of threads to use when uploading and downloading files with SyncBack Touch. The default is 5. For this feature to be used you must be using the latest version of SyncBack Touch. Also, if Touch is on an Android device running Lollipop or newer, and files are being uploaded to an external SD card, then only one thread will be used (due to limitations of writing content on external SD cards). The maximum number of threads is 30. Increasing the number of threads from the default of 5 is more than likely to actually slow down the transfer speeds. It is recommended that you experiment to find the optimal number of threads for your network and devices.
- **Touch Version:** Which features a Touch server supports depends on it's version. You can force SyncBackPro to use a lower version number by selecting a version from the drop-down list. It is recommended you leave this setting at it's default blank value, so it uses the latest version. **IMPORTANT:** This setting is only available if debug output is enabled in SyncBackPro (because it's use is primarily for support staff to find problems).
- **Run this profile when SyncBack Touch starts on the device:** If enabled then the profile will be run automatically if the device running SyncBack Touch is found on the local network. This option is only available if you are connecting to the device using its name. SyncBack will send out a UDP broadcast on port 24671 every 3 seconds, so if this UDP port is being blocked by a firewall then it won't be possible to find the devices. If a Touch device reconnects to the same network within 30 minutes then the profile will not be automatically run again.
- **Run unattended, i.e. do not prompt me:** If you want the profile to run unattended when the device is detected then enable this checkbox.
- **The connection is very slow:** If you have a very slow network connection to SyncBack Touch, e.g. in the range of kilobits per second, then enable this option. It reduces the network packet sizes, increases the network timeouts and will only use a single threaded connection. This avoids timeouts and gives a better indication of progress.
- **Enable Rapid Transfer:** Rapid Transfer can greatly increase performance when using SyncBack Touch. However, there are limitations: data is **not** encrypted over the network, it may saturate your network, it's not recommended for use on devices with slow storage (e.g. Android devices), it cannot be used with delta-copy (see below) and an extra TCP port is used (one higher than your Touch port, e.g. if you use port 8080 then it will also use port 8081).
- **Shutdown SyncBack Touch when the profile ends (Android only):** If you are copying files to Touch running on an Android device, e.g. your phone, you may want the SyncBack Touch service on the Android device to stop once the profile has finished running, e.g. for security reasons. If so, enable this option. The drawback of using this settings is that you'll need to manually restart Touch on the Android device if you want to run the profile again. Note that this feature only works when Touch V1.3.11 or newer is running on an Android device.
- **Use delta-copy for upload and download of files over this size (MBytes) (Windows only):** If you are copying files to a remote Windows device running Touch, you may want to use delta-copy to reduce the network usage. For example, if you are copying large files that don't change their contents too much, e.g. Virtual Machines, then it may be considerably faster to use delta-copy. In this case, when a file is transmitted over the network, only the changes are sent. The file is then rebuilt on the other end. It's not efficient to use this method with all file types (hence the filter option) or with small files, which is why you can specify the smallest size to use delta-copy with. This feature only works when Touch V1.3.11 or newer is running on Windows. This feature is not the same as [delta-copy versioning](Delta.md). The versioning feature stores the differences, but in this case the differences are transmitted over the network and the file is rebuilt by SyncBackPro / Touch.
### Configuration
To configure SyncBack Touch on the device click the **Configure** button. SyncBack will connect to the device and display a window where you can change the settings. Note that if SyncBack Touch is using SBMS then the user must have the **admin** role.
- **SyncBack Touch Password (leave blank to not change):** This is the password that SyncBackPro profiles will need to connect to this device.
- **SBMS host name:** If SBMS is being used for security then this is the hostname or I.P. address of the SBMS server.
- **SBMS port number:** If SBMS is being used for security then this is the port number of the SBMS server. By default it is 8100.
- **SyncBack Touch port number:** The port number used by SyncBack Touch. By default it is 8080.
- **Cache Size:** The amount of disk space SyncBack Touch will use on the device for caching.
### Ransomware Detection
To configure SyncBack Touch to detect ransomware on the device it is installed and running on, click the **Ransomware Detection** button. Enable or disable the checkbox "Enabled Ransomware detection" to switch on or off ransomware detection. You can click the **Re-Create** button to recreate the ransomware detection file, e.g. if it has been deleted or changed (and you know it is not due to ransomware, for example).
SyncBack Touch will create a ransomware detection file (an RTF file with a random filename) in the shared documents folder on the device Touch is running on.
The ransomware detection with Touch is performed slightly earlier than when used with a [profile](SetupRansomware.md). It is done before the source/left and destination/right folders are created.
### Android and Security
The Android operating system will stop apps (such as SyncBack Touch) from reading and writing to files and folders it has no permission to access. Starting with KitKat (Android 4.4) it also restricts access to external storage (SD cards). SyncBack Touch may not be able to access external storage at all or may only have read-access to it. The only way to get around these security restrictions is to root the Android device and [configure Android](http://winaero.com/blog/unlock-external-sd-card-writing-for-all-apps-in-android-4-4-kitkat/) as appropriate. However, this is not recommended as it will likely void any warranty and may make the phone unusable.
### SyncBack Touch Security and Authentication
All communication with SyncBack Touch is encrypted (unless **Rapid Transfer** is enabled, see above). SyncBack Touch can be configured four different ways in regards to authentication:
- It can be configured to simply accept a user defined password. SyncBack will connect to the device and provide that password. If the password is correct then it can use the device. This is the default (with an empty password) and is ideal for home use and is available to both SyncBackSE and SyncBackPro.
- It can be configured to connect to a remote [SyncBack Management Service](SBMService.md) and verify that the username and password supplied by SyncBack is correct. This is ideal for business/enterprise use as the usernames and passwords are centrally managed. SyncBackSE cannot use this option.
- SyncBack Touch can be installed to allow impersonation. This means SyncBackPro connects using the usernames and passwords of Windows accounts on the computer SyncBack Touch is running on. This is also ideal for business/enterprise use as the usernames and passwords are the same Windows usernames and passwords that are already used by users on their Windows computers. This also adds an extra layer of security because when SyncBackPro connects to Touch then they only have access to the files and folders on the Touch device that Windows allows them access to. SyncBackSE cannot use this option.
- You can configure SyncBack Touch to use both impersonation and SBMS. This adds extra security (as two sets of credentials are required) and also lets you restrict which users can use Touch (as they need an account in SBMS as well). SyncBack Touch V1.7.7.0 (or newer) is required.
### Firewalls and Routers
By default SyncBack Touch uses TCP port **8080** for all communication with SyncBack. If you are using **Rapid Transfer** then an extra port is required. It will use the next higher port number, so if you are using port 8080 then it will also use port 8081. The port number can be changed/set during the installation (see below) or [by using SyncBack](SyncBackTouch.md). If you want to access SyncBack Touch through a firewall then you must open this port (and the one above if using Rapid Transfer). If SyncBack Touch is behind a router then you may need to enable port forwarding. Refer to your routers documentation for details.
To discover SyncBack Touch installations broadcasts are made on the UDP port **24671**. You may need to open this port on your firewall (not your router as broadcasts are only made on the local network).
### SyncBack Touch Installation
On Windows you can use a number of command parameters with the SyncBack Touch installation program **(SyncBackTouch_Setup.exe**):
- **/verysilent**
To install SyncBack Touch without any prompts or messages on the screen use the **/verysilent** command line parameter with the installation executable, e.g.
SyncBackTouch_Setup.exe /verysilent
It is important that it is the first command line parameter.
**WARNING:** When using a silent installation, no prompting can be done. Therefore, if the installer cannot replace a file because it is being used, then it will replace it on reboot. If it needs to reboot to replace the file then it will immediately reboot, without prompting, once the installation is complete. You should also bear in mind that if you disable prompting, it is assumed you tacitly agree to those prompts that would normally be displayed (for example, our terms & conditions) and/or that you are aware of the issues that would normally be mentioned. If in doubt, you should manually install a test instance first and satisfy yourself there are no contentious issues.
**WARNING:** The following installer parameters can only be used on initial installation. They are ignored if SyncBack Touch is already installed.
- **/SBMS_Hostname="*hostname*"**
This is the hostname or I.P. address of the SyncBack Management Service (SBM Service). Only specify this if you are going to use SBMS for security and licensing. For example:
SyncBackTouch_Setup.exe /SBMS_Hostname="192.168.0.1"
- **/SBMS_Port="*portnumber*"**
This is the TCP/IP port number of the SyncBack Management Service (SBM Service). The default SBMS port is 8100. For example:
SyncBackTouch_Setup.exe /SBMS_Hostname="192.168.0.1" /SBMS_Port="8095"
- **/SBFS_Port="*portnumber*"**
This is the TCP/IP port number of that SyncBack Touch should use. The default SyncBack Touch port is 8080. For example:
SyncBackTouch_Setup.exe /SBFS_Port="8081"
- **/Password="*password*"**
This is the password that SyncBack Touch should use. This is ignored if you are using SBMS for security. By default there is no password. For example:
SyncBackTouch_Setup.exe /verysilent /Password="secret"
- **/ServAccName="*username*"**
This is the Windows user account that SyncBack Touch should use for the Windows service. If this isn't specified then SyncBack Touch will use the System account. This is optional. For example:
SyncBackTouch_Setup.exe /ServAccName="machine\username" /ServAccPass="password"
- **/ServAccPass="*password*"**
This is the password for the Windows user account that SyncBack Touch should use for the Windows service. For example:
SyncBackTouch_Setup.exe /ServAccName="machine\username" /ServAccPass="password"
- **/Impersonate**
If you want to use impersonation authentication with SyncBack Touch then pass /Impersonate on the installer command line. You cannot use this option if you are using /ServAccName as the service must use the system account (see **/ImpersonateAdmins**). For example:
SyncBackTouch_Setup.exe /Impersonate
- **/ImpersonateAdmins**
If you want to use impersonation authentication with SyncBack Touch with Windows administrator accounts then also pass /ImpersonateAdmins on the installer command line. For example:
SyncBackTouch_Setup.exe /Impersonate /ImpersonateAdmins
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SyncBack Touch, Multi
SyncBackPro can be configured to run the same profile multiple times. Each run of the profile will connect to a different SyncBack Touch device. By doing this, for example, you can create just one profile to backup multiple SyncBack Touch devices instead of creating a profile for each device. Keep in mind that the source and destination paths, and all other settings, are going to be the same, so you may want to use variables. For example, you could set it to backup to X:\Backup\**%SBTNAME%**\ so that each backup goes into its own folder with the SyncBack Touch device name being used as the sub-folder name.
- **I want to use multiple SyncBack Touch devices:** If enabled then you can specify a list of SyncBack touch devices you want the profile to connect to.
There are a number of ways to add a SyncBack Touch device to the list:
The list columns are:
**Hostname/IP:** The hostname, I.P. address or device name of the SyncBack Touch device.
**Is Name?**: If Yes, then the Hostname/IP refers the name of the SyncBack Touch device, otherwise it is the hostname or I.P. address of the device.
**Port:** The port number (default is 8080) of the SyncBack Touch device. If you are connecting using the name then this value is ignored.
**Username**: This is only required if the SyncBack Touch device is configured to verify usernames and passwords with an [SBMS](SBMService.md) server or is using impersonation. By default no password is required by SyncBack Touch.
**Password:** This is only required if the SyncBack Touch device is configured to verify usernames and passwords with an [SBMS](SBMService.md) server, is using impersonation, or has been configured to require a password. By default no password is required by SyncBack Touch.
To change the username and password for a range of devices, enter the **Username** and **Password** in the **Credentials** box. Next, select the items in the list (use the SHIFT key and arrow keys). Finally, click the **Update** button to change the credentials for the selected devices.
If you want to import a list of devices, the file must be a comma-delimited file (CSV) with the following format:
"*Hostname, IP address or device name*","*Is Name?*","*Port*","*Username*","*Password*"
Note that all items in the list must be wrapped in double-quotes, and it must be one entry per line. For the *Is Name?* field it must be **"Yes"** or **"No"**. The port number can be left blank (**""**) if *Is Name?* is Yes. The *Password* must be in clear-text, i.e. not encrypted or hashed.
For example:
"192.168.1.1","No","8080","user","password"
"192.168.1.2","No","8080","user","password"
"192.168.1.3","No","8080","user","password"
"hostname.com","No","8123","user","password"
"MyComputer","Yes","","user","password"
"MyPhone","Yes","","user","password"
To configure all the SyncBack Touch devices in the list click the **Configure** button. You then enter only the details you want changed for all those devices, e.g. the SBMS host name, and then click **OK**. SyncBackPro will then connect with each device in the list and change its configuration.
**Further reading:** [Multi SyncBack Touch Profile](https://www.2brightsparks.com/resources/articles/multi-syncback-touch-profile.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Network, Advanced
You can only edit the values if you are using a UNC path or if the path contains variables (because it is impossible to know if it will be a UNC path or not until the profile is actually run).
- **Use this username and password before trying my current username and password:** This setting defines which user account will be tried first to connect to the network. If enabled then SyncBackPro will try the [supplied](NetworkSettings.md) username and password before using the defaults. By default SyncBackPro will try using the defaults before the ones supplied.
- **Do not try my current username and password:** If enabled then SyncBackPro will not use the defaults. Note that if you do not specify a username and password then it will use the defaults even if this option is enabled. This is because that is the only option available, i.e. SyncBackPro must use something to connect and because nothing has been supplied it must use the defaults.
- **Do not disconnect from the network after the profile has run:** By default SyncBackPro will disconnect the network connection once the profile run has finished (it will not disconnect if it used an existing connection). If you change this setting so that SyncBackPro does not disconnect you should be aware that it may cause problems with the computer you are connecting to and/or from. Windows, and other operating systems, have limits on the number of network connections that they can have open at any one time. The limit could depend on a number of factors, e.g. technical or licensing. If the connection is not dropped then the limit may be reached and problems may occur, e.g. computers may not be able to connect to the remote server.
- **Forcibly disconnect if there are open files stopping disconnection:** Windows will not disconnect a network connection if there are files on it that are currently open. Those files could be open and being used by any process on the system, e.g. anti-virus software, and not just SyncBackPro. By default SyncBackPro will not forcibly disconnect the network connection. If this option is enabled then SyncBackPro will ask Windows to forcibly disconnect. Note that this may still fail.
The username used for the connection will be shown on the main page of the log file. See the **Drive Type** in the Source and/or Destination section of the log. The username is shown in brackets next to **Remote** for the **Drive Type**. If it is shown with a question mark (?) then it is assumed that the username stored in the Windows credentials manager was used and this is *probably* the username used.
**How** **SyncBackPro** **connects**
When SyncBackPro connects to a UNC path it is done as follows:
1. It first checks to see if there is already a connection. If so:
1. If the **Use this username and password...** option is enabled, or the **Do not try my current username and password...** option is enabled, then it will attempt to connect using the username given on the [Network](NetworkSettings.md) settings page. If so it is done. If that fails, and the **Do not try my current username and password...** option is **not** enabled, then it will attempt to connect using the defaults.
2. If the **Use this username and password...** option is **not** enabled then it will attempt to connect using the defaults. If that fails then it will attempt to connect using the username given on the [Network](NetworkSettings.md) settings page.
**What username and password is used if none are given?**
This is up to Windows, but there are three possibilities:
1. If there is an existing working connection then the existing cached credentials are used. In Windows, you can only have one set of credentials when connecting to a UNC path (for that server), so if there is already a connection then that is used.
2. If there is a username and password stored in the Windows Credentials Manager for the server you are connecting to, then those will be used (if valid).
3. Failing all else, your current Windows username and password will be tried.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# When, Hot-key
You can configure SyncBackPro to run a profile when a hot-key is pressed. You can also configure SyncBackPro to [appear](GlobalSettings.md#hotkey), if minimized, when a hot-key is pressed.
- **Run the profile when this hot-key is pressed:** To run the profile when a certain key combination is pressed, click this edit box and press the hot-keys you want to assign. For example, if you want to run the profile whenever you press Ctrl-Shift-P, then press those keys. Now whenever you press Ctrl-Shift-P, no matter what application you are using, and even if SyncBackPro is minimized, the profile will be run. Please note that SyncBackPro must be running for hot-keys to function (you may want to configure SyncBackPro to [start automatically](GlobalSettings.md#startwithwindows) when you login to Windows). To remove a hot-key, click the hot-key edit box and press the Backspace key. If you try to use a hot-key that is already being used (either by another profile or as a hot-key in another application) then the hot-key will be set to **None**.
- **Run unattended, i.e. do not prompt me:** If a profile is run via the hot-key, by default it is run attended, i.e. dialog box and prompts related to the profile will be displayed when required. If this option is ticked then the profile will be run silently without any prompting. Note that if this is a group profile then all the profiles in the group will be run attended or unattended, i.e. for a group this setting overrides the profiles setting.
If you are using these settings with a **Group Queue**, please see the [Groups help page](Groups.md#groupqueues) for important details.
**Further reading:** [Hot-keys](https://www.2brightsparks.com/resources/articles/hot-keys.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# When, Login/Logout
- **Run this profile on Windows shutdown/logoff:** If this option is enabled, the profile will run when you shutdown, restart, or logoff from Windows. By default, SyncBack will warn you there are profiles set to run on shutdown/logoff when you exit SyncBack. This is because SyncBack must be running at the time of logoff or shutdown for the profiles to be run.
- Windows has many restrictions on how programs can react to and handle the shutdown or restart of a computer. Due to these restrictions [Run Before](ProgramsBefore.md) and [Run After](ProgramsAfter.md) programs will silently fail and not even start if the profile is set to run on shutdown/logoff and the computer is shutdown or restarted (the programs will still be run as per normal if it's a logoff). If the profiles that are run on shutdown/logoff take more than a few minutes then Windows will abort the shutdown/logoff.
- **Run this profile when I login to Windows:** A special entry is created in the Windows Task Scheduler (this avoids receiving UAC elevation prompts). Note that a profile set to run on login will be run unattended. Due to the nature of this setting it cannot be set to be on by default. However, unlike in earlier versions of SyncBack this setting can now be exported/imported and copied to another profile. If this setting is ticked, but not enabled, then the profiles login schedule is set to run elevated but you are currently running SyncBackPro unelevated, which means (due to Windows security) you cannot change the setting.
If you are using these settings with a **Group Queue**, please see the [Groups help page](Groups.md#groupqueues) for important details.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# When, Changes
A profile can be configured to watch for changes to files, and when any changes are made, the profile will be run. There are some important points to keep in mind:
1. SyncBack must be running for it to be able to detect changes. You may want to configure SyncBack to [start with Windows](GlobalSettings.md#startwithwindows) (see **Global Settings** in the [burger menu](PreferencesMainMenu.md)). **Important:** It actually starts after you login to Windows and not before login.
1. If you make changes to those files while SyncBack is not running it will not detect them and so when you start SyncBack it will not run the profile. Because of this you may still want to schedule the profile to run periodically.
1. Changes cannot be detected on FTP, email servers, MTP, Touch or cloud servers. It will probably also fail to detect changes on NAS devices that are not running Windows (many NAS devices use a version of Linux) and on networked drives that are not running Windows.
Instead of detecting changes in files, you may want to have the profile run when a [program closes](WhenPrograms.md). For example, if you are editing files then you may instead want SyncBack to backup the files as soon as you close the editor software. Having SyncBack backup files every time they are changed may not be practical in some cases.
- **Run this profile when any files or directories are changed on source:** If this option is enabled then the source/left folder will be watched, and if any changes are made to any files (including files in sub-folders), or if any files are deleted, then the profile will be run.
- **Run this profile when any files or directories are changed on destination:** As per the above setting but the destination/right is watched. If you are using a backup profile then there is no point watching the destination for changes. Also note this option is not available with Fast Backup profiles.
- **Run interactively, i.e. prompt me if required:** If a profile is run when changes to the files are made, by default it is run unattended, i.e. dialog box and prompts related to the profile will not be displayed. If this option is ticked then you will be prompted as and when required.
- **Wait a number of seconds for no changes before running the profile:** A common problem with running a profile when files are changed is that there is no way for SyncBack to know when a program has finished writing to or updating a file. For example, a video editing program may take several seconds to save the changes you've made to a video. In that case SyncBack will run once it sees the video file being updated, but the video editing program may not have finished saving the file before SyncBack starts copying that file. To avoid these kinds of problems you can configure SyncBack to not start the profile until there have been no changes for a certain number of seconds. For example, a program may need to update many files before it exits. Updating all those files may take several seconds. Let's say you set this profile setting to 5 seconds. If the program updates one file then SyncBack will see the change but won't yet run the profile. The program may then update another file a couple of seconds later. SyncBack will detect the change but still won't run the profile because changes were made less than 5 seconds after the previous change. Once the program has saved all its files, and 5 seconds have passed without any file updates, SyncBack will then run the profile. The following setting defines if the seconds to wait is idle seconds.
- **This must be idle computer time:** If enabled then the number of seconds specified in the above setting refers to idle time. For example, if you've specified to wait 5 seconds, and this option is enabled, then SyncBack will wait until the computer has been idle for that number of seconds after any changes are detected. Idle time is the amount of time that the keyboard, mouse and any other input device has not been used. This setting is useful to make sure profiles are not run while you are using the computer.
- **Important:** this delay starts from the last alert by Windows of a change (and is reset/zeroed by any fresh alert). But if the delay is set to 5 seconds, for example, and the last alert by Windows of a change was 5 seconds ago, the profile will then start. If that last change is still ongoing (video program is still writing after 5 seconds) then an error may occur as the file is still being written to. It is recommended that you set the delay time to exceed the duration of the slowest/longest change-event anticipated.
- **Queue Profile:** If this option is enabled, the profile will not be executed immediately and will instead be added to the [queue](Queue.md).
### Versioning
If you are using [versioning](CopyDeleteVersioning.md#whereversionskept) then you should set the profile to store versions in a sub-folder of the base folder and **not** in a sub-folder of the original file. This is not only because it will cause change events to happen but if you are running a synchronization profile then you will get unexpected results for "dead" folders, i.e. folders that only exist because they contain versions.
### Why is my profile being run?
A common complaint is that SyncBack is running a profile even when the user believes it should not. This is usually because a new file has been created, or deleted, in a folder. Often these are temporary files, e.g. Microsoft Office files that start with **~$**. When this happens, Windows tells SyncBack that a folder has changed. It does not indicate which file has been deleted or created, only that the contents of a folder has changed. If that folder is part of the profile then SyncBack has no choice but to run the profile as new files (or even folders) have been created or deleted, and it cannot know which unless it runs the profile to find out.
### Finding Problems
If SyncBack is not being notified, by Windows, of changes then there is a way to discover why:
- First, you must configure SyncBack to record errors in the Windows Event Log. To do this, start SyncBack and go to **Global Settings** in the [burger menu](PreferencesMainMenu.md) then the **Expert** tab. Enable the option **Use the Window Event Log** and click **OK**.
- Now make some changes to the folders that are to be watched for changes
- Open the Windows Event Viewer (how to start it depends on the version of Windows being used, but typically it's in the Administrative Tools section of the Control Panel).
- In the Event Viewer tree (on the left) navigate to **Event Viewer (local) -> Applications and Services Logs ->** **SyncBackPro**
- Look for entries that are prefixed with **MonitorErrorCallback** in the error text (on the **General** tab).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# When, Insert
A profile can be configured to run whenever an external device is attached, e.g. a USB key is inserted. If Windows is assigning a random drive letter to the device when inserted, please use the %LABEL% or %SERIAL% [Variables](Variables.md). If you use these options you may want to configure SyncBack to [start automatically](GlobalSettings.md#startwithwindows) when you login to Windows.
- **Run this profile when…:** This set of options enables this profile to be automatically run whenever an external device is connected or USB memory key, etc. is attached to your computer. You can configure it to be broad, e.g. any device into any drive, or very specific, e.g. a drive with a specific label, serial number, and with a certain drive letter. You can use Windows environment variables in the label and serial settings, but you cannot use [user defined profile variables](SetupVariables.md). Note that there are important differences between volume serial numbers and hardware serial numbers. See the [HWSERIAL](Variables.md#hwserial) description in the [Variables](Variables.md) section for more details.
- **Run unattended, i.e. do not prompt me:** If a profile is run via a device insert, by default it is run attended, i.e. dialog box and prompts related to the profile will be displayed when required. If this option is ticked then the profile will be run silently without any prompting. Note that if this is a group profile then all the profiles in the group will be run attended or unattended, i.e. for a group this setting overrides the profiles setting.
- You can use wild cards for the label and serial numbers. For example, you can set the label to **MyDisk*** and then any disk inserted with a label that starts with **MyDisk** will start the profile. Also, the labels and serials are compared without case sensitivity.
- When mounting a Bitlocker drive or image, then a notification is sent to SyncBackPro twice: once when it is mounted/attached but no password has yet been supplied (so it cannot be accessed) and again once the correct password has been supplied. In the first call, the drive has no volume label or serial. Therefore, if you are watching for a Bitlocker drive/image to be mounted/attached, then it is recommended that you set the correct serial and/or label on this settings page.
If you are using these settings with a **Group Queue**, please see the [Groups help page](Groups.md#groupqueues) for important details.
### Finding Problems
While on this settings page, if any drives are inserted or attached then a window will appear at the bottom of the settings page with details. This lets you check to make sure a drive can be detected correctly when it is attached or inserted.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# When, Periodically
Running profiles in the background is similar to running profiles via the Windows Task Scheduler, except SyncBackPro must be running for background profiles to run. Also background profiles usually run much more frequently than scheduled tasks, e. g. every 30 minutes. If you use these options you may want to configure SyncBackPro to [start automatically](GlobalSettings.md#startwithwindows) when you login to Windows.
For example, you could create and configure a profile to run in the background every 30 minutes that makes a backup of the documents you are working on. This helps ensure that you lose the least amount of work possible if, for example, there was a power cut. For more details see the [Automating SyncBackPro section](AutomatingSyncBackSE.md).
- **Run this profile every...:** This is the interval at which the profile will be run, e. g. every 30 minutes.
- **Only run the profile if the computer has been idle for at least...:** If enabled then this specifies the amount of idle time must have passed before the profile is run. Idle time is the amount of time that the keyboard, mouse and any other input device has not been used. For example, you can specify that the profile is run every 30 minutes but only once the computer has been idle for 10 seconds. That would mean that even if it has been 30 minutes since the profile was last run it will not run until the computer has also been idle for at least 10 seconds. This setting is useful to make sure profiles are not run while you are using the computer.
- **Run interactively, i.e. prompt me if required:** If a profile is in the background by default it is run unattended, i.e. dialog box and prompts related to the profile will not be displayed. If this option is ticked then you will be prompted as and when required. Note that if this is a group profile then all the profiles in the group will be run attended or unattended, i.e. for a group this setting overrides the profiles setting.
- **Warn me when exiting SyncBackPro...:** If this option is enabled, and you exit SyncBackPro while a background profile is waiting to run, then you will be prompted as a reminder.
- **Queue Profile:** If this option is enabled, the profile will not be executed immediately and will instead be added to the [queue](Queue.md). If the profile is a [group queue](Groups.md) then this option is not available (as it will be queued).
- **Only run the profile between these times:** If this option is enabled then the profile will only be run between the times you specify, e.g. you may only want it to run in the early morning.
- **Only run the profile on these days:** If this option is enabled then the profile will only be run on the days of the week you select, e.g. you may only want it to run on weekdays (Monday to Friday).
It can be difficult, or impossible, to calculate when a profile will next run based on the settings used. In such cases the main window will not be able to state when the profile will next run.
If you are using these settings with a **Group Queue**, please see the [Groups help page](Groups.md#groupqueues) for important details.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# When, Time Limit
In some cases, you may want to limit the amount of time a profile can run for. There are some important points to keep in mind when using this feature:
- The time limit setting is ignored for simulated runs and when the profile is run in restore mode.
- It cannot be guaranteed that the profile will be terminated within the time limit. For example, if the user is being prompted (e.g. the [Differences](TheDifferencesWindow.md) window is being displayed) then the profile is only terminated after the window is closed. Also, during some situations the profile cannot be terminated, e.g. if there are network issues.
- The time limit includes any paused time. For example, if the profile is run as part of a [group](CreatingaGroupProfile.md) (run sequentially, which is the default) then the profile is started paused and only continues once the previous profile in the order has finished.
- If a profile is stopped because it has reached its time limit, and is run as part of a group (run sequentially), then all the other profiles in the group will also be stopped (which is the same as if the profile had been stopped manually).
- When a profile is part of a group then the earliest time limit is used. For example, if a profile has a time limit of 20 minutes, but the group it is in (and being run as a part of) has a time limit of 10 minutes, then the profile has a time limit of 10 minutes and not 20 minutes. This makes sense because the profile is being run as part of a group, and the group has a time limit, so the group itself will be terminated before the profile will be.
- **Stop the profile if it runs for more than...:** If enabled, this is the maximum amount of time that the profile can run for. You cannot use time-limits with [Group Queues](Groups.md).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# When, Program
A profile can be configured to run whenever another programs starts or exits (closes). For example, you may want SyncBack to make a backup of your documents as soon as your word processor is closed. It can be configured to run interactively or silently. Also, you can have it monitor several programs.
This profile settings page can use and create [shared settings](SharedSettings.md).
- **Important:** SyncBack uses features in Windows to detect when programs start or stop. If this feature is used then the CPU usage for the **WmiPrvSE.exe** service will average around 1% but may increase and get as high as 10%. This is a known drawback of using this feature.
- **Run this profile when any of the following programs start:** The list-box lists all the programs that will trigger the profile if they start. To add to the list click the **Add** button. You can use variables, but you cannot use variables from a parent group. To remove one or more entries from the list first select them and then click the **Remove** button. Note that it will take up to 3 seconds to detect when a program starts.
- **Run interactively, i.e. prompt me if required:** By default a profile is run unattended when one of the programs specified starts, i.e. dialog box and prompts related to the profile will not be displayed. If this option is ticked then you will be prompted as and when required. Note that if this is a group profile then all the profiles in the group will be run attended or unattended, i.e. for a group this setting overrides the profiles setting.
- **Run this profile when any of the following programs stop:** The list-box lists all the programs that will trigger the profile if they stop/close/exit. To add to the list click the **Add** button. You can use variables, but you cannot use variables from a parent group. To remove one or more entries from the list first select them and then click the **Remove** button. Note that it will take up to 3 seconds to detect when a program stops.
- **Run interactively, i.e. prompt me if required:** By default a program is run unattended when one of the programs specified stops, i.e. dialog box and prompts related to the profile will not be displayed. If this option is ticked then you will be prompted as and when required. Note that if this is a group profile then all the profiles in the group will be run attended or unattended, i.e. for a group this setting overrides the profiles setting.
If you are using these settings with a **Group Queue**, please see the [Groups help page](Groups.md#groupqueues) for important details.
### Finding Problems
While on this settings page, if any programs are started or stopped then a window will appear at the bottom of the settings page with details. This lets you check to make sure a program start/stop can be detected.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# When, Touch
This settings page is only for groups. To run a profile when a device running SyncBack Touch is found see the SyncBack Touch [settings page](SyncBackTouch.md).
- **Run this profile when SyncBack Touch starts on the device:** If enabled then the group profile will be run automatically if the device running SyncBack Touch is found on the local network. SyncBack will send out a UDP broadcast on port 24671 every 3 seconds, so if this UDP port is being blocked by a firewall then it won't be possible to find the devices. If a Touch device reconnects to the same network within 30 minutes then the profile will not be automatically run again.
- **Run unattended, i.e. do not prompt me:** If you want the profile to run unattended when the device is detected then enable this checkbox.
For details on firewalls and networks, refer to the SyncBack Touch [settings page](SyncBackTouch.md).
If you are using these settings with a **Group Queue**, please see the [Groups help page](Groups.md#groupqueues) for important details.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# When, Display
A profile can be configured to run whenever the screen saver starts or when the display is powered off. For example, you may want SyncBackPro to make a backup of your documents when you are not using your computer. As profiles will be run when the display is off (or the screen saver is on) they are not run interactively.
- **Start the profile when the screen saver starts:** If this option is enabled, and you have configured Windows to use a screen saver, then when the screen saver becomes active the profile will be started. The screen saver must be active for at least 5 seconds.
- **Start the profile when the display powers off:** If this option is enabled, and you have configured Windows to switch off the display(s) to save power, then when the display is switched off (by Windows) the profile will be started. Note that you physically switching off the display (via loss of power or the power button) will not trigger the profile to start.
If you are using these settings with a **Group Queue**, please see the [Groups help page](Groups.md#groupqueues) for important details.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Copy/Delete
Define how SyncBackPro will handle the copying, deleting, and moving of files. The recommended, and default, copying method is **Standard Windows file copying**. Other copying methods are available as sometimes an alternative copying method may produce better results.
SyncBackPro can optionally use the exact same routines for copying, deleting, and moving files that Windows File Explorer uses. This ensures that files are copied as expected, e.g. the file attributes are also copied which provide benefits such as putting deleted files in your Recycle Bin.
**File copying method**: Various methods of copying (and deleting and moving) files are provided to allow for maximum compatibility and flexibility. The default method (Standard Windows file copying) is recommended, but if you want to compare the performance of the various methods you can click the **Test** button. See below for details. Note that the **Test** button is only available when copying from one file system to another and not when copying to or from FTP, cloud, Touch, etc.
- **Standard Windows file copying:** This is the default method for copying files. It is the most efficient and quickest way to copy files. Not using the shell (see next item) may fix network problems, especially when using Novell networks.
- **Windows File Explorer method of file copying:** The Windows Shell (Explorer) is asked to copy, delete, and move files on behalf of SyncBackPro. When using this method you have the benefit of moving deleted files to the recycle bin. Using the shell may cause problems when SyncBackPro is used on non-standard versions of Windows, e.g. BartPE.
- **Backup read/write file copying:** This method (which can only be used by Windows users who have the necessary backup access rights – if not then the **Standard** method is silently used) can be used to copy files that the user has no access rights to. So if you are receiving **Access denied** error messages you may want to try this method. Note that the backup copy method cannot be used with Zip files, FTP or the cloud (the Standard method will be used silently).
- **Memory map file copying:** This copying method copies files using a memory map of the file. The benefits of this copy method are its low memory use and avoidance of caching. Note that this copy method is only used when copying files from one file system to another, and not when using Zip files, FTP, email, the cloud, etc. The Standard copy method will be used silently if it cannot be used.
- **Write through:** If this option is enabled then the data is written directly to disk without any buffering. This applies even if a network disk is being used. Note that this will have a negative impact on performance, but is useful if you must be sure that data has been stored. The data is still cached (for reading) unless the option [Stop Windows from caching a files contents when it is copied](CopyDeleteAdvanced.md#nobuffering) is enabled.
- **Threads to use:** This option is not available with this copying method.
- **Buffer size (KBytes):** When a file is copied, it is copied in blocks, and this setting defines the size of the block (in kilobytes). Blocks are stored in memory temporarily (the block is read from the source file and then immediately written to the destination file). The ideal block size depends on many factors, e.g. if using a network, but note that a large block size is not always best.
- **Read ahead file copying:** This copying method copies files by asynchronously reading the source file and synchronously writing to the destination file. This method is best used when the source is slow, e.g. a network, and the destination is fast, e.g. an internal drive. Note that this copy method is only used when copying files from one file system to another, and not when using Zip files, FTP, email, the cloud, etc. The Standard copy method will be used silently if it cannot be used.
- **Write through:** See Memory map file copying above.
- **Threads to use:** This option is not available with this copying method.
- **Buffer size (KBytes):** See Memory map file copying above.
- **Multi-threaded file copying:** This copying method copies files by using multiple threads both for reading and writing. As with the read ahead method, it's best used when reading from a slow device and writing to a fast device. Note that this copy method is only used when copying files from one file system to another, and not when using Zip files, FTP, email, the cloud, etc. The Standard copy method will be used silently if it cannot be used. Also, if a file is too small to be copied using multiple threads then it will be copied using a single thread. What is considered small depends on the number of threads and the size of the buffer.
- **Write through:** See Memory map file copying above.
- **Threads to use:** By default 3 threads are used and the maximum is 128. Using too many threads will have a negative impact on performance.
- **Buffer size (KBytes):** See Memory map file copying above.
| **Summary of file copying methods** | | | | | | |
| --- | --- | --- | --- | --- | --- | --- |
| | **Standard** | **Explorer** | **Backup** | **Memory**
**Map** | **Read**
**Ahead** | **Multi-Threaded** |
| Copies extended attributes (1) - extended attributes aren't normally used but are provided for backward compatibility with OS/2 applications. | Yes | Yes | Yes | Yes | Yes | Yes |
| Copies OLE structured storage (1) | Yes | Yes | Yes | Yes | Yes | Yes |
| Copies alternate data streams (1) | Yes | Yes | Yes | Yes | Yes | Yes |
| Copies sparse files correctly | No | No | Yes (1) | Yes (1) | Yes (1) | Yes (1) |
| Copies file attributes | Yes | Yes | Yes | Yes | Yes | Yes |
| Copies security attributes (2) | Yes (3) | Yes | Yes (3) | Yes (3) | Yes (3) | Yes (3) |
| Copies encrypted files (5) | Yes | Yes | Yes (4) | Yes (4) | Yes (4) | Yes (4) |
| Can copy files user has no access to | No | No | Yes (9) | No | No | No |
| Deleted files can be moved to Recycle Bin (8) | No | Yes (6) | No | No | No | No |
| File deletions or overwrites can be confirmed first (8) | No | Yes (6) | No | No | No | No |
| Directory creation can be confirmed first | No | Yes (6) | No | No | No | No |
| Copy Performance | Fast | Fast | Slow | Fast | Fast | Fast |
| Copy progress feedback (7) | Yes | No | Yes | Yes | Yes | Yes |
| Copy [locked files](CopyDeleteLocked.md) | Yes | Yes (4) | Yes | Yes | Yes | Yes |
| Copy from [All Volumes](AllVolumes.md) | Yes | Yes (4) | Yes | Yes | Yes | Yes |
(1) The destination must be an NTFS formatted volume.
(2) The destination must be an NTFS or ReFS formatted volume, and if not a local volume then the security attributes may not be copied.
(3) The destination must be an NTFS or ReFS formatted volume, and security attributes are only copied if the profile is configured to copy file security permissions. By default they are not copied.
(4) The Standard method is silently used instead.
(5) The copy may not be encrypted, e.g. if the destination is not NTFS.
(6) Not enabled by default.
(7) This means the copy progress is shown, meaning you can abort a file copy. Without progress feedback the profile can only be aborted after a file has been copied, not during the copy.
(8) If you would like to keep files that are deleted or replaced then consider using [versioning](CopyDeleteVersioning.md).
(9) Not if the file is using NTFS (EFS) encryption.
**Shell File Copying & Deleting**: The following options are only displayed if the 'File copying method' is set to **Windows File Explorer method of file copying**:
- **Move deleted files to recycle bin:** If a file is deleted from a local drive (not a removable drive or network drive) it can be moved to the recycle bin instead of being deleted. This is identical to what would happen if you deleted the file using Windows File Explorer.
- **Confirm file deletions, replacing files, etc.:** When a file is to be deleted or replaced by another file then you can be prompted on whether you want SyncBackPro to delete or replace the file. An important point to remember is that if you are using the recycle bin (see the previous item) then you will not be prompted when a file is deleted (instead it is silently moved to the recycle bin). Also, if you are running the profile in unattended mode, e.g. from the Windows Scheduler, then you will not be prompted and the file will be deleted or replaced. If you would like to keep files that are deleted or replaced then consider using [versioning](CopyDeleteVersioning.md).
- **Confirm directory creation:** If a new directory must be created then you can be prompted on whether you want the directory to be created or not. If you are running the profile in unattended mode, e. g. from the Windows Scheduler, then you will not be prompted and the directory will be created. This option is only available if "Do not display a progress dialog box" is unchecked and "Display error messages and prompts" is enabled.
- **Display error messages:** If an error occurs when a file is copied or deleted then you can choose to be prompted with an error message. Note that these error messages are also recorded in the profiles log file. If you are running the profile in unattended mode, e.g. from the Windows Scheduler, then you will not be prompted with any error messages.
- **Do not display a progress dialog box:** When copying large files, using a slow network connection, or slow storage devices, it can sometimes take a long time to copy a file. If this option is enabled then the standard Windows file copy progress dialog box will be displayed (it is only displayed if a file copy will take more than a few seconds). The benefit of this dialog box is that you can cancel the file copy, for example it may be taking too long, and you can see how long it will take to copy the file. If you are running the profile in unattended mode, e.g. from the Windows Scheduler, then the progress dialog box will not be displayed. Please note that on some systems disabling this option may drastically reduce performance.
- **Verify that files are copied correctly:** After a file is copied, SyncBackPro can check to guarantee that the newly created file is identical to the original file. You can specify what files should and/or should not be verified by clicking the **Verify Filter** button.
- Enabling this option can significantly increase the time taken for a profile to run. If you must enable it then consider changing the verification filters to avoid verifying non-critical files. Note that this option will not work if you are using an FTP server that does not support the XCRC extension (the log will contain the warning message "**The FTP server does not support hashing**"). It's also not possible when using an SFTP server, copying emails from an [email server](BackupEmail.md), or when using [AES](CompressionSettings.md) encryption with Zip files. For SFTP servers, the protocol includes integrity checks so there is no need for verification. When using single Zip compression, the verification is of the entire Zip file after it has been created and not for individual files. When moving files, if the copy cannot be verified, then the source file is not deleted, i.e. it becomes a copy not a move. The verification option is best used with the [Make safe copies](CopyDeleteAdvanced.md#makesafecopies) option also enabled as it ensures that your backup doesn't contain corrupted files. If both these options are enabled then when a file is copied it is first copied to a temporary file, i.e. the destination file is not yet overwritten. If the temporary file does not match the original file then the temporary file is deleted and an error is recorded. Without the safe copies option you will know the copy is corrupt but by then it is too late as the file has already been replaced with a corrupted file.
- **Do not verify files in parallel:** If both files are stored on a normal file system (i.e. not in the cloud, on an FTP server, etc), and are over a certain size, and are on different physical drives, then SyncBack reduces the verification time by verifying the file in parallel. This means it reads both files at the same time instead of reading one file and then reading the other. In the majority of situations this is the optimal solution. However, in some rare cases it can cause problems. If you get errors such as **Thread Error: Invalid Handle (6)** then you should enable this option to resolve the issue. Note that this setting is the same as the **Do not compare files in parallel** setting on the [Compare Options](CompareOptionsSettings.md) settings page.
- **Verify Filter:** You can specify what files should and/or should not be verified by clicking the **Verify Filter** button. For example, you may only want to verify your documents but not executable files. See the [Filter Settings](FilterSettings.md) page for details of how to specify filters.
- **If verification fails, then pause before retrying:** If the verification of a file fails, e.g. it cannot be read, then you can optionally specify the number of retry attempts and the delay between each retry. Note that this cannot be used when [compressing](CompressionSettings.md) to a single zip file.
- **Automatically create the source/left and destination/right folders if they do not exist:** By default the source/left and destination/right folders will be created automatically if they don't exist. However, in some situations you may not want this, e.g. if using an Intelligent Synchronization profile, and instead want the profile to fail if either folders don't exist.
- **When copying files, stop other processes from modifying them during the copy:** By default, when SyncBackPro copies a file, it locks it against modification by other processes on the system. This is also used when [compressing](CompressionSettings.md) files. It is not recommended that this setting be disabled. If it is, then a file may be changed while it is being copied, resulting in a corrupted copy of the file.
**Testing Copy Methods**
The **Test** button is not enabled if you are copying from FTP, cloud, Touch, etc. It is only available when copying from one file system to another. In general, the default **Standard Windows file copying** provides the best performance. However, in some situations it may be better to use another file copying method. SyncBackPro lets you discover which copying method is the fastest in your situation. If you are using a UNC path (\\server\share\) in your source and/or destination, then when the **Test** button is clicked, SyncBackPro will attempt to connect using the settings specified in [Network](NetworkSettings.md) and [Network, Advanced](NetworkAdvanced.md).
When the **Test** button is clicked, a window appears:
By default, the source and destination from your profile are used, but you can change this to whatever you wish. However, keep in mind that SyncBackPro will have connected to the UNC as appropriate, so if you use a different UNC path then you may not be able to access it.
All the copy methods available are selected. You can choose which ones you want to test.
If you switch to the **Settings** tab, a number of other options are available, all of which can be changed:
- **Write Through** is not available for all copy methods and is enabled if it is enabled in your profile. See Memory map file copying above for details. "Write Through" is used by Memory map, Read ahead and Multi-threaded file copying.
- [Stop Windows from caching a files contents when it is copied](CopyDeleteAdvanced.md#nobuffering) is enabled if it is enabled in your profile. This option does not apply to the Windows Explorer and Backup copy methods. Enabling this option will have a large impact on performance (except for the copy methods it does not apply to).
- [Request traffic is compressed](CopyDeleteAdvanced.md) is enabled if it is enabled in your profile. This option does not apply to the Memory map, Read ahead and Multi-threaded file copying methods. It is enabled with the Windows Explorer and Backup copy methods, however it is only used with the standard file copying method (which SyncBack will automatically fall-back to using if the Windows Explorer or Backup copy methods cannot be used).
- The **Threads to use** and **Buffer size** are not available for all copy methods. These settings are copied from your profile. See the help above for details. "Threads to use" is only for the Multi-threaded file copying, and "Buffer size" is used by Memory map, Read ahead and Multi-threaded file copying.
- **Copy runs** defines how many times a test file will be copied from the source to the destination. By default it is 5.
- **Test file size (MBytes)** is the size of the test file that is copied. It will be automatically deleted and contains purely random data that cannot be compressed.
Once you are ready to perform the test, click the **Test** button. SyncBackPro will then copy test files from the source to the destination using the settings provided. Once completed it will display the total time taken (in milli-seconds) for each copy method you chose. The lower the value, the faster the copy method is.
The testing process is that for each copy run of each file copying method:
- A new file is created which contains random data, so the same file is never copied more than once.
- The test file is flushed to disk to stop it being cached.
- The test file is copied and timed.
- The test file and the copy of it are deleted.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Copy/Delete, Folders
Define how SyncBackPro will manage folders (directories).
- **Copy sub-directory and file security permissions (only valid for NTFS):** If ticked then folder security is copied when directories are created and files are copied. If you want to detect changes to a file or folders security you must enable the option **Compare file and folder security** on the [Compare Options->Security](CompareOptionsSecurity.md) settings page. Note that you must copy what you compare, i.e. you cannot compare group security if you have not set it to copy group security. Although NTFS is mentioned explicitly, it is also valid for ReFS.
The following check-boxes define what security is copied and compared:
- **Owner:** The owner of the file or folder. If the user running SyncBackPro does not have the Windows access rights then SyncBackPro will be unable to change the owner.
- **Primary Group:** The primary group of the file or folder. If the user running SyncBackPro does not have the Windows access rights then SyncBackPro will be unable to change the primary group.
- **Discretionary Access Control List (DACL):** The discretionary access control list identifies the trustees that are allowed or denied access to a securable object.
- **System Access Control List (SACL):** The system access control list enables administrators to log attempts to access a secured object. It is recommended that you leave this unchecked.
- **Copy sub-directory attributes and creation date (only when new directories are created):** If ticked then folder attributes and the creation date are copied when new directories are created. Note that if the attributes or creation date are changed on a folder then the new settings are not copied over.
- **Delete all the empty directories on destination/right:** If ticked then all empty directories in the destination/right will be deleted at the end of the profile run (see notes below about the base folder). Note that a folder will not be deleted if it has files in it, including any hidden files or file versions. You can configure which files SyncBackPro can automatically delete to make a folder empty with the “If a folder cannot be deleted because it's not empty…” setting [below](CopyDeleteFolders.md#filestodeletetomakeempty). Using this option is not recommended. The preferred, and quicker, method of deleting empty folders is via the [Decisions](DecisionsFolders.md) settings page.
- **Do not delete the empty directories if the profile run fails:** By default empty folders are not deleted if the profile run was not a success.
- **Delete all the empty directories on source/left:** If ticked then all empty directories in the source/left will be deleted at the end of the profile run (see notes below about the base folder). Note that a folder will not be deleted if it has files in it, including any hidden files or file versions. You can configure which files SyncBackPro can automatically delete to make a folder empty with the “If a folder cannot be deleted because it's not empty…” setting [below](CopyDeleteFolders.md#filestodeletetomakeempty).
- **Do not delete the empty directories if the profile run fails:** By default empty folders are not deleted if the profile run failed.
- **When the desktop.ini file (used by Explorer) is copied configure the folder it is copied to to use it:** The desktop.ini file is a special file created and managed by Windows File Explorer. It helps define what a folder looks like when viewed in Windows File Explorer. It is only used if the folders attributes are set correctly. You can tell SyncBackPro to automatically set the correct folder attributes if a desktop.ini file is copied to it. If you have desktop.ini [filtered out](FilterSettings.md), then desktop.ini is shown in yellow in the filters window. Note that the desktop.ini file [does not entirely define](http://support.microsoft.com/kb/812003) the appearance of a folder in Windows File Explorer.
- **If a folder cannot be deleted because it's not empty…:** Only empty folders can be deleted. Windows File Explorer often creates special hidden files in folders that contain settings related to that folder but contain no user created information. This setting defines which files can be deleted to make a folder empty. By default the **thumbs.db** and **desktop.ini** files will be deleted, along with temporary SyncBackPro files. Note these files are only deleted if they are the only files in the folder. Wildcards can be used, e.g. *.tmp
**Delete all the empty directories and the base folder**
When the option to delete all the empty directories is enabled then SyncBackPro may or may not delete the base folder. This depends on two factors:
1. If the base folder is a junction or reparse point then the base folder will not be deleted.
2. If the option to [automatically create the base folders](CopyDeleteSettings.md#autocreatebasefolders) is **not** enabled, then the base folder will not be deleted.
So if the base folder is empty, and is not a junction or reparse point, and the option to automatically create the base folders is enabled, then the base folder will be deleted.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Copy/Delete, Advanced
- **Make safe copies (copy files using a temporary filename and then rename the file on success - reduces performance):** When this option is ticked then SyncBackPro will copy files in a two stage process: first it will copy the file and use a temporary filename, then it will then replace the destination file with the temporary copy if the copy was a success. This avoids problems where the destination file may be deleted because the original file could not be copied, e.g. because it is locked and cannot be replaced. With FTP it is actually a three stage process as it must delete the file being replaced before renaming the temporary copy. With multi-zip (where the destination is a normal drive and not FTP etc.), safe copying is always used when creating the compressed file. When copying to the [cloud](Cloud.md), safe copying is not used due to the way cloud services work (an uploaded file may not appear immediately). This option is enabled by default and is recommended. If you have enabled [versioning](CopyDeleteVersioning.md), on either the source or destination, then you cannot change this setting as safe copies must be used when versioning is used.
- We strongly recommend using the safe copy feature to avoid corrupting your backup files due to unpredictable failures or errors. However, there may be cases where performance is the most important factor. If you are copying thousands of files, especially small files, or you are copying over a network (this includes [FTP](FTPSettings.md) and the [cloud](Cloud.md)) then switching off safe copies can significantly reduce the backup time. Note that if you are using versioning then you cannot switch off safe copies (as versioning requires its use).
- **Prompt to retry if source/left or destination/right drives do not exist:** If a drive does not exist, e.g. because it has not been connected or the network connection is not available, then a prompt will be displayed. Note that if the profile is run unattended then no prompt is displayed and the profile will fail.
- **If a file cannot be copied because of security (Access Denied) then try Backup Read/Write copy method:** The Backup Read/Write file copying method lets a user (who is a member of the Backup Operators user group) backup files that they have no access to. When this option is enabled if a file cannot be copied because you have no access rights to it then the backup method is used to try and bypass the file security.
- **Copy NTFS sparse files using Backup Read/Write copy method:** The Backup Read/Write file copying method lets a user (who is a member of the Backup Operators user group) backup NTFS [sparse files](Glossary.md#sparse) correctly (assuming the destination supports NTFS sparse files). When this option is enabled, and the file being copied is a sparse file, then the backup method is used to correctly copy the file. Note that sparse files will still be copied, and be valid and not corrupt, without using the backup read/write copy method, but the copy would no longer be sparse and therefore using more disk space.
- **Force the file modification date & time to be correct (may be required when using SAMBA or network drives):** Sometimes the file system that files are copied to cannot correctly record the files last modification date & time. For example, when using SAMBA shares (or some NAS devices) there can be occasions when the file will have the current date & time as its last modification date & time. To resolve this SyncBackPro can forcibly change the copies last modification and creation dates & times to be correct. The dates and times will be as accurate as Windows allows (within 100 nanoseconds), but note that file systems have different limitations on accuracy. This option is only available when copying from one file system to another, and not when using compression, the cloud, FTP, etc. There is another option (see the [Compare Options, Date & Time](CompareOptionsDateTime.md) page) to ask SyncBackPro to ignore small date & time differences. This can also be useful in avoiding problems where the file system cannot accurately record dates & times.
- **Copy file creation date & times:** By default copies of files are given the current date & time as their creation date & time. If this option is enabled then the creation date & time is copied. Note that FTP servers cannot store file creation date & times.
- **Copy last access date & times:** By default the last access date and time is not copied. If this option is enabled then the last access date & time is copied. Note that in many cases, e.g. when using non-NTFS file systems, FTP and SFTP servers, etc., it is not possible to use the last access date & time because it is not supported by the service or file system.
- **Reset the archive file attribute on files once they have been copied:** When enabled the archive attribute on a file, both on the source/left and destination/right, will be cleared once the file has been copied. Enabling this option will slightly decrease performance. This option is not available when doing Fast Backups.
- **Remove the read-only attribute from copies of files (useful when copying from a CD-ROM):** In some situations, when a file is copied from a CD/DVD, then the file may automatically be marked as read-only (not by SyncBack, but by the file system driver in Windows). If this option is enabled then any read-only flag put on the copy of the file will be removed automatically.
- **Delete ALL the files and folders in source/left before scanning for changes:** This option should be used with extreme care! It will delete all files and folders in the source/left folder before it scans for changes. **Be extremely careful with this option as you could very easily delete all your files**, e.g. if your source/left is C:\ then you will delete every single file on your C: drive. You have been warned!
- **Delete ALL the files and folders in destination/right before scanning for changes:** This option should be used with extreme care! It will delete all files and folders in the destination/right folder before it scans for changes (if the destination/right is a single Zip file then just the Zip file will be deleted). **Be extremely careful with this option as you could very easily delete all your files**, e.g. if your destination/right is C:\ then you will delete every single file on your C: drive. You have been warned! If your profile is using [Fast Backup](FastBackup.md) then you should instead use the option "[Delete all the files and folders in the destination before the backup (only if it is not a rescan)](FastBackup.md#deleteallfiles)".
- When using cloud services such as Google Drive and Box you need to be extremely careful with this option. The same folder can be referenced from many other folders. This means you could potentially delete files and folders that are not just in your source/left or destination/right.
- **Copy short filenames (not used for compression, FTP, etc.):** If enabled, when a file is copied from one file system to another then if the file has a short filename it will also be copied. Short filenames are a legacy feature of Windows and are there to help old software remain compatible. Note that this setting is ignored when used with FTP, compression, the cloud, etc. Also, enabling this setting will have an affect on performance. This option is not enabled by default.
- **Stop Windows from caching a files contents when it is copied:** If enabled, when a file is copied from one file system to another then SyncBackPro will tell Windows not to cache the contents of the file in memory. If you are copying large files, or want to reduce the memory load on the system, then it is recommended you enable this option. This option is only available on when the standard, memory map, read-ahead or threaded [file copy methods](CopyDeleteSettings.md) are being used and is only used when copying between file systems.
- **Request traffic is compressed:** If enabled, and you are copying files to or from SMB network shares, and SMB protocol version V3.1.1 or greater is used (introduced in Windows 10 and Windows Server 2016), then SyncBack requests that the network traffic be compressed. If you are copying large files, that are compressible, then this may improve performance. Note that the files themselves are not stored compressed, only that the data that is transmitted over the network is compressed. This option is only available on Windows 10 1903 (Build 18362, 19H1) and newer. It is also only used with the [Windows standard file copying](CopyDeleteSettings.md) method.
- **Number of files to delete in parallel:** When SyncBackPro deletes files on internal, external or network drives, then they are deleted serially, i.e. one after another. In some cases, it may be faster to delete files in parallel. To delete files in parallel, increase this value. A value which is too high will have the opposite of the desired outcome, i.e. it will slow down the profile. This setting is ignored in some situations, e.g. if versioning is being used.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Copy/Delete, Locked
- **Prompt to retry if a file is locked or cannot be copied:** If this option is enabled then SyncBackPro will prompt you if it cannot copy or delete a file, e.g. because it is locked or you do not have access rights. The prompt gives you the opportunity to close the program that has the file locked so the file can be copied or deleted by SyncBackPro. If you are running the profile in unattended mode, e.g. from the Windows Scheduler, then no prompt is made and the file will be skipped (an error message will be recorded in the log file). There is another option in SyncBackPro to close certain programs before a profile is run (see the [Auto-close](AutoCloseSettings.md) page).
- Note that if you've also enabled the option to replace/delete after a reboot then you will not be prompted.
- **If a file cannot be replaced/deleted because it is locked then replace/delete it after a reboot:** If a file cannot be replaced/deleted because it is locked then SyncBack can configure Windows so that on the next reboot the file will be replaced/deleted. This option must be used with care because it cannot be guaranteed that the file will actually be replaced/deleted, and there is no way for SyncBackPro to know whether it was.
- Note that if you've also enabled the option to prompt to retry if a file is locked or cannot be copied, you will not be prompted; the file will instead be replaced/deleted after the next reboot. The replace/delete after a reboot option cannot be used for files on FTP servers. Also, if NTFS compression is being used, the replaced file will not be NTFS compressed.
- **If a file cannot be copied, because it is locked, then pause before retrying:** You can optionally specify the number of times to try copying a locked file, and the amount of time to pause between the retry attempts. If there are no retries and a file cannot be copied because it is locked, then it will fail immediately.
- **Do not use the Volume Shadow Copy service (VSS) to copy open files:** SyncBack can copy open/locked files by using the Volume Shadow Copy service that is part of Windows. However, if you cannot or don't wish to use this service then you can enable this option.
- **Copy all files in [source/destination] from the shadow volume (snapshot):** SyncBack can optionally copy all files from the shadow volume (by using the Volume Shadow Copy service). This is useful when you want all the files to be copied at exactly the same time so you have a consistent file state across the backup set. A snapshot is taken of the drive at a single point in time so that essentially the files are frozen at that point. This does not stop users and other programs from modifying and deleting those files because they are changing files on the actual volume and not the shadow volume. It is recommended that this setting be used in situations where you have a set of files that are related to each other, e.g. backup of a set of database files.
- If you receive the error **Unable to create shadow volume: Initialization failure** then it is usually because the requirements for copying [open/locked files](OpenandLockedFileCopying.md) have not been met, e.g. SyncBack is not being run [elevated](MiscellaneousElevate.md) and the [Scheduler Monitor Service](SchedulerMonitorService.md) is not installed.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Copy/Delete, Network
- **Silently fail if source/left cannot be reached through the network, drive does not exist, or there is no disk:** When enabled, and the source/left drive cannot be accessed, then the profile will silently fail when run. No log file will be produced, and no failure result will be recorded. This option is useful when you have a profile scheduled to run periodically but are not always connected to the source/left. Enabling this option has an important change on the order of execution (see below).
- **Silently fail if destination/right cannot be reached through the network, drive does not exist, or there is no disk:** When enabled, and the destination/right drive cannot be accessed, then the profile will silently fail when run. No log file will be produced, and no failure result will be recorded. This option is useful when you have a profile scheduled to run periodically but are not always connected to the destination/right, e.g. you backup to a network drive via a wireless network connection. If the destination is an email server, FTP server, or a cloud service, then SyncBack will attempt to connect to the server (at the relevant address and port) to see if it can be accessed. In previous versions a **ping** was used instead, but often pings are blocked by routers and firewalls. Enabling this option has an important change on the order of execution (see below).
- If the silently fail option is enabled then it changes when SyncBack connects to the network. With it enabled it will attempt to connect to the network almost immediately. If it is not enabled (the default) then SyncBack connects to the network at a later stage (after any media is loaded, after any profile [pause](MiscellaneousSettings.md), after any [Run Before](ProgramsBefore.md) and after any shadow volume(s) are created.
- **If possible resume a broken file transfer when a profile is re-started (may slow profile):** This option is only available when using FTP or normal file systems. When enabled, if a profile stops because the network connection is lost, for example, and a file transfer is in progress, then when the profile is next run it will attempt to resume the upload/download. If FTP is being used then the FTP server must support the resume feature. Note that when copying files across Windows networks then enabling this option can slow down file copying, therefore it is only recommended enabling this option if very large files are being copied across a network and there is a chance the connection will be broken. If a profile is aborted then no attempt will be made to resume a file transfer.
- **Silently fail if no network connection is detected by Windows:** You may want your profile to only run if there is a network connection, e.g. you are using a laptop computer. If this option is enabled then when the profile is run a check is made to see if there is a network connection. If not the profile will silently fail to run. Windows performs the check for network connectivity and it decides if there is a network connection, which can be a local network (LAN) or Internet connection (WAN). If you want the profile to only run if there is an Internet connection, then see the next option.
- **Silently fail if no Internet connection is detected by Windows:** You may want your profile to only run if there is an Internet connection. If this option is enabled then when the profile is run a check is made to see if there is an Internet connection. If not the profile will silently fail to run. Windows performs the check for Internet connectivity and it decides if there is a connection.
- **Silently fail if Windows IS NOT connected to the following network:** You may want your profile to only run if there is a specific network connection. For example, you only want the profile to run if you are in your office. If this option is enabled then when the profile is run a check is made to see if there is a connection to the specified network. If not the profile will silently fail to run. Windows performs the check for network connectivity and it decides if there is a connection. Wild-cards can be used, e.g. Wifi*
- **Silently fail if Windows IS connected to the following network:** You may want your profile to not run if it is connected to a specific network connection. For example, you do not want the profile to run if you are at home. If this option is enabled then when the profile is run a check is made to see if there is a connection to the specified network. If so the profile will silently fail to run. Windows performs the check for network connectivity and it decides if there is a connection. Wild-cards can be used, e.g. Wifi*
- **Limit bandwidth usage to...:** If a value above zero is entered then when copying files the bandwidth usage is limited to what is specified (kilobytes per second). Note that there are some cases where the bandwidth usage cannot be limited, e.g. when using compression. Note that this bandwidth is used even when copying files to internal or external drives, as well as to other computers or NAS devices. There is a separate setting to limit the FTP bandwidth usage on the [FTP, Advanced page](FTPAdvanced.md) and also one for the [Cloud](CloudAdvanced.md#bandwidth).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Copy/Delete, Warning
Define if SyncBackPro will warn about certain file actions, e.g. deletion of too many files. These settings can help avoid cases where something has gone wrong and so the profile should not be run. You can also have the profile automatically abort if there are too many errors.
- **Warn me (abort profile if unattended) if** ***100%*** **or more of my files are going to be deleted due to my settings:** In some situations you may have wrongly configured your profile or made a mistake. For example, you may have set the source folder incorrectly to an empty folder and configured your profile to delete all files in the destination that are only in the destination. In this case when you run the profile all your destination files would be deleted. This setting is to avoid situations like this. You may also want to make sure that no files are going to be deleted. If SyncBackPro sees that it is going to delete the specified percentage of your files then it will automatically abort the profile and do nothing (if the run is unattended). If the profile is being run attended then a warning message will appear so that you can choose to abort or not. This setting is enabled by default and set at 100%, i.e. it will only abort/warn if **all** your files are going to be deleted. If you want to abort or be warned if any files are to be deleted then set the value to 0%. Otherwise, it will only abort/warn if the specified percentage (or more) of your files are going to be deleted.
- **Warn me (abort profile if unattended) if** ***100%*** **or more of my source/left files are going to be deleted due to my settings:** The first setting applies to all files no matter where they are, but this setting only applies to files that are in the source/left. For example: you have 10 files. 5 of them are both in the source/left and destination/right, 3 are only in the source/left and 2 are only in the destination/right. In this case 80% of your files are in the source/left (8 out of 10) and 70% (7 out of 10) are in the destination/right.
- **Warn me (abort profile if unattended) if** ***100%*** **or more of my destination/right files are going to be deleted due to my settings:** This is the same as the above setting except it applies to destination/right files.
- **Warn me (abort profile if unattended) if** ***100%*** **or more of my source/left files are going to be updated due to my settings:** This is similar to the "going to be deleted" setting, except it refers to existing files (on the source/left) that are going to be replaced with files on the destination/right. SyncBackPro looks at how many files are on **both** the source/left and destination/right and compares that to how many are being copied and/or moved (and so are going to replace an existing file). For example, if you have a file on both the source and destination, and it is going to be copied (or moved) to the destination, then that is a changed file. If you have a new file on the source, that does not yet exist on the destination, then that is not considered a changed file.
- **Warn me (abort profile if unattended) if** ***100%*** **or more of my destination/right files are going to be updated due to my settings:** This is the same as the above setting except it applies to destination/right files, i.e. files on the destination that will be replaced with files from the source.
- **Warn me (abort profile if unattended) if** ***100%*** **or more of my files are going to be copied/moved due to my settings:** This is setting can be used to check if too many files are going to be copied or moved (either to or from the source or destination). Typically you would not use this setting, but it can be useful in situations where you want to check that everything has been copied/moved with a special profile.
- **Abort profile if there are more than** ***0*** **errors:** If you want the profile to be automatically aborted once a certain number of errors are reached then this setting can be used. Note that this is an absolute value and not a percentage. You can specify zero, which means it will abort if there are any errors.
With SyncBackPro you can also create [scripts](Scripting.md) to stop a profile from continuing based on certain conditions. See the [RunPreCopyCheck](RuntimeScripts.md#function_runprecopycheck_) function and the example script [PreCopyExample.vbs](ExampleScripts.md)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Copy/Delete, Links
There are numerous ways to link files and folders. This settings page is concerned with how those links are handled or ignored.
Files
- **Automatically update shortcuts when they are copied or moved:** SyncBack can be configured to automatically change shortcuts that are copied so that the copy points to the correct file. For example, if your source is *C:\* and your destination is *D:\* and you copy a shortcut that points to *C:\abc.txt* then you may want it to be changed (in the destination) to instead point to *D:\abc.txt*. In this example you would set the root folder for shortcuts on the source/left to *C:\* and the root folder for shortcuts on the destination/right to *D:\*. In general the shortcut root folder is the same the source and destination folders, except when you are copying to UNC paths or network drives. In that case the shortcut root folder should be based on the drive on that remote computer.
- **Do not copy reparse point files:** If enabled then files that are marked as reparse points are not copied. These files are often special files, e.g. links on Windows Subsystem for Linux (WSL) file-systems. See the explanation below.
- **Preserve file hard links:** Hard links are explained below. It is important to remember that a hard link does not point to another file but points to the contents of a file. Multiple files on a volume (drive) can all share the same file contents. When copying a hard link to another volume, a new file on the target volume is created, thus losing the link. By enabling this option, SyncBack will try to preserve hard links by having the copy of a hard link point to the appropriate file contents on the target volume. Hard links can only be preserved for files within the base folder. Note that enabling this option can impact the performance of the profile as SyncBack needs to get all the hard links for every file that is scanned. See the section below on important points to remember when copying hard links. The [Differences window](TheDifferencesWindow.md#hardlinks) will show hard links when the profile is run (attended).
- **Copy symbolic links as-is instead of copying the file the link points to:** If enabled, and a symbolic link file (see description below) is being copied, then instead of copying the file the link points to it copies the link. This means the link on the destination will point to the same file the source link points to. Because of this you may want to make sure the symbolic links are relative and not absolute. For example, let's say you have a symbolic link on the source that points to *C:\abc\def.txt*. When copied to the destination the destination link will still point to that same file. However, if the link was relative and instead pointed to *..\def.txt* then the destination copy of that link would defer to the *def.txt* file on the destination. This option is only available when the [Standard Windows File Copy](CopyDeleteSettings.md) method is being used, and is only used when copying between NTFS or ReFS file systems. Please note that symbolic links are not the same as hard links (see below).
- **When possible, modify links to use correct drive:** Copies of file symbolic links can only be modified when they are absolute and are for files within the base folder. For example, if your profile is configured to copy from *C:\My Files\Backup 1\* and there is a symbolic link that points to *C:\Other Files\example.txt* (for example) then such a link cannot be modified because the file is outside of the base folder. If the link pointed to *C:\My Files\Backup 1\Sub Folder\example.txt* (for example) then that can be modified (as it is ultimately under the base folder of *C:\My Files\Backup 1\*). Relative links are not modified and copied as-is and unchanged.
Folders
- **Ignore NTFS junction points (reparse points):** If ticked then junction/reparse points are ignored (as are directory symbolic links). File hard links are not ignored. Note that although NTFS is mentioned explicitly, it is also valid for ReFS. If you change this setting you should also update your [file & folder selections](SubDirectoriesandFiles.md). Pre-V11, this option was enabled by default. From V11 onwards, this option is disabled but the following option (ignoring backwards compatible junction points) is enabled.
- **Ignore Windows backwards compatibility junction points (reparse points):** In Windows Vista and Windows Server 2008, the default locations for user data and system data changed. For example, user data that was previously stored in the *%SystemDrive%\Documents and Settings* directory is now stored in the *%SystemDrive%\Users* directory. For backward compatibility, the old locations have junction points that point to the new locations. For example, *C:\Documents and Settings* is a junction point that points to *C:\Users*. If this option is enabled then those backwards compatible junction points are ignored (as the data is stored in other directories). Enabled by default. If you change this setting you should also update your [file & folder selections](SubDirectoriesandFiles.md).
- **Copy symbolic links and junction points as-is instead of copying the directory the link points to:** If enabled, and a symbolic link, or junction point, (see description below) is being copied, then instead of copying the directory the link points to it copies the link. This means the link on the destination will point to the same directory the source link points to. Because of this you may want to make sure the symbolic links are relative and not absolute (note that junction points cannot be relative). For example, let's say you have a symbolic link on the source that points to *C:\abc\def*. When copied to the destination the destination link will still point to that same directory. However, if the link was relative and instead pointed to *..\def* then the destination copy of that link would defer to the *def* directory on the destination. This option is only available when the [Standard Windows File Copy](CopyDeleteSettings.md) method is being used, and is only used when copying between NTFS or ReFS file systems. See the section below on important points to remember when copying links.
- **When possible, modify links to use correct drive:** Absolute symbolic links, and junction points (which are always absolute and not relative), can only be modified for folders within the base folder. For example, if your profile is configured to copy from *C:\My Files\Backup 1\* and there is a symbolic link that points to *C:\Other Files\Example* (for example) then such a link cannot be modified because that folder is outside of the base folder. If the link pointed to *C:\My Files\Backup 1\Sub Folder\Example* (for example) then that can be modified (as it is ultimately under the base folder of *C:\My Files\Backup 1\*). Relative symbolic links are copied as-is and unchanged
- If you are copying directory symbolic links and junctions points, do not forget to go to [Decisions -> Folders](DecisionsFolders.md) and change the setting for "**What to do if the properties or the case of the directories are different**".
What are junction points (reparse points)?
Sometimes referred to as **soft links**, the function of a junction is to reference a target directory, unlike a hard link which points to a file. Junctions can be created to link directories located on different partitions or volume, but only locally on the same computer. It does this through the implementation of the NTFS feature called **reparse points**. Redirected targets in junctions are defined by an absolute path. An absolute path refers to a path which will contain the root element and the complete directory list that is required to locate the target. For example, C:\Main\Folder\report is an absolute path. All the information required to locate the target is contained in the path string.
Like hard links, directory junctions do not take up additional space even though they are stored on the drive partition; their function is to point to the original files in the original directory. Thus, it should be noted that if the target is deleted, moved or renamed, all junctions which point to the target will break and continue to point to a non-existent directory. Content changes from any of the junction links or the target will automatically propagate to the rest.
An example in which junctions are often used is on Windows Vista (and newer), where the name *C:\Documents and Settings* is a (hidden) junction that points to *C:\Users*. Thus, older programs that reference hard-coded legacy file paths can continue to work in Vista and newer.
Unlike symbolic links, you do not need to be an elevated administrator to create a junction point.
You can see junction points using the **dir /A** command in a command prompt window. To list only junction points and symbolic links use **dir /AL**
**What is a symbolic link?**
Symbolic links were introduced in Windows Vista/Windows Server 2008. An NTFS symbolic link is a file system object that points to another file system object. In simpler terms, it is a more advanced type of shortcut. Symbolic links can point to any **file or folder** either on the local computer or using a SMB path to point at targets over a network (the target machine on the remote end needs to run Windows Vista or later). They do not use any disk space.
A symbolic link can use either a **relative path** or an **absolute path** to point to its target. A relative path must be combined with another path in order to properly access the target file. For a detailed explanation between the difference of absolute and relative paths, please [refer to Microsoft's documentation](https://learn.microsoft.com/en-us/windows/win32/fileio/creating-symbolic-links?redirectedfrom=MSDN).
Symbolic links are transparent to users – they appear as normal files or directories. All applications will be able to recognize both the link and the target. Like junctions, symbolic links will become a stale link if the target is moved, renamed or deleted. The operating system does not check to see if the target exists.
You need to be an elevated administrator to create symbolic links, unlike junction points.
You can see symbolic links using the **dir /A** command in a command prompt window. To list only junction points and symbolic links use **dir /AL**
**What is a hard link?**
A hard link is a file that represents another **file** on the same volume without duplicating the data of that file. More than one hard link can be created to point at the same file contents. Hard links cannot link to a file contents that is on a different partition, volume or drive. Hard links on directories are not supported as it would lead to inconsistencies in parent directory entries.
Although a hard link is essentially a mirrored copy of the target file that it is pointing to, no additional hard drive space is required to store the hard link file. If a 1GB file is mirrored by 3 hard links, the total space used on the partition will only be 1GB instead of 4GB.
In addition, if any of the hard links or the original file(s) is/are deleted, the data will not be deleted, and the rest of the other links will still be able to access it. The file is only deleted once all links to it, and the file itself, are deleted. Changes made to the data contents via any of the hard links or the original will be propagated to the rest of the other items automatically (as they all ultimately point to the same file data) .
Hard links only work on Microsoft Windows operating systems that support NTFS partitions (Windows NT 4.0 or later) while FAT and ReFS (older than V3.5) file systems do not work with hard links.
An example of using hard links is when a user needs to have a file stored in two different folders. He could copy the file to the other folder and have two copies of the same file. However, twice the amount of storage space would be used. Also, if file contents of one file is changed, the other file will be outdated unless the newer file is copied over to replace it. Both issues could be solved with the use of hard links.
It is important to note that all files are hard links. A hard link is a directory entry that associates a filename with a files contents. All files must have at least one hard link. When you create a hard link you tell the operating system the name of an existing file that you would like to create an alias for. However, that is only so that the operating system knows which file contents you are referring to. It does not mean the hard link points to that file. It means that now both files point to the same file contents. For example, if you create the file *C:\test\myfile.txt*, and then create the hard link (to that file) called *C:\myfiles\textfile.txt*, you could delete *myfile.txt* (the original file) and the file would still exist.
You can list the hard links for a file using the command line utility **fsutil**, e.g. **fsutil.exe hardlink list C:\Windows\System32\notepad.exe**
**What is a shortcut?**
A shortcut is a special type of binary file (with a **.LNK** extension) used by the Windows shell (the Windows desktop interface, which is Explorer). Unlike symbolic links, hard links, etc. a shortcut file is not implemented by the underlying file system, it is just a normal file that the Windows shell uses. For example, you can open a shortcut file in a file editor.
Shortcuts are typically used on the Windows desktop and in the Windows Start menu.
**What is a reparse point file?**
Reparse point files are used to implement features such as Microsoft OneDrive cloud files appearing as normal files on your drive. Junction points and symbolic links are implemented using reparse points. Basically, reparse points are used to extend the functionality of the file system (NTFS and ReFS, not FAT). A reparse point contains user defined data and a unique reparse point tag. When a reparse point is opened, Windows calls the file system filter driver to process the file. The reparse point tag defines which filter driver to call. That filter driver can then optionally use any user defined data in the reparse tag to decide how to process it. By using this method, Windows can add features to the file system without changing the underlying file system. However, it also means that these features cannot be used by other operating systems (on a local drive) if they do not have the filter drivers installed.
You cannot create reparse point files.
**What is the difference between a soft link and a hard link?**
A soft link (junction point or symbolic link) is a link to another file or directory. You can delete what a soft link points to without the soft link itself being deleted. In this case a soft link is broken (it points to something that does not exist). A soft link can also become invalid if you rename the file or directory is points to.
A hard link connects a filename to data (file contents). All files are hard links and only files (not directories) can be hard links. You can think of a hard link as an alternative filename or the reference to data. What a hard link points to (the data) is not deleted until all the hard links pointing to that data are deleted. As a hard link does not point to another file, it cannot become broken (like a soft link can). If you rename a hard link it still points to the same data.
**What is the difference between "absolute" and "relative"?**
Symbolic links can be absolute or relative. An absolute link includes the volume (drive letter, UNC path, etc.) and specified the complete filename, e.g. *C:\Folder\Sub Folder\filename.txt*. A relative link gives a path relative to the directory (or volume) the link is in, e.g. *..\another_folder.txt,*** *SubFolder\subfile.txt*, etc. Note that a path that starts with a backslash, e.g. *\Folder\file.txt*, is a relative path (as it is relative to the volume the link is on).
**What about copying to or from UNC paths?**
When the information for an absolute link is retrieved from a UNC path (\\server\share\folder\) then it is given for the local drive it is on and is not related to the UNC path is being access via. For example, a remote Windows Server has drive *E:* which is available over the network via the UNC path *\\WINSERVER\MYSHARE\*. When SyncBack asks for the details for a link the server will return it for the local *E:* drive, e.g. *E:\folder\file.txt*. Because of this, it is impossible to remap links on UNC shares.
You can also have the issue where SyncBack thinks that a remote link matches a local link. For example, you could have a link on your local computer that points to C:\Example\. On the remote computer, accessed via a UNC share (for example), there could also be a link that points to C:\Example\. One points to the local C: drive and the other points to the C: drive on the remote computer, so they are two entirely different drives. However, SyncBack cannot know if that is true. For example, the remote C: drive may be mapped to the local computers C: drive or both may be mapped to the same drive on a third computer (if a symbolic link is used or a drive letter has been mapped to a remote computer's drive). There is no way for SyncBack to know this. There are two ways to avoid this. One way is to use relative paths in the links instead of absolute paths (only if symbolic links are used). The other is to use the Volume GUID instead of the drive letter. Both solutions also avoid the issue of drive letters changing as they will always point to the same volume regardless of the drive letter (which can change, e.g. if it's removable media). Another solution is to use [SyncBack Touch](SyncBackTouch.md) on the remote computer and access it via that.
**Copying Directory Links**
When copying directory links there are important points to note:
- When copying directory links (junction points or symbolic links) you are copying the directory link itself and not any files or sub-folders within the directory. When copying directory links SyncBack will not scan the files and folders in the directory. It's similar to copying a file.
- If you receive the error "**The matching directory on** ***Destination*** **is not a symbolic link or junction point**" then this means that, for example, the source directory is a symbolic link (or junction point) but the destination directory is a normal directory. SyncBack cannot simply delete the destination directory (and all the files and sub-folders in it) before replacing it with a link. You must resolve the issue, e.g. rename the destination directory, delete it, etc.
- Unlike file hard links, junction points and symbolic links are **soft links**, meaning what the link points to may not exist, i.e. a soft link can be broken.
**Copying File Hard Links**
When copying file hard links, it may look like SyncBack is going to copy the entire file and not the file as a hard link. However, this is not the case. As explained above, a hard link is not a link to another file but a link to the contents of a file. When SyncBack needs to copy a hard link it must find the matching contents in the destination. That may not exist yet. When SyncBack copies a hard link it will check to see if the contents the hard link points to already exists in the destination. If it does then it will link to that, otherwise the copy is just like a normal file copy (as this is the first hard link). The log file will show if a hard link was created or the file was copied.
The [Differences](TheDifferencesWindow.md) window displays the hard link information (if any) when you select a file (in the details section at the bottom-left of the window). Hints also display link information.
When a [version](CopyDeleteVersioning.md) of a file is made, it will be a copy and not a link.
**IMPORTANT:** If you change the contents of a hard link then it may not be immediately reflected in all the hard links.
**Comparing link types**
| | **Hard Link** | **Junction** | **Symbolic Link** |
| --- | --- | --- | --- |
| **Minimum supported OS** | Windows NT4 | Windows 2000/XP | Windows Vista |
| **Storage requirement for target** | Same volume | Directories must be local | None |
| **When the link is deleted...** | The data and other hard links pointing to it remains. If all associated links are removed, the data is deleted. | Windows Vista or later: target is unchanged. Windows 2000, XP & 2003: target & sub-folders are deleted | Target is unchanged |
| **The target is moved…** | Hard link stays valid | Junction becomes invalid | Symbolic link becomes invalid |
| **Relative path allowed?** | Not applicable | Not allowed; path becomes absolute when saved | Allowed |
| **Works on files?** | Yes | No | Windows Vista or later |
| **Works on directories?** | No | Yes | Windows Vista or later |
| **Security requirements** | None | None | Elevated administrator |
**Stopping Recursion**
Using links, it is easy to cause a recursion. For example, \abc\def\ghi\ can be a directory link that points to \abc\def\. This causes infinite recursion. SyncBack will detect these and put a warning in the log:
***Links to a directory ("\abc\def\") that has already been scanned (via the link \abc\def\ghi\)***
It will then stop the recursion. However, in some rare cases you may not want the directory to be skipped. In that case, put a file named ***syncback.scan*** in the directory.
- Pre-V11 versions of SyncBack did not check if a directory had already been scanned due to a junction point, or symbolic link, linking to it. V10 and older only checked if a junction point, or symbolic link, linked to a directory that had already been scanned because of another junction point or symbolic link, whereas newer versions check every time a directory is scanned and not just when it is a link.
**Further reading:** [NTFS Hard Links, Junctions and Symbolic Links](https://www.2brightsparks.com/resources/articles/ntfs-hard-links-junctions-and-symbolic-links.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Copy/Delete, VSS
SyncBack V12 introduced advanced Volume Shadow Copy Service (VSS) options that give greater control over the open/locked file copy process.
- The advanced Volume Shadow Copy Service option cannot be enabled if you are using 32-bit SyncBack on 64-bit Windows. For this feature to be available, the architecture of SyncBack must match the architecture of Windows.
- **Do not use unelevated volume shadow copy method if not run elevated:** If you installed SyncBack as a Windows Administrator (for [All Users](InstallerOptions.md)) then the [Scheduler Monitor Service](SchedulerMonitorService.md) will have been installed. Using that service, users running SyncBack [unelevated](MiscellaneousElevate.md) can copy open/locked files.
- **Use advanced Volume Shadow Copy Service:** In most cases, there is no need to use this option. SyncBack can [copy open/locked files](OpenandLockedFileCopying.md) without this option being enabled. This option is available for **advanced users** who are knowledgeable about the VSS process. When enabled, you can fine-tune the VSS options used.
Advanced Volume Shadow Copy Service Settings
- **Provider:** The Volume Shadow Copy Service (VSS) in Windows relies on components known as VSS Providers to create and manage shadow copies. A VSS Provider is a software or hardware module that implements the logic required to generate a consistent snapshot of a volume while it is in use. Applications and services can then read data from this snapshot, allowing open or locked files to be copied safely. Windows includes a built-in **Microsoft Software VSS Provider**, which is used on most systems. However, some storage solutions, such as enterprise-grade RAID controllers, SAN arrays or advanced SSDs, may install their own hardware or third-party software providers. These providers can offer enhanced performance, improved snapshot capabilities or features tailored to specific storage technologies. When configuring SyncBack, you may select which VSS Provider to use if more than one is available. In most cases, the default **Microsoft Software VSS Provider** is recommended, unless your storage vendor specifies otherwise.
- **Context:** A VSS Context defines the operational scope and behavior used when a shadow copy is created. It instructs Windows on the type of snapshot to produce, the environment in which it will be used, and the level of access permitted. Different contexts are designed for different scenarios, from standard system backups to specialized environments such as hypervisors, remote volumes, or application testing.The context determines factors such as whether the snapshot is persistent, temporary, transportable, or designed for software development and testing. SyncBack uses these Windows-defined contexts to request a shadow copy that matches your selected configuration. Choosing the correct context helps ensure that the snapshot is created successfully and is compatible with your backup or synchronization task. The default is **Client Accessible**.
- **Backup Type:** A VSS Backup Type specifies how the system should treat the data that is being backed up through a shadow copy. It informs VSS writers and applications whether the backup is full, incremental, differential, or intended for copying without modifying any internal backup markers. Each backup type serves a different operational purpose. For example, a full backup type may direct certain applications to clear logs or update internal state information after the backup completes. A copy backup type, on the other hand, performs the backup without altering those markers. This is useful when you want to create a consistent snapshot of data without affecting the backup schedule of other software. SyncBack allows you to choose the backup type so that the shadow copy behaves in a way that matches your workflow. Selecting the correct type ensures compatibility with applications that participate in VSS operations and helps maintain stable and predictable backup behavior across your system.
- **Bootable System State:** A specialized instruction for comprehensive disaster recovery scenarios where the ability to boot the system after a restore operation is the primary objective.
- **Log the files the writers report should be backed up:** If enabled, and the profile run creates a shadow copy using the advanced Volume Shadow Copy Service, extra pages are added to the [log](Log.md): **Source VSS Files** and/or **Destination VSS Files**. These pages list the file specifications that each participating VSS writer declares should be backed up. Each entry shows the path and file specification, the type (File, Database or Database log), the writer name, the component and if sub-folders are included. This option can only be used when the **Context** involves VSS writers, i.e. **Backup**, **APP Rollback** or **Client Accessible with Writers**. With the other contexts no writers participate in the shadow copy, so there is nothing to report. It is not necessary to choose any writers in **Include Writers**: if none are selected then all the writers relevant to the volume being shadowed are listed. The **Include Writers** and **Exclude Writers** settings narrow down what is listed. Note that the entries are the specifications declared by the writers (a folder, a file mask and if sub-folders are included), and not a list of the actual files copied by SyncBack. The list can be very large, possibly thousands of entries, especially when **Bootable System State** is enabled, which is why this option is disabled by default. The log pages only appear when there are entries to report, and nothing is logged when the standard volume shadow copy method or [SyncBack Touch](SyncBackTouch.md) is used. The same setting applies to both the source and the destination.
- **Include Writers:** The availability of this option depends on the **Context** selected. For example, it is not available for **Client Accessible** but is for **Client Accessible with Writers**. This setting allows you to specify which VSS Writers **must** be included in the shadow copy process. If they are not, then the profile run will fail.
- **Exclude Writers:** As with **Include Writers**, the availability of this option depends on the **Context** selected. This setting allows you to specify which VSS Writers should be excluded from the shadow copy process.
**Further reading:** [Volume Shadow Copy Service (VSS)](https://www.2brightsparks.com/resources/articles/volume-shadow-copy-vss-windows.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Versioning
For a description of versioning see the section [What Is Versioning](CopyDeleteVersioning.md#whatisversioning) below. Versioning cannot be used (on the destination) when compressing to a single Zip file.
- Some cloud storage services, e.g. OneDrive for Business, forcibly enable their own native file versioning. The storage space used by these file versions is counted in your quota (unlike services like Dropbox that do not count it). Because of this you may want to configure SyncBackPro to automatically purge excess versions, if possible. See the Automatically delete excess versions on destination/right option below.
- **Enable versioning on source/left/destination/right:** If enabled, versions of files will be kept in that location. You can, for example, choose to only keep versions in the destination/right.
- Where versions files are stored...: This setting defines [where the versions files are kept](CopyDeleteVersioning.md#whereversionskept). They are either kept in a sub-folder of each folder, or kept within a folder in the source/destination. Once you choose a setting it is not recommended that you change it otherwise you will no longer have access to your versions.
- When to version...: This setting defines when SyncBackPro should make a version of a file. By default, versions of deleted and replaced files are kept. However, you may only want to keep versions of deleted files, or only keep versions of replaced files.
- Automatically delete excess versions on destination/right: Some cloud storage services, e.g. **OneDrive for Business**, forcibly enable their own native file versioning. The storage space used by these file versions is counted in your quota (unlike services like Dropbox that do not count it). Because of this you may want to configure SyncBackPro to automatically purge excess versions, if possible. To have SyncBackPro purge them, enable this option and then set the number of versions to keep below.
- **Keep a maximum of x versions:** The number of versions of a file to keep can be specified here. Note that obviously the more versions of files you keep the more disk space will be used. When the profile is next run it will automatically delete any excessive versions (starting with the oldest version). If you are using delta versions refer to the [notes](Delta.md#keepingversions) on how many versions are kept. If the value is set to zero then versions are never deleted based on the number of versions (except when using **Backblaze B2** or the option **Automatically delete excess versions** above is enabled, when zero means keep no versions). If you are using Backblaze B2 then the default is 32. You can also [set the life-cycle rules](https://www.backblaze.com/b2/docs/lifecycle_rules.html) for files stored within a Backblaze B2 bucket.
- **Keep versions for a maximum of x days:** When a version of a file is made the date & time when the version was made is recorded. Note that this is not the last modification date & time of the file, nor is it the creation date & time of the file, it is the date & time when the version was made. Using this option you can specify how long a version should be kept. Once the version is older than the specified number of days it is automatically deleted when the profile is next run. If the value is set to zero then versions are never deleted based on their age. If you are using delta versions refer to the [notes](Delta.md#keepingversions) on how many versions are kept.
- **Version Filter**: When this button is clicked you can choose what types of files are versioned or not. The filter applies to versions on the source/left and destination/right. For example, entering ***.exe** and ***\temp\*** in the "Files NOT to version" field will not version any EXE files, or any files in sub-folders called \temp\.
Versioning is available in Expert Mode and is associated with the Copy/Delete settings. If you are using Backblaze B2 then you can only decide on the number of versions to keep. Use zero if you want your bucket life-cycle rules to manage the versioning.
### versioningwhat is versioningWhat is Versioning?
A version of a file is automatically created when one the following actions occurs, and depending on the settings **When to version**...:
- A file is to be replaced (a copy of the file to be replaced is made before it is replaced)
- A file is to be deleted (a copy of the file to be deleted is made before it is deleted)
- A file is to be moved (a copy of the file to be moved is made before it is moved, which is essentially the same as being deleted)
Assuming versioning is enabled, here are some examples of how it works:
- You choose to delete a file. SyncBack makes a version of the file and then deletes the file. At a later time you may decide that you actually wanted to keep that file. If so you can run the profile and retrieve the version and so restore the file.
- You make some modifications to a document then make a backup of it. SyncBack will make a version of the backup file that is about to be replaced then make the backup. At a later time you may decide that you did not want those changes. If so you can run the profile and retrieve the version and so restore the file to before the changes were made.
### Where are the version files kept?
Where the versions files are kept depends on the choice you made:
- In a hidden sub-folder of the folder that contains the original file: The versions of files are kept in a special hidden sub-folder called **$SBV$**. Each folder will have this special sub-folder if there any versions of files in that folder. SyncBack will automatically mark the folder as hidden when it creates it. You should not rename the folder or the files inside it otherwise the versions files cannot be used. You are free to delete the folder and the version files in it (you will obviously lose those versions) but it will not affect SyncBack as no database of those versions files is kept (it is always built at profile run time).
- In a hidden sub-folder of the base folder: The versions of files are kept in a special hidden folder called **$SBV$** which is in the base folder. For example, if your destination directory is **X:\My Backup\Documents\** then the versions folder will be **X:\My Backup\Documents\$SBV$\**. You should not rename the folder or the files inside it otherwise the versions files cannot be used. You are free to delete the folder and the version files in it (you will obviously lose those versions) but it will not affect SyncBack as no database of those versions files is kept (it is always built at profile run time).
When deciding where to keep the versions files, please consider the following:
- In a hidden sub-folder of the folder that contains the original file: If you have more than one profile that is using the same folder, and is using versioning, then the advantage of choosing this option is that all the profiles will have access to the same versions. Another advantage is that you can change the base folder and not lose the versions (as long as they are still sub-folders). The disadvantage of choosing this option is that it becomes impossible for SyncBack to know if a directory is truly empty or not. For example, if there are versions of files in the folder, but no actual files (e.g. they've all been deleted), then SyncBack does not know if the folder should be left empty of whether it shouldn't exist. This has implications for [Intelligent Synchronization](IntelligentSynchronization.md) profiles as it may cause empty folders to be created on the opposite side when you don't want them.
- In a hidden sub-folder of the base folder: The advantage of this option is that it removes the "empty folder" issue. This is because the versions are not stored in a sub-folder of the actual folder, so the actual folder can be deleted without affecting the versions. A disadvantage of this option is that the versions folder is pinned to the source/destination folder, so if you change the source/destination folder then you lose the versions. Also, if more than one profile is using the same folders then they will not share the versions (unless the source/destination path is the same).
Changing where to store the versions will result in losing those versions. If you are using Backblaze B2 then you cannot choose where to store the versions (B2 manages it).
### How to Restore Versions
Versions can be restored from the [Differences](TheDifferencesWindow.md) window (or from the [File Collision](TheFileCollisionWindow.md) window). When a profile is run as a **Restore**, and versioning is used, the Differences window will automatically show skipped files. This allows you to restore old versions of files that no longer exist, and restore versions of files where there is no change.
If you wish to restore versions without using Restore (e.g. you are using an Intelligent Synchronization profile and so cannot run it in Restore mode) then select the profile in the main window, then select **Run Attended (Ctrl-R)** from the drop-down menu on the **Run** button. This will ensure the **Differences** window is shown. You then need to enable it to show skipped files (see the **Filter** tab at the top of the Differences window to see the options).
See the [Differences](TheDifferencesWindow.md#restoringversions) help page for details on retrieving versions of files. If you are using Backblaze B2 then you must use the Backblaze B2 web interface to change and restore versions.
### Frequently Asked Questions
**Q: Can versioning be used with Fast Backups?**
**A:** Yes, but it can greatly reduce the performance gains you get with Fast Backup. If your profile is configured to display the Differences window then it is recommended you switch off this option as displaying the Differences window forces SyncBack to scan every folder to see which versions are available for each file.
**Q: Can versioning be used with Intelligent Synchronization profiles?**
**A:** Yes.
**Q: Can versioning be used with single zip files?**
**A:** No.
**Q: What if I switch from not using compression to compressing each file into its own zip file (or vice-versa)?**
**A:** You will be warned that you can no longer use the existing versions. This is because if compression is used then the old versions are also stored compressed (and encrypted, if configured so). If no compression is used then the versions are not stored compressed.
**Q: What if I switch off versioning? What happens to the versions files?**
**A:** If a profile does not use any versioning (on the source/left or destination/right) then the old versions files will be treated like any other kind of file. If you were using versioning on both the source/left and destination/right, and then switched off versioning on one side, then the old versions on that side are ignored. For example, if you had versioning on the source/left and destination/right, and then switched off versioning in the source/left, then the old versions files in the source/left will be ignored, i.e. SyncBack will pretend those files do not exist.
**Q: What if I change where versions are stored? What happens to the versions files?**
**A:** You will lose access to the existing versions. You must manually delete the versions files, or configure your profile to ignore the **$SBV$** folders.
**Q: Are the versions stored compressed or encrypted?**
**A:** Only if the files themselves are. When using delta versions, the delta files are compressed.
**Q: Why aren’t the versions stored compressed?**
**A:** Because it would slow down the profile considerably. When using delta versions, the delta files are compressed.
**Q: What if I decrease the number of versions to keep, or how long they are kept?**
**A:** When the profile is next run any excess versions will be automatically deleted.
**Q: Which versions are deleted first?**
**A:** Assuming you have set a maximum number of versions, then any excess versions are deleted (starting with the oldest version). If you have set a maximum age, then any versions over that age are deleted next. If you are using delta versioning, refer to the [notes](Delta.md#keepingversions).
**Q: Can I choose to store the versions in a directory I choose?**
**A:** No.
**Q: What if I change the source/left and/or destination/right path? Are the versions files automatically moved?**
**A:** No (this is the same as using variables).
**Q: What if I used variables in the source/left and/or destination/right path?**
**A:** If versions are kept in a sub-folder of where the original file actually is, then using variables has no effect, except obviously the versions files will be scattered across various folders based on the variable values.
**Q: If a folder is filtered out (or unselected) does SyncBack still manage the versions in that folder?**
**A:** No, because the profile is specifically configured not to use that folder.
**Q: If a file is filtered out (or unselected) does SyncBack still manage the versions in that folder?**
**A:** Yes. When looking at file versions it ignores any filtering or selection rules. This makes sense because the original file may no longer exist anyway, for example.
**Q: Does versioning affect performance?**
**A:** Normally it has a very small effect on performance (unless you are using delta versioning). SyncBack has been developed to make versions as quickly as possible. However, there are cases where a version cannot be made quickly (i.e. the file to be replaced or deleted has to be copied, instead of being moved, in which case it can affect performance if the file is large).
- Note that if you are using Fast Backups then enabling versioning on the destination can greatly reduce the performance gains you get with Fast Backup.
**Q: My log file has the error “The profile "*profile name*" was automatically disabled:** ***reason why disabled*.” What do I do?**
**A:** What happened is that a version of the file was made (i.e. it was moved into the versions sub-folder, called **$SBV$**), but the copy failed. SyncBack then attempted to move the file back from the versions sub-folder to where it was originally. However, something went wrong and the file cannot be moved back. You must manually move the file back from the **$SBV$** folder to its parent folder and rename it. Once done you should re-enable the profile via the main window (right-click on the profile and select **Enable** from the pop-up menu). This situation is extremely unlikely to happen.
**Further reading:** [Versioning](https://www.2brightsparks.com/resources/articles/versioning.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Versioning, Delta
Delta versioning is an enhancement to versioning so that only the differences between files are stored. This can save a considerable amount of storage space with large files such as virtual machines and databases.
### What is Delta?
Delta-copy is the process of storing just the differences between two versions of a file. For example, you have a large virtual machine file and make a backup of it. SyncBackPro will copy the entire file to your backup folder. Later, you update your virtual machine and run your profile to make another backup. This time, SyncBackPro will create a patch file (a delta) that contains just the differences between the original backup file and the new (updated) virtual machine file. If you repeat this step (change the virtual machine file, run the profile) then SyncBackPro will create a patch file with the differences between the original file (the first version of the file) and the new (updated) virtual machine file. So in the backup you have the original file (version 1) and two patch files (version 2 and version 3). The patch files are considerably smaller in size than the original files because they only contain the changes, so storage space is saved. Patch files are also compressed, saving even more storage space.
Using delta-copy only makes sense with large files (e.g. databases, virtual machines, Outlook PST files, etc.) and when you want to save storage space or the backup is on a slow network connection.
Delta versioning is only available if:
- Versioning is enabled. For example, you cannot enable delta versioning in the destination unless versioning is enabled for the destination.
- You cannot have delta versioning on both the source/left and destination/right.
- It can only be used with file systems, e.g. to local, external or network drives. In future versions, cloud and FTP will also be supported.
- It cannot be used in the destination/right with [Fast Backup](FastBackup.md).
- It cannot be used with [compression](CompressionSettings.md).
You should not use delta versioning if:
- Performance is important. Creating delta versions can be a time consuming process.
- If you enable delta versioning in the destination, then you **must not** change or delete the files in the destination. The same rule applies to the source. If you do then it will cause serious problems. SyncBackPro relies on the hash files it produces to create the delta patch files. Those hash files are a fingerprint of the file they represent, so if you change the files contents then the hash file is invalid for that file, which means the delta patch file is invalid.
You should consider using delta versioning if:
- Limiting the use of backup storage space is more important than performance.
- You are backing up very large files, e.g. virtual machines.
### Settings
The delta versioning settings are:
- **Enable delta versioning on Source/Left:** If enabled, and they meet the criteria defined above, versions will be delta versioned.
- **Enable delta versioning on Destination/Right:** If enabled, and they meet the criteria defined above, versions will be delta versioned.
- **Minimum file size (MBytes) for a delta to be created:** Files smaller than the size specified will not be delta versioned. The default value is 250MB and the minimum value is 10MB.
- **Maximum number of milliseconds per MByte to wait for a patch file to be created before giving up:** Patch file creation, like compression, is difficult to predict in terms of both time and size. In extreme cases—such as when the original and modified files differ greatly—creating a patch file can take several hours or even days. Because of this uncertainty, it’s advisable to set a time limit for patch file creation. If the patch file isn’t generated within this time limit, SyncBackPro will skip patch file creation and instead copy the entire file. The time limit is specified in milliseconds per megabyte (MB) of the file size being copied. For example, if you are working with a 15GB file (15,360MB), and you set a limit of 100 milliseconds per MB (the shortest allowed time), SyncBackPro will wait up to 1,536,000 milliseconds (1,536 seconds, or approximately 26 minutes) for the patch file to be created. There is a minimum waiting time of 5 minutes (300,000 milliseconds), regardless of the file size, to ensure that small files aren't skipped too quickly. For example, if you have a 150MB file and you set the maximum wait time at 100ms per MB, this would only allow 15 seconds for patch file creation, which might be insufficient. Therefore, SyncBackPro enforces a 5-minute minimum wait time in such cases. Choosing the appropriate wait time depends on the size of your files and your priorities. If conserving disk space is critical, you may want to set a longer wait time. Conversely, if speed is more important, a shorter wait time is appropriate. Setting the value to zero disables the time limit, while any positive value must be at least 100 milliseconds.
- **Disk space to use (MBytes) to cache delta hash files:** As part of the delta creation process, SyncBackPro needs to create and read **hash files**. Hash files are special files that allow SyncBackPro to create delta (patch) files without needing the original files. Hash files are considerably smaller than the original files. For example, the hash file for a 15MB file is just 38KB. These hash files will be stored in the default temporary files directory.
- **Delta Filter:** On the [Versioning](CopyDeleteVersioning.md) settings pages you can choose which types of files are versioned. If you click this button, you can specify which of those will be delta versioned. By default, all files that are versioned will be delta versioned. It is not recommended to create delta versions for compressed file types, e.g. JPG images, Zip files, etc., or for encrypted files. This is because the difference between versions of such files can be substantial.
### Keeping Versions
With delta versioning, three types of version files are kept: base files (which are the same as the original file), patch files and hash files. There is one hash file per base file, and one or more patch files per base file. When a base file is deleted, the hash file is also deleted. A base file is not deleted until all the patch files are deleted. Hash files are not versions, but support files required as part of the delta versioning process. Base files and patch files are versions.
Because of the relationship between base files and patch files (patch files need a base file), patch files are always deleted before a base file is deleted. A base file cannot be deleted until all the patch files using it are deleted, because without a base file a patch file is useless. This rule means that newer versions can be deleted before older versions. For example:
1. The first version of a file is made. As it's the first version, it's a base file (i.e. the complete file).
2. The second version of a file is made. This is a patch file (i.e. the differences between the modified file and the base file).
3. If you have set SyncBackPro to keep just one version of a file, then it is the patch file that will be deleted. This means the older version (the base file) is kept.
Because of this, it is recommended that at least 2 versions are kept.
### How to Restore Delta Versions
Restoring from delta versions is straight forward. If a file is copied from a delta version to the other location, e.g. via restore or changing the action in the Differences window, then SyncBackPro will copy the file across and rebuild it. There is nothing you need to do.
**Further reading:** [Delta Copying](https://www.2brightsparks.com/resources/articles/delta-copy.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Integrity Check
SyncBackPro can record file integrity data, e.g. hash values, of your backup files so that in future you can verify that the backup files have not been tampered with or deleted. This is especially useful when archiving data so that you can check, months or years later, that the archive is intact and valid.
File Integrity cannot be used with [backup of email](BackupEmail.md), [single zip compression](CompressionSettings.md), [MTP](MTP.md) or [SFTP](FTPSettings.md). It can be used with FTP and FTPS, as long as the FTP server supports file hashing.
For example, you create a backup profile to backup your photographs to a cloud service. Before running the profile, you enable file integrity for files the destination/right. There's no need to enable it for the source/left because you are not copying files from the cloud. If you already have a backup profile, and have already run it, then you'd also enable the **Calculate the file integrity for files that have none** option (for the destination/right). When the profile is next run, SyncBackPro will record file integrity information for the files copied to the cloud (and for those backup files that are already there, if you've enabled the option to calculate it for those that have none). The file integrity information will be recorded and update every time the profile is run. Now, at a later time, you may want to check to make sure your backup files are unchanged and none are missing. To do this, in the main user interface, right-click on the profile and select **Integrity Check** from the pop-up menu. SyncBackPro will now run an integrity check on your backup files. If any have changed, or been deleted, then the log file will provide details.
- If you are using external drives, it is strongly recommended that you do not use variables in the paths that return drive letters. For example, use **%LABELVOL=Label%** instead of **%LABEL=Label%**. Windows may change the drive letters for an attached external drive, so using the volume GUID path instead is recommended (which does not change for a Windows installation unless the drive is formatted).
Note that enabling integrity checking will have an effect on performance. The impact depends on where files are stored. For the cloud, the impact is less, but for something like FTP, or copying over the network, the impact can be much larger.
- **Enable file integrity recording for source/left:** If enabled, then SyncBackPro will record file integrity data for files that are copied to the source/left.
- **Calculate the file integrity for files that have none:** When this option is enabled, and SyncBackPro finds a file in the source/left that has no file integrity data, then it will update the file integrity database and add details for the file. If you have an existing profile, that has already copied files to the source/left, then you will probably want to enable this option so that the file integrity database can be initialized. Note that SyncBackPro has to ignore some filter options when deciding if it needs to get the file integrity data for a file. For example, the [minimum file size](CompareOptionsFileSize.md) is ignored because those filters apply to both the source/left and destination/right, but in this context it is only looking at one side.
- **Delete File Integrity Database:** Click this button to delete the entire file integrity database for the source/left. This does not delete your source/left files, just the file integrity data store in the database. Optionally, you can delete the integrity data for specific base folders, on the source/left, by clicking on the folder in the user interface and selecting **Delete from database**.
- **Enable file integrity recording for destination/right:** If enabled, then SyncBackPro will record file integrity data for files that are copied to the destination/right.
- **Calculate the file integrity for files that have none:** When this option is enabled, and SyncBackPro finds a file in the destination/right that has no file integrity data, then it will update the file integrity database and add details for the file. If you have an existing profile, that has already copied files to the destination/right, then you will probably want to enable this option so that the file integrity database can be initialized. Note that SyncBackPro has to ignore some filter options when deciding if it needs to get the file integrity data for a file. For example, the [minimum file size](CompareOptionsFileSize.md) is ignored because those filters apply to both the source/left and destination/right, but in this context it is only looking at one side.
- **Delete File Integrity Database:** Click this button to delete the entire file integrity database for the destination/right. This does not delete your destination/right files, just the file integrity data store in the database. Optionally, you can delete the integrity data for specific base folders, on the destination/right, by clicking on the folder in the user interface and selecting **Delete from database**.
If you want to check the integrity of your files, select the profile in the main user interface, right-click on the profile and select **Integrity Check** from the pop-up menu. SyncBackPro will then run an integrity check on your files. If any have changed, or been deleted, then the log file will provide details. As you can use variables in paths, and therefore could have multiple possible sources or destinations, SyncBackPro will prompt you which path should be checked (only if there is more than one possible path).
There are also [command line parameters](CommandLineParameters.md#integcheck) that can be used to run file integrity checks.
In the current version, file integrity data is not stored for versions. This may be included in future versions of SyncBackPro.
Fast Backup
Keep in mind that to populate the integrity database, SyncBackPro needs to scan the files. This means, if you are using [Fast Backup](FastBackup.md), unless you **rescan**, it cannot create the integrity database if you have deleted it.
Validating Backups
- Integrity Checking is designed for validating backups. SyncBackPro records the integrity data for the destination file, i.e. the backup file. It does not record integrity data for the original source file. For example: - You have a sync profile and enable integrity checking for the left and right. - You run the profile and it copies a file from the left to the right. SyncBackPro will record the integrity data for the right file. - You run an integrity check. The left file will fail because there is no integrity record for it.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compare Options
Fine tune the way SyncBackPro handles file change detection.
When a profile is run, SyncBackPro only copies files that have been changed and new files. It uses four different methods to check if a file is different in the source and destination:
[Last file modification date & time](CompareOptionsDateTime.md): All files record the date & time of when they were last changed.
[File size](CompareOptionsFileSize.md): All files record the number of bytes they contain.
[Hash value](CompareOptionsSettings.md#hashing): A unique value can be computed based on the contents of a file. These values can be used to check if a files contents is the same as another's.
[File attributes](CompareOptionsAttributes.md): Files have special attributes, e.g. read-only, hidden, etc., and SyncBackPro can optionally check for changes in these attributes
You have the option to not use some of these methods, and also change how they are used.
- **Skip the Differences screen when this profile is run (it is never shown when unattended):** Whenever you run a profile, it will compare the source and destination, and display the results in the [Differences](TheDifferencesWindow.md) window. However, you can skip this window by enabling this option. Note that the Differences window is never displayed if you run SyncBackPro with command line parameters (e.g. from the Windows Task Scheduler), or if a profile is run in the background, or if there are no differences. In most cases there is no need to display this window, except if you want to check to see what the differences are. The Differences window is always displayed when doing a Simulated Run, Simulated Restore, or Restore.
- Do not show the Differences screen if it is empty (due to filter settings): If this option is enabled, and the [filter settings on the Differences window](TheDifferencesWindow.md#filtersettings) are such that no files are displayed, then the Differences window will be automatically closed and the profile run will continue. The Differences window is always displayed when doing a Simulated Run, Simulated Restore, or Restore.
- Do not show the Differences screen unless there are prompt actions (due to decisions): If this option is enabled, and there are no prompts (due to [decisions](DecisionsFiles.md)), then the Differences window will be automatically closed and the profile run will continue. The Differences window is always displayed when doing a Simulated Run, Simulated Restore, or Restore.
- **Use slower but more reliable method of file change detection:** By default, SyncBackPro will not compute the hash value of a file. The reason is that it can dramatically increase the time taken for a profile to run. However, if you want to be absolutely certain that SyncBackPro detects if a file has changed, so that it is copied, then you can enable this option. The only reason to enable this option is if you do not trust the last file modification date & time of the files, and the file size may not change. For example, by default, **TrueCrypt** drive container files never change size or last modification date & time (note that you can configure TrueCrypt to change the container's last modification date & time via the Settings->Preferences main menu). Note that this option will not work if you are using an FTP server that does not support the XCRC extension (the log will contain the warning message "**The FTP server does not support hashing**").
- **Always use slower but more reliable method of file change detection:** SyncBackPro will not calculate a files hash value (to detect file differences) if it has already discovered a file is different anyway, e.g. the files are not the same size. However, if you have a (non-archival) **Fast Backup** profile, there may be situations when you always want a files hash value to be calculated even if there is no destination file, for example, and even when the files are obviously different. You may want to use this option so that a hash value can be used with incremental and differential backups.
- **Do not compare files in parallel:** If both files are stored on a normal file system (i.e. not in the cloud, on an FTP server, etc), and are over a certain size, and are on different physical drives, then SyncBack reduces the comparison time by comparing the file in parallel. This means it reads both files at the same time instead of reading one file and then reading the other. In the majority of situations this is the optimal solution. However, in some rare cases it can cause problems. If you get errors such as **Thread Error: Invalid Handle (6)** then you should enable this option to resolve the issue. Note that this setting is the same as the **Do not verify files in parallel** setting on the [Copy/Delete](CopyDeleteSettings.md) settings page.
- **Display a message if the profile run is a success (never shown when unattended):** If the profile runs without error then a dialog box is displayed stating that. Normally no message is shown after a profile is run except when simulated or an error occurs.
- **Optimize the scanning by using a larger cache:** This option is only available if you are using Windows 7/Windows 2008 R2 or newer (on both client and server). When enabled then SyncBack **may** be able to scan remote network drives (and Networked Attached Storage drives) faster. How much extra memory is used is entirely up to the operating systems and cannot be configured. However, it is unlikely to be more than a few megabytes at the most. It is best used when the remote storage is accessed via a high latency network. By using a larger cache, fewer network calls are required to list the contents of directories. Note that there can be problems with some NAS drives that are not compatible with this feature, i.e. the NAS drive may return empty filenames for all of its files. For technical reference, this feature uses the **FIND_FIRST_EX_LARGE_FETCH** flag with the call to FindFirstFileEx.
- Windows 8.1 introduced a special kind of file called a **placeholder**. These are used with **OneDrive** cloud files so that a file is essentially just a link to a file stored on the cloud. The files contents are not stored locally and are only retrieved if the file is opened, e.g. to view it. SyncBack will always ignore placeholder files. If you want to make a backup of your OneDrive files use the [Cloud](Cloud.md) options.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compare Options, File Size
Note that SyncBackPro has no limitation in regards to the size of files. However, some file systems, e.g. FAT32, do have limits on the size of files.
- **Do not replace non-empty files with empty files:** If ticked then non-empty files are not overwritten (replaced) by empty files (files with a size of zero). This option is not available if the **Ignore file size changes** option is enabled.
- **Ignore file size changes (not recommended):** You can tell SyncBackPro to completely ignore any differences in file sizes. Ignoring the file size has no impact on performance except in some circumstances when using FTP servers. Note that this option is not available if your profile is an [Intelligent Synchronization](IntelligentSynchronization.md) profile.
- **Ignore files less than… and ignore files more than...:** To ignore files of a certain size, or within a size range, set these options as appropriate. A value of zero is ignored, e.g. you cannot ignore all files over zero bytes in size. Note that the size applies to both files (left/source and right/destination) if they both exist. For example: you want to ignore files less than 10 bytes in size. If there is a source file of 9 bytes and a destination file of 11 bytes then it will not be ignored (as the destination file is over 10 bytes in size). If there is a source file of 9 bytes and a destination file of 9 bytes then it will be ignored. If there is only a source or only destination file then only it must match the size requirements.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compare Options, Date Time
- **Do not replace newer files with older files:** If ticked then new files are not overwritten (replaced) by older files. This option is only available under certain conditions.
- **Ignore file modification date & time changes (not recommended):** You can tell SyncBackPro to ignore changes to the last modification date & time of a file. Note that this option is not available if your profile is an Intelligent Synchronization profile.
- **Ignore directory modification date & time changes:** You can tell SyncBackPro to ignore changes to the last modification date & time of directories. It is recommended that you leave this at the default setting, i.e. ignore. If changes are not ignored then SyncBackPro will change the opposite directories last modification date & time to match. Which side is changed depends on what is set on the [Decisions, Folders](DecisionsFolders.md) settings page. However, keep in mind that Windows will automatically change the last modification date & time of a directory if any of its files or sub-directories are changed, with a change being anything at all, e.g. changing a sub-directories last modification date & time. This means every time you run a profile if anything is changed then the dates & times will be changed by Windows.
- **Ignore creation date & time changes:** You can tell SyncBackPro to ignore changes to the creation date & time of files and directories. If you change this option so that you are not ignoring creation date & time changes then you should enable the option to copy create date & times for [directories](CopyDeleteFolders.md) and [files](CopyDeleteAdvanced.md). For SFTP the creation date & time may be reported as the same as the modification date & time. For FTP the server must support the retrieval (and maybe setting) of creation dates and times. Many do not.
- **Ignore file date & time changes that are because of Daylight Savings Time (DST) changes:** By default if the last modification or creation date & time is exactly one hour different then it is ignored. This avoids problems with changes in the time due to Daylight Savings Time.
- **Ignore last access date & time changes:** You can tell SyncBackPro to ignore changes to the last access date & time of files and directories. The default is to ignore changes and it is not recommended you disable it unless you require it. If you change this option so that you are not ignoring last access date & time changes then you should enable the option to copy last access date & times for [directories](CopyDeleteFolders.md) and [files](CopyDeleteAdvanced.md). Most file systems do not support last access dates and times. NTFS does, but it may not be implemented, e.g. many NAS devices will not. For SFTP and FTP, it is highly unlikely that the SFTP/FTP server supports the retrieval of the last access date & time.
- **Ignore date & time changes of x seconds or less (differences are rounded down to nearest second):** In some situations, the file system itself may not accurately record the correct date & time when a file or directory was last modified or created. This can occur when using SAMBA shares (e.g. on NAS devices) and FAT formatted file systems. With this option, you can tell SyncBackPro to ignore small differences in the date & times, e.g. ignore differences of 2 seconds or less. Note that the difference is rounded down to the nearest second, so a difference of 2.99 seconds is treated as 2 seconds. To avoid inaccuracies in file systems, and differences between file systems, SyncBackPro will ignore differences of 2 seconds by default. You can of course change this if you require finer accuracy. Keep in mind that Google Docs files stored on Google Drive do not record milli-seconds, so setting that value to zero may cause issues.
- **Ignore files that have/have not been modified…:** This setting allows you to ignore files that were modified within a certain date range, e.g. within the last x days, since a date and time or between two dates and times (inclusive). Note that it uses the files last modification date & time and not the file creation date & time. See the section below for more details. If you wanted to ignore all files the have been modified before a certain date you'd set it to **Ignore files that** ***have not*** **been modified** ***since*** **[date]**. If you wanted to ignore all files that have been modified after a certain date you'd set it to **Ignore files that** ***have*** **been modified** ***since*** **[date]**. If you wanted to ignore all files that have not been modified in a certain time period you'd set it to **Ignore files that** ***have not*** **been modified** ***between date1*** **and** ***date2***.
- **Ignore files that have/have not been created…:** This setting allows you to ignore files that were created within a certain date range, e.g. within the last x days, since a date and time or between two dates and times (inclusive). Note that it uses the files creation date & time and not the last modification date & time. See the section below for more details. Keep in mind that some locations, e.g. FTP, may not store the creation date & time of a file.
- **Ignore files that have/have not been accessed…:** This setting allows you to ignore files that were last accessed within a certain date range, e.g. within the last x days, since a date and time or between two dates and times (inclusive). See the section below for more details. Most file systems do not support last access dates and times. NTFS does, but it may not be implemented, e.g. many NAS devices will not. For SFTP and FTP, it is highly unlikely that the SFTP/FTP server supports the retrieval of the last access date & time.
- The **Ignore files that have/have not…** settings above may not work as you expect it when using the **within the last** option. The following explains how the date & time comparison works: **Seconds**: Fractional seconds do not count. For example, if a file was modified 30.5 seconds ago, and you want to ignore files that have been modified within the last 30 seconds, then it will ignore the file, i.e. 30.5 seconds is treated as 30 seconds (it is not rounded up). **Minutes**: Fractional minutes do not count. For example, if a file was modified 2 minutes and 31 seconds ago, and you want to ignore files that have been modified within the last 2 minutes, then it will ignore the file, i.e. the seconds are not used in the comparison. **Hours**: Fractional hours do not count. For example, if a file was modified 2 hours, 31 minutes, and 32 seconds ago, and you want to ignore files that have been modified within the last 2 hours, then it will ignore the file, i.e. the minutes and seconds are not used in the comparison. **Days**: Fractional days do not count. For example, if a file was modified 2 days, 13 hours, 31 minutes, and 32 seconds ago, and you want to ignore files that have been modified within the last 2 days, then it will ignore the file, i.e. the hours, minutes, and seconds are not used in the comparison. **Weeks**: Fractional weeks do not count. For example, if a file was modified 2 weeks, 4 days, 13 hours, 31 minutes, and 32 seconds ago, and you want to ignore files that have been modified within the last 2 weeks, then it will ignore the file, i.e. the days, hours, minutes, and seconds are not used in the comparison. **Months**: Because months are not all the same length, SyncBackPro assumes there are 30.4375 days per month. Also, fractional months do not count. For example, if a file was modified 2 months, 3 weeks, 4 days, 13 hours, 31 minutes, and 32 seconds ago, and you want to ignore files that have been modified within the last 2 months, then it will ignore the file, i.e. the weeks, days, hours, minutes, and seconds are not used in the comparison. **Years**: Because years are not all the same length (e.g. leap years), SyncBackPro assumes of 365.25 days per year. Also, fractional years do not count. For example, if a file was modified 2 years, 7 months, 3 weeks, 4 days, 13 hours, 31 minutes, and 32 seconds ago, and you want to ignore files that have been modified within the last 2 years, then it will ignore the file, i.e. the months, weeks, days, hours, minutes, and seconds are not used in the comparison.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compare Options, Attributes
- **Do not overwrite read-only files (ignored when file to be replaced is on an FTP server):** If the file to be replaced is read-only, and this option is enabled, then the file will not be overwritten.
- **Do not delete read-only files (ignored when file to be deleted is on an FTP server):** If the file to be deleted is read-only, and this option is enabled, then the file will not be deleted.
- **Do not copy NTFS encrypted files:** If enabled then encrypted files are not copied. The encryption attribute is only available on NTFS file systems and FAT/exFAT when using Windows 10 or newer. Note that this does not mean it will not copy files encrypted using 3rd party utilities. Files stored on NTFS (EFS) can optionally be encrypted by Windows itself. It is this type of encryption that this option refers to. Windows 10 supports encrypted files (EFS) on FAT/exFAT.
- **Do not copy files marked as temporary:** If enabled, the default, then files marked as temporary are not copied. This attribute is only available on NTFS file systems.
- **Do not copy system files:** If enabled then system files are not copied.
- **Do not copy read-only files:** If enabled then read-only files are not copied. This option is useful when a source code control system is used, for example.
- **Do not copy hidden files:** If enabled then hidden files are not copied.
- **Do not copy offline files (Cloud):** If enabled then offline cloud files are not copied. These are files that have the **recall on data access file attribute**. See the section below for more details.
- **Do not copy offline files (NTFS):** If enabled then files with the **offline file attribute** are not copied. Note that although NTFS is mentioned explicitly, it is also valid for ReFS. See the section below for more details.
- **Do not copy pinned files and ignore pinned directories:** If enabled then files with the **pinned file attribute** will not be copied, and directories with that attribute will be ignored. If you change this setting you should also update your [file & folder selections](SubDirectoriesandFiles.md#jp). See the section below for more details.
- **Do not copy unpinned files and ignore unpinned directories:** If enabled then files with the **unpinned file attribute** will not be copied, and directories with that attribute will be ignored. If you change this setting you should also update your [file & folder selections](SubDirectoriesandFiles.md#jp). See the section below for more details.
- **Only copy files that do have the archive attribute set:** If enabled then only files which have the archive attribute set (on) will be copied.
- **Ignore hidden directories:** If enabled then hidden directories (and everything in them) are ignored. A hidden directory is one that has the **hidden** file system attribute. If you change this setting you should also update your [file & folder selections](SubDirectoriesandFiles.md#jp).
- **Ignore system directories:** If enabled then system directories (and everything in them) are ignored. A system directory is one that has the **system** file system attribute. If you change this setting you should also update your [file & folder selections](SubDirectoriesandFiles.md#jp).
- **Ignore placeholder directories:** If enabled then placeholder directories (and everything in them) are ignored. A placeholder directory is a directory that contains files stored on OneDrive. This feature may not work if you are using a version of Windows older than Windows 10 version 1709. If you change this setting you should also update your [file & folder selections](SubDirectoriesandFiles.md#jp).
- **Attributes to watch:** SyncBackPro can be configured to watch for file attribute changes. Note that some attributes are not supported on some file systems. Only the NTFS file system supports all the attributes. FAT32/FAT16 file systems support only the Archive, Hidden, Read Only, and System attributes.
- Note that SAMBA and non-Windows file systems may not support some of the attributes, or may require further configuration to support them.
When a files attributes are changed, SyncBackPro will copy the file. Which file is copied depends upon the **"What to do if the same file has been changed"** setting on the [Decision - Files](DecisionsFiles.md) page. For an **Intelligent Synchronization** profile which file is copied depends upon the "**...the same file has been changed**" setting. If hashing is used, then the file is not copied if the files contents are identical, and instead only the files attributes are copied.
**What are pinned files?**
A pinned file is marked to be always available offline (meaning it is stored on your local storage device) and has the **FILE_ATTRIBUTE_PINNED** (or +P) NTFS attribute. When you pin a file (e.g. by selecting "**Always keep on this device**"), the sync engine is instructed to download and maintain the full file data on the local disk.
Pinned files are excluded from automated "cleanup" processes like **Storage Sense**. Even if your disk is low on space, Windows will not automatically dehydrate (remove local data from) a pinned file.
In Windows File Explorer, pinned files display a solid green circle with a white checkmark.
**What are unpinned files?**
An unpinned file is marked to be online-only, or eligible for automatic removal, and has the **FILE_ATTRIBUTE_UNPINNED** (or +U) NTFS attribute. When you unpin a file (e.g. by selecting "**Free up space**"), the local data is removed, leaving only a small placeholder (approx. 1 KB) that contains metadata like the file name and size.
The file data is only downloaded (hydrated) when you specifically try to open it.
In Windows File Explorer, unpinned files display a blue cloud icon.
**What are offline files?**
- Files can have the **offline** file attribute (O). Any file can be marked as offline without truly being offline.
- Files can have the **recall on data access** file attribute (a). A file with the recall attribute typically means the files data is stored on the cloud and not locally, and when the file is opened, that data is retrieved from the cloud.
- Files can have the **pinned** file attribute (p). A pinned files are files that are stored locally and on the cloud. If you frequently access the file you would typically pin the file so you have rapid access to its contents. This takes up local storage space. To pin a file in Windows File Explorer, you would right-click on the file and select **Always keep on this device** from the pop-up menu.
- Files can have the **unpinned** file attribute (u). An unpinned file is kept on the cloud and not stored locally. If you rarely access the file you would typically unpin the file so it does not use any local storage. With OneDrive, an unpinned file, that is not cached locally, is also marked as **offline**. If you open the file, so it is retrieved from the cloud and cached locally, then the **offline** and **unpinned** attributes are removed and it then appears as a normal file. To unpin a file in Windows File Explorer, you would right-click on the file and untick **Always keep on this device** from the pop-up menu. You can also select **Free up space** to remove the local cache of the file.
- Directories (and files) can be **placeholders**. A placeholder is essentially a link to a directory (or file) on the cloud (usually OneDrive). Microsoft have changed how placeholders are detected numerous times over the years. If you want to skip all OneDrive files then it is recommended to enable the option **Ignore placeholder directories**.
A file could be a cloud file and have none of these attributes.
**NOTE:** If you are using OneDrive then the Windows environment variables **%OneDrive%,** **%OneDriveCommercial%** and **%OneDriveConsumer%** contain the local path where the files are stored.
**Further reading:** [Understanding File Attributes](https://www.2brightsparks.com/resources/articles/understanding-file-attributes.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Compare Options, Security
File and folder security can be copied and compared. File system security can only be used with NTFS and ReFS file systems. It cannot be used with FTP, the cloud, etc.
To only copy the security when a file or folder is copied or created then enable the option **Copy sub-directory and file security permissions** on the [Copy/Delete->Folders](CopyDeleteFolders.md#security) settings page and disable the option **Compare file and folder security**. If [Backup read/write file copying](CopyDeleteSettings.md) or [Windows File Explorer method of file copying](CopyDeleteSettings.md) is being used then all the security settings for files and folders will be copied regardless of the settings below.
To detect changes to the security of files and folders enable the option **Compare file and folder security**. When a file or folders security is changed, SyncBackPro will copy the security settings to the opposite file or folder. Which file or folders security is copied depends upon the **"What to do if the properties or the case of the directories are different"** setting on the [Decision - Folders](DecisionsFolders.md) page. For an **Intelligent Synchronization** profile which security settings are copied depends upon the "**What to do if...**" setting.
- **Compare file and folder security:** If enabled then file and folder security is compared to detect changes. This option can only be enabled if the option **Copy sub-directory and file security permissions** on the [Copy/Delete->Folders](CopyDeleteFolders.md#security) settings page is also enabled, i.e. you cannot compare security if you're not also copying the security.
The following check-boxes define what security is copied and compared:
- **Owner:** The owner of the file or folder.
- **Primary Group:** The primary group of the file or folder.
- **Discretionary Access Control List (DACL):** The discretionary access control list identifies the trustees that are allowed or denied access to a securable object.
- **System Access Control List (SACL):** The system access control list enables administrators to log attempts to access a secured object. It is recommended that you leave this unchecked.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Log
- **Display log after running a profile:** Once a profile has finished, if this option is enabled then the log file will be displayed. There are some cases where the log file will never be displayed: if the media cannot be loaded, a pre-run pause was aborted by the user, the Run Before program fails, or if the source or destination cannot be connected to via the network.
- **Note:** Due to Windows security restrictions, when the profile is run via a schedule the log may not be displayed. Basically, when SyncBackPro is run from a schedule it is not allowed to interact with the user interface.
- **Only when errors occur:** If this option is enabled, then the log file will only be displayed if any errors occurred during the profile run, e.g. a file could not be copied.
- **Log the reason why files/folders on source/left are ignored/skipped:** In some cases you may want to know why a file or folder was not copied from the source/left, for example. If this option is enabled then the log file will state the reason. Note that this is the reason why SyncBack did not wish to copy, move, or delete the file/folder. The file/folder may still have been copied if you told SyncBack to do so in the [Differences](TheDifferencesWindow.md) window.
- **Log the reason why files/folders on destination/right are ignored/skipped:** In some cases you may want to know why a file or folder was not copied from the destination/right, for example. If this option is enabled then the log file will state the reason. Note that this is the reason why SyncBack did not wish to copy, move, or delete the file/folder. The file/folder may still have been copied if you told SyncBack to do so in the [Differences](TheDifferencesWindow.md) window.
- **Do not log skipped files or folders**: If ticked then skipped files are not recorded in the log. A skipped file is one which has been skipped due to the settings on the [Decisions - Files](DecisionsFiles.md) settings page or set to skipped via the [Differences](TheDifferencesWindow.md) window. Note that skipped files will also be recorded in the ignored section of the log file if the **Log the reason why files/folders on...** setting has been enabled.
- **Do not log successfully copied, moved, or deleted files**: If ticked then if a file is copied, moved, or deleted without any problems then it is not recorded in the log file. The main reason you may want to use this option is to reduce the size of the log file, e.g. thousands of files are likely to be copied and the log file is going to be emailed. Even if this option is selected it will still log renames or if a file is copied and a reboot is required to complete the copy.
- **Log the drive serial numbers (internal and external drives only)**: If ticked then the drives hardware serial number is recorded in the log file. The hardware serial number is not the same as the serial number given to a partition when you format it. Drive serial numbers cannot be changed and are stored by the drive hardware itself.
- **Log the S.M.A.R.T. information to check for possible drive failure (internal drives only)**: S.M.A.R.T. is an acronym for Self-Monitoring, Analysis, and Reporting Technology. If ticked a check is made, at the start of the profile run, to see if the drive may fail in the near future (or if it has already failed). If a problem is detected then the profile will continue running but the profile will be recorded as failed (the Result in the log will show **Drive Failure/Warning** and the log will show which drive failed and why). This feature only works if your computers BIOS supports the S.M.A.R.T. standard (most do), it has been enabled in your BIOS and the drive supports S.M.A.R.T. (most do). SyncBackPro V9 introduced further drive health checks to improve the detection of imminent drive failures. You can also view the current S.M.A.R.T. status of all drives in the [Global Settings](GlobalSettings.md#drives).
- Note that there are countless types and versions of BIOS's available so please refer to your BIOS manual for information on how to do this. Although using this may help detect impending drive failure, it is not a perfect technology. It should not be relied upon to always detect an impending drive failure. For detailed information see the [SMART Wiki page](http://en.wikipedia.org/wiki/Self-Monitoring%2C_Analysis_and_Reporting_Technology).
- If a file cannot be copied because it was deleted before it could be copied then make it a warning and not a failure: In some cases you may get run failures because a file (usually temporary files) cannot be copied because they have been deleted (or moved) by something else before they could be copied. If you prefer to have these errors instead recorded as warnings (so they don't cause a profile run failure) then enable this option. Care should be taken when using this option as you are telling SyncBack that it should not treat an error as an error. Note that this option is ignored when running a profile as a restore, when copying from email and is also ignored when copying to or from a script location. When using a single Zip file, it is more complex. The setting will work if the file is missing (deleted) before an attempt is made to add it to the Zip file. However, if it is deleted while the Zip file is being built then it will be recorded as a warning but the profile will still be recorded as failed.
- If a file cannot be copied because it is locked then make it a warning and not a failure: If you prefer to have these errors instead recorded as warnings (so they don't cause a profile run failure) then enable this option. Care should be taken when using this option as you are telling SyncBack that it should not treat an error as an error. Note that this option is ignored when running a profile as a restore, when copying from email and is also ignored when copying to or from a script location. With FTP, it may not work because it is not always possible to know if a file on an FTP server is locked or not. When using a single Zip file, it is more complex. The setting will work if the file is locked before an attempt is made to add it to the Zip file. However, if it is locked while the Zip file is being built then it will be recorded as a warning but the profile will still be recorded as failed.
- If a file cannot be copied because it is being retrieved from cloud cold storage then make it a warning and not a failure: Some cloud storage services, e.g. Amazon S3 and Microsoft Azure, have cold file storage options. These are typically used for archiving, not backup. When a file (or a version of a file) is stored in cold storage it may take several hours to restore the file. SyncBackPro needs to ask the cloud service to restore the file (if it has not already been restored or requested to be restored), and once it has been restored, it can copy it. If a file is in cold storage, and has not yet been restored from cold storage, then this is recorded as an error. If you would prefer it to be a warning then enable this option.
- Log case collisions as warnings and not errors: SyncBackPro can detect if there is more that one file, or folder, that has the same name but different case. For example, you could have the file **abc.txt** and **ABC.TXT**. In such cases you will get a message in the log file like *The source file has been ignored because it already exists as FILENAME*, or *The destination folder has been ignored because it already exists as FOLDERNAME*, By default these are recorded as warnings, and not errors. Change this setting as appropriate.
- If an email cannot be retrieved because the mail server cannot convert it then make it a warning and not a failure: When backing up emails, the mail server may be unable to give SyncBackPro one particular email, whatever it does. Microsoft 365 and Outlook.com, for example, return the error **ErrorMimeContentConversionFailed** for a stored email they cannot convert into a file. It is a fault with that one email on the server, so it fails in the same way on every run, and no other email is affected. By default this is recorded as a warning, so the rest of the mailbox still backs up and the profile does not fail. Disable this option if you would rather it were an error. To fix the email itself, open it in your mail client and forward or move it, which recreates it, or delete it if you no longer need it.
- Include special links in the log file (HTML only): If enabled then special links will be put into the log file (if HTML log files are being created). When clicked on in any web browser SyncBack will be executed and the appropriate action taken, e.g. open the profile for modification, exclude a file, exclude a folder, etc. Note that the links will only work on computers when SyncBack is installed and permission has been given to the web browser to open such links (this permission is usually asked for the first time one of the special links is clicked). If you want to reduce the size of the log files then you should disable this option.
- If the user cannot be prompted to choose an action then:: On the [Decisions - Files](DecisionsFiles.md) and [Decisions - Folders](DecisionsFolders.md) settings pages you may have chosen to be prompted in some situations. However, if the profile is being run unattended, e.g. from a schedule, then you cannot be prompted. In this case the file is skipped and a warning is recorded in the log file. However, using this setting you can change what (if anything) is recorded in the log file. The file or folder will always be skipped, but if you are using an [Intelligent Synchronization](IntelligentSynchronization.md) profile then you may want the file or folder to be skipped and the [changes to be ignored](IntelligentSynchronization.md#ignorechanges).
- Override the program wide setting for the number of log files to keep: Using the [Log Settings](LogSettings.md#history) window you can specify how many log files all profiles should keep. However, using this setting it is possible to override that program wide setting and set the number of log files to keep for this specific profile. Note that a value of zero or below is invalid and will be silently ignored.
- Highlight profiles that have not run successfully for: If enabled, it overrides [the global setting](GlobalSettings.md#highlightnotsuccess), and if this profile has not run successfully for the specified number of days then it will have a special icon placed next to its name in the main window (if using a dark style the icon is). This lets you clearly see if the profile is not running as expected. Note that disabled profiles are ignored and it does not apply to group profiles.
- Delete log files: Click the button to delete all the profiles log files. The button is disabled if the profile has no log files to delete. To delete the logs files of all profiles go to the [Log Settings](LogSettings.md) tab via Global Settings in the [burger menu](PreferencesMainMenu.md)
- S.M.A.R.T. Test: Click the button to have all connected drives tested to see if a drive is predicted to fail. Note that some drives cannot be predicted to fail. An error message is only displayed if a drive is predicted to fail or if there is no way to predict failure of the drive.
### Log File Sections
A log file has several sections. If a section is empty, e.g. no files have been copied, then the section may not exist:
- **Main Page**: The main page gives a brief overview of what happened when the profile was run. It also gives a description of the source/left and destination/right.
- **Changes**: This section lists all the files and folders that were changed.
- **Copied**: This section lists all the files and folders that were copied.
- **Deleted**: This section lists all the files and folders that were deleted.
- **Renamed**: This section lists all the files and folders that were renamed.
- **Skipped**: If a file or folder is skipped (i.e. its **Action** is set to skip) then it is logged here. A skipped file or folder is different from an ignored file or folder because you can still see the file or folder in the [Differences](TheDifferencesWindow.md) window.
- **Warnings**: All warnings are listed on this page. An example of a warning is when a file has been deleted before it can be copied (see the setting above).
- **Errors**: When an error occurs a file or folder has failed to be copied, moved, etc.
- **Ignored Reason**: If you have enabled the option to record the reason why files/folders are ignored/skipped (see above) then this section of the help file lists why the file or folder was ignored, e.g. it was filtered out. An ignored file is one that does not appear in the [Differences](TheDifferencesWindow.md) window, i.e. it is completely ignored and not treated as part of the profile.
- **Source VSS Files / Destination VSS Files**: These sections list the file specifications that each VSS writer reports should be backed up. They only appear if a shadow copy was created using the advanced Volume Shadow Copy Service and [the option to log the files the writers report should be backed up](CopyDeleteVSS.md) is enabled.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Log, Email Log
After a profile has been run, SyncBackPro can email the log file. This is especially useful when SyncBackPro is located on a remote machine. The log file can optionally be sent as an email attachment.
In today's world of junk email, many email servers are configured to reject any email that appears to be spam. If your email server is rejecting your log email please make sure you have filled out the settings correctly, e.g. valid **To** and **From** addresses are used. Also, when using the autodiscover/autoconfig option, it is more likely to be treated as spam.
As an alternative to emailing, or in addition to, you may want to use [webhooks](SetupWebhook.md) or [Pushover](Pushover.md).
This profile settings page can use and create [shared settings](SharedSettings.md).
- **Email the log file after the profile has run**: To email the log file, enable this option. If the profile is disabled then no log will be sent.
### Sending Server Connection Details
- **Email Service:** If you use a public email service, e.g. GMail, then you may be able to choose it from the drop-down list. If so, some of the settings will be set automatically for you. Note that you may still need to set things like the login username as they are unique to your account.
- **Server Type:** For most people this should be left as SMTP. However, if you're using Gmail with OAUTH, or Outlook/Office 365, then you can change this as appropriate. If you are using Microsoft Exchange 2007 or newer then do not use the WebDAV option unless you are using an old version of Microsoft Exchange (2000 or 2003). If the autodiscover/autoconfig is enabled then this setting is not required and so not available.
- **Hostname**: This is the hostname of your email server, e.g. **smtp.mailserver.com**. If you're using Microsoft Exchange then enter just the hostname and not the URL (also set the **Server Type** as appropriate). If you do not specify a hostname then SyncBackPro will use the hostname specified in the MX record for the **To** email address (the first one if more than one is specified). If the autodiscover/autoconfig is enabled then this setting is not required and so not available. If the search icon is visible (you are using SMTP and have supplied a **To** email address), and pressed, then SyncBack will try and find the hostname by using the **To** email address. If found then it will prompt if you want to use the hostname it has found. If you know which hostname you should use then it is recommended to use that instead. This is only for cases where you do not know what hostname to use.
- **To**: The email address to send the log file to. [Variables](Variables.md) can be used. You can enter multiple email addresses by separating them with **semi-colons** or **commas**, e.g. you@email.com; you@yahoo.com. If the search icon is visible (you are using SMTP and have supplied a **To** email address), and pressed, then SyncBack will check to see if the **To** email address is valid (if you provide multiple email addresses then only the first is used). To do this it connects to the SMTP server and checks if the email address is correct. Note that many email servers will accept any email address, so this may only be useful if the server explicitly states the email address is invalid.
- **From**: The email address from which the log file has been sent. [Variables](Variables.md) can be used. Typically you would put your own email address here. **Note that some email servers may reject the email if it is not from a valid email address or an email address on that server**.
- **Subject**: The subject to use for the email. You can use [variables](Variables.md), e.g. **%PROFILENAME%**, in the subject, e.g. **Log file for %PROFILENAME%**. The subject is part of the shared settings, so it is advisable to use variables.
- **Use autodiscover/autoconfig to send directly**: For some email services (typically ones you manage and can configure), you can enable this option and not require many of the other settings (Server Type, Hostname and login details). This can greatly simplify configuration and not require a password that may change. You can check if this setting can be used by setting **To** and **From** and then clicking the **Test Email Settings** button. This option is only available if the **Server Type** is SMTP and a linked account is not being used. See the section below for details.
- **Login**: If you must login to your email server (and if you are using Microsoft Exchange then you must) then select **Must login to email server** and enter your login username and password below. Note that some servers require a login whereas others may fail if you do attempt to login. Check with your email provider or systems administrator. Some email services have 2-step verification for added security. In this case the password may need to be an application specific password and not your actual password. Refer to your email services documentation on how to create an application specific password. Due to spam, most email servers now require you to login. SyncBackPro can login to email servers that require a username and password in clear-text, NTLM, CRAM-MD5, or MSN. If the autodiscover/autoconfig is enabled then these settings are not required and so not available.
- **Username**: The username used to login. This is only enabled if **Login** is set to **Must login to email server**. You can use a [secret](SecretsManager.md) for the username.
- **Password**: The password used to login. This is only enabled if **Login** is set to **Must login to email server**. If your password has spaces in it, and you're not using Exchange, then you may need to enter it with double-quotes. For example, if your password is **abc 123** then enter **"abc 123"** as the password. If you are using Gmail, and have 2FA, then this is the [App password](https://myaccount.google.com/apppasswords) you created. You can use a [secret](SecretsManager.md) for the password.
- Prompt for the password when run (profile will fail if run unattended): If this option is enabled then every time the profile is run SyncBackPro will prompt you for the password. If the profile is being run unattended, then no prompt will be displayed and the profile run will fail.
- **Test Email Settings**: When clicked SyncBackPro will use the settings above to send a test email. Note that it will only email the summary page (if using [HTML logs](LogSettings.md)) and not the entire log as the test is to make sure the settings are correct.
## Gmail (without 2FA)
If you are using a Gmail account, and are **not** using 2FA (Two Factor Authentication) with your Google Account, the following explains how to configure it so it can be used with SyncBackPro:
- [Login to your Gmail account](https://www.google.com/gmail/)
- Click **Settings** link in top-right
- Go to **Forwarding and POP/IMAP** tab in Settings
- Enable **Enable POP for all mail (even mail that's already been downloaded)** and **Enable IMAP**
- Change **When messages are accessed with POP** to **keep Gmail's copy in the Inbox**
- Click **Save Changes**
- You also need to allow access via less secure apps. To do this visit https://myaccount.google.com/lesssecureapps
The problem with Gmail is that it sometimes forgets these settings and so you may have the problem of SyncBackPro saying there are no emails. This is because the Gmail POP server is saying there aren't any emails because the **Enable POP for all mail** setting is sometimes "forgotten" by Gmail. Also, sometimes Gmail doesn't appear to delete emails that SyncBackPro asks it to delete.
## Gmail Authentication
If you are using [OAUTH with Gmail](Gmail.md), then there is no need for an App Password. You use the client ID and password to authorize. We recommend using a [Linked Account](LinkedCloudAccounts.md).
If you are using 2FA (Two Factor Authentication) with your Google Account, and **not** using OAUTH with Gmail, then you need to create an [App Password](https://myaccount.google.com/apppasswords) for SyncBack. You then use that password instead of your Google password.
## Autodiscover/Autoconfig
How does the "**Use autodiscover/autoconfig to send directly**" option work? It takes the domain name from the **To** email address and looks up its **MX** record via a DNS lookup. That gives SyncBack the SMTP server for that email address. If there is no **MX** record then it will use the domain name itself.
If this option does not work (and it does not for major email services like **GMail**, **Hotmail**, etc.) then there can be several reasons:
- This option is unlikely to work unless the SMTP server can whitelist IP addresses, and your IP address is in that whitelist. This also means you (the sender) need a fixed IP address.
- If the SMTP server is using DKIM, SPF, DMARC, etc. then it is likely to fail. SMTP servers are either connected to directly by email clients (like SyncBack) or by other email servers. To avoid spam, when connected to by clients, they rely on username and password authentication. When connected to by other servers (that do not use usernames and passwords) they will use other techniques, e.g. DKIM, SPF, etc. to validate the connection.
- You are sending to multiple recipients. In this case it will use the first senders SMTP server to send to all recipients, which will probably fail if they are not using the same domain.
- Other security restrictions or requirements.
Note that if it does not work then this is due to the configuration of the receiving email server (based on the **To** email address), e.g. DKIM or SPF settings, blacklisting, , etc.
**Further reading:** [Simple Mail Transfer Protocol (SMTP)](https://www.2brightsparks.com/resources/articles/simple-mail-transfer-protocol-smtp.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Log, Advanced
- **Only send the email if an error occurs:** If you only want the log file to be emailed if the profile failed then tick this check box, otherwise the log file will be emailed after every run. The email subject will be prefixed with **[Failed]** if the profile run failed.
- **…or there are differences:** If you only want the log file to be emailed if the profile run failed, or differences were found between the source and destination, tick this check box.
- **…or there are no differences:** If you only want the log file to be emailed if the no differences were found between the source and destination, tick this check box.
- **Do not send the email if it is a simulated run:** In most cases you probably don't want to have the log emailed if it is a simulated run. If so, enable this option.
- **Do not send the email if it is a manual run:** In most cases you probably don't want to have the log emailed if the profile has been run manually, i.e. not automated from a schedule or other trigger. If so, enable this option.
- **Do not attach the log file, just send the email body:** If you only want the email body, and not the log files attached, then tick this option.
- **Only attach the log file if an error occurs:** Tick this option if you only want the log file attached to the email if the profile run fails.
- **Compress the attached log file and give the attachment a filename of …:** This option is enabled by default. When enabled the log file will be compressed into a single zip file and attached to the email. Some email programs, or corporate environments, will not allow attachments of certain types. If this is the case try changing the filename to **log.txt**, for example. You can use variables in the filename, e.g. %PROFILENAME%.zip.
- **Password:** The password to encrypt (and decrypt) the log file. You can use a [secret](SecretsManager.md) for the password.
- **Use high compression:** If enabled then LZMA compression is used which has a higher compression ratio than standard (Deflate) compression. Typically, with large log files, it may have a 30% better compression ratio. However, it may take much longer to compress and use more memory. Also, you may need to use 3rd party Zip software to open the resulting Zip file.
- If SyncBackPro believes the log cannot be emailed because it is too large then it will attempt to send the email without the log attached. In this case the subject will contain **[Attachments Removed]** Note that the email server decides if an attachment is too large. It is also not always possible to know if the email was rejected because the email attachments are too large.
### Email Server Connection Details
- **Connection Encryption:** If your email server requires an SSL/TLS encrypted connection, or it supports one and you want your email to be transmitted to the server in encrypted form, then select the appropriate option. Some email servers, e.g. GMail, require an encrypted connection. If your SMTP server supports a direct encrypted connection then select **Direct SSL/TLS connection** option. The **Use STARTTLS command** is different from the direct setting in that it connects to the SMTP server then requests that the connection be encrypted by sending a special command to the email server. Choose this option if your SMTP server does not support a direct encrypted connection. If you are using **Microsoft Exchange** then select None for an unencrypted connection or any of the other values for an encrypted connection.
- **Port:** The port number of your SMTP email server. It is recommended you leave it as zero (then SyncBackPro will use the default port number based on your settings). If you are using Microsoft Exchange then this value is not required.
- **Local computer name:** Leave this as the default unless you are familiar with the HELO SMTP command. SyncBackPro tells the SMTP server that this is the name of the computer (the hostname). Some SMTP servers are configured to reject attempts to use them from computers that identify themselves incorrectly or via an I.P. address. SyncBackPro attempts to detect and correct this by not identifying itself. To tell SyncBackPro to not identify itself set this value to * (a single asterisk). To tell SyncBackPro to send the local computers name (instead of I.P. address) set this value to + (a single plus sign).
- **Reply To:** The email address any replies should be sent to. [Variables](Variables.md) can be used. You can leave this blank.
- **CC:** Carbon-copies of the email can be sent to other email addresses. [Variables](Variables.md) can be used. You can enter multiple email addresses by separating them with **semi-colons** or **commas**, e.g. you@email.com; you@yahoo.com
- **BCC:** Blind-carbon-copies of the email can be sent to other email addresses. [Variables](Variables.md) can be used. You can enter multiple email addresses by separating them with **semi-colons** or **commas**.
- **Receipt:** If you require a delivery receipt to be sent then enter the email address of the person to receive that receipt. Note that a receipt is only sent if the email client or email server supports this feature. [Variables](Variables.md) can be used.
### Email Encoding
- **Header encoding:** It is recommended that you do not change this setting. This setting defines the encoding format used for the email header.
- Transfer encoding: It is recommended that you do not change this setting. This setting defines the encoding format used for the email body.
- Character set: It is recommended that you do not change this setting. This setting defines the emails character set. If you are having problems reading your email in some email clients, or you have set the filename of the log file to something that is not English, then you may resolve the issue by changing the character set to **Universal Alphabet (UTF-8)** or another appropriate value.
- **I want to customize the email body:** If ticked then you are able to create a custom email body instead of using the default. The email body can use Windows environment variables, e.g. **%HOMEPATH%,** as well as all the [SyncBack Variables](Variables.md) and some variables that are [used especially](Variables.md#emailinglog) in the subject and email body. Note that the email body is not stored as part of the shared settings or as a profile default. You can use either a plain text body and/or a HTML body. Keep in mind that the readers email client will need to be able to display HTML email. Because of this you may want to have both a text body and HTML body so that email clients that do not understand HTML emails will display the text body instead.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Log, Proxy
- **I use a proxy server:** If you must use a proxy server to connect to your email server then you must enable this option.
- **Hostname:** This is the hostname of the proxy server, e.g. proxyserver.com. [Variables](Variables.md) can be used.
- **Username:** Your proxy login username. If you do not need to login to your proxy server then leave this blank. [Variables](Variables.md) can be used.
- **Password:** Your proxy login password. If you do not need to login to your proxy server then leave this blank.
- **Port:** The port number of the proxy server. This value varies depending upon the type of proxy server software used.
- **Proxy Type:** This setting defines what type of proxy server you are using. It is important the correct setting is used otherwise SyncBackPro will not be able to login to your proxy server. Check with your Network Administrator on which proxy setting to use.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Log, Pushover
SyncBackSE and SyncBackPro can be configured to send a Pushover message if a profile run fails and/or succeeds. Pushover messages can be received on a wide range of devices, e.g. iOS, Android, macOS and Windows. A Pushover message is similar to an SMS message, but without the cost. To be able to use this feature you must create a [Pushover account](https://pushover.net/).
If you use [Pushsafer](https://www.pushsafer.com/) then you can send a message using [webhooks](SetupWebhook.md). Use the Pushsafer dashboard to create the URL, then paste it into the webhook URL setting and leave the webhook message empty.
- **Note:** Pushover has strict limits on the number of messages that can be sent per month. Those limits apply globally to SyncBackSE and SyncBackPro and are reset at midnight (Central U.S.) on the first day of each month. If that limit is met then no more messages can be sent by anyone until the limit is reset. SyncBack will limit how many Pushover messages you can send per day. We **strongly recommend** that you create your own application token and use that. That way you can have your own limits which will be more than enough.
- **Send a Pushover message if the profile run fails:** If enabled then a Pushover message is sent if the profile run fails.
- **Send a Pushover message if the profile run is a success:** If enabled then a Pushover message is sent if the profile run is a success.
- A message will only be sent if the profile was **not** run manually and it was **not** a simulated run.
- **User/Group key:** Enter your user key here, or enter a group key if you want the message sent to a group of people. Visit your account in Pushover to see your User Key and to create Group Keys. To make sure the key, and device, are correct click the **Verify** button.
- **Device:** This setting is optional. The default is to send the message to all the devices you have registered with the user/group key. You may choose to send the message to a specific device only. Click the **Refresh** button to populate the list.
- **Title:** This setting is **required** and is the title for the message. Because the same title is sent on success and failure, we recommend using [variables](Variables.md), e.g. %RUNRESULT% or %PROFILENAME%. The maximum length is 100 characters.
- **Message:** This is the message to send and is **required**. Because the same message is sent on success and failure, we recommend using [variables](Variables.md), e.g. %RUNRESULT% or %PROFILENAME%. The maximum length is 500 characters.
- **Use my own application token:** This setting is optional, but we recommend that you create your own application token so you are not sharing the default message limit with other SyncBack users. If you use your own application token then you can use the **Test** button to make sure the settings are correct.
- **Test:** The Test button will only be available if you have entered your own application token and entered a User/Group key.
**Further reading:** [Pushover](https://www.2brightsparks.com/resources/articles/pushover.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Log, Webhook
Webhooks are a way to send a message to a server (usually a web server) or service (e.g. Microsoft Teams). They are a way for systems to communicate using HTTP URL's (like you can send an SMS to a phone number).
- We **do not** provide technical support for using webhooks. Unfortunately we frequently receive requests for help using webhooks where the issue is that the webhook has not been configured correctly or the user does not understand how the webhook works. Please contact the provider of the webhook service for help and not 2BrightSparks. It is important to note that if you send a message, e.g. JSON, then the webhook call will be a **HTTP POST**. If there is no message then the webhook call will be a **HTTP GET**.
- **Send a webhook message if the profile run fails:** If enabled, then when the profile run finishes, the specified webhook will be called if the profile fails.
- **Webhook URL:** This is the URL that is called. It can contain [variables](Variables.md). For the URL, you must consult the server or service you are using.
- **Message:** This is the (optional) message that is sent to the webhook URL. It can contain [variables](Variables.md). The message content may need to be in a specific format (e.g. JSON) or may not be required (consult the server or service you are using). If you send a message, e.g. JSON, then the webhook call will be a **HTTP POST**. If there is no message then the webhook call will be a **HTTP GET**.
- **Send a webhook message if the profile run is a success:** If enabled, then when the profile run finishes, the specified webhook will be called if the profile does not fail.
- **Webhook URL:** This is the URL that is called. It can contain [variables](Variables.md). For the URL, you must consult the server or service you are using.
- **Message:** This is the (optional) message that is sent to the webhook URL. It can contain [variables](Variables.md). The message content may need to be in a specific format (e.g. JSON) or may not be required (consult the server or service you are using). If you send a message, e.g. JSON, then the webhook call will be a **HTTP POST**. If there is no message then the webhook call will be a **HTTP GET**.
Also, it is important that you refer to the documentation (and technical support) for the webhook service you are using. Also, there are free sites available to [test your webhooks](https://www.google.com/search?q=test+webhook).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Misc.
This page is for miscellaneous settings that don't fit into other categories.
- **Priority:** These are the priorities used when running this profile. You can define the priority used when run manually, and also when run automatically. A profile with a higher priority will run faster than a profile with a lower priority, if both the profiles are run at the same time. There are seven levels of priority from **Idle** (the slowest) to **TimeCritical** (the fastest). It is not recommended that you use **TimeCritical** as it may cause your entire computer to slow down or lock up. If you want a profile to use the least amount of CPU time, then select **Lowest**. If **Idle** is used the profile may never be run. Note that the [-priority](CommandLineParameters.md#priority) command line parameter will override this setting.
- **Flush all open files before running profile:** If enabled then all changes to files that are still in the cache are written to disk. This will add a few seconds to the time taken to run a profile.
- **Stop Windows from sleeping while this profile is running:** In some situations you may not want Windows to sleep while a profile is running. If so, enable this option. Note that this option does not stop a user from putting Windows to sleep. It only stops it sleeping due to the power saving settings in Windows.
- **Pause for…:** In some cases you need to give Windows time to reinitialize network connections and devices (or spin-up CD's) once it comes out of hibernate or standby. This option lets you have the profile pause for a number of seconds before the profile starts running. The pause will be ignored if the profile is set to run on [shutdown/logoff](WhenLoginLogout.md) and is run at that time (otherwise it would delay Windows shutdown). You can achieve something similar by using the command line parameter [-countdown](CommandLineParameters.md#countdown)
- **Password protect this profile from modification or deletion:** To protect the profile from modification or deletion enter a password here. If a password is entered then whenever any attempt is made to modify or delete the profile then the user will be prompted for the password. Note that if a password protected profile is using [shared settings](SharedSettings.md) then you must take note that those shared settings could be changed via an unprotected profile. **Important: It is your responsibility to remember the password.**
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Misc., Media
- **Eject source/left media after the profile has run:** If enabled, the source/left media will be ejected once the profile has completed. For example, if your source/left directory is on a CD then the CD will be ejected. Note that this option may not work with USB devices.
- **Eject destination/right media after the profile has run:** If enabled, the destination/right media will be ejected once the profile has completed. Note that this option may not work with USB devices.
- **Load source/left media before the profile is run:** If enabled, the source/left media will be loaded/inserted before the profile is run. For example, if your source/left directory is on a CD then the CD will be loaded.
- **Load destination/right media before the profile is run:** If enabled, the destination/right media will be loaded/inserted before the profile is run.
You can click the **Test Eject** and **Test Load** buttons to test if the media can be ejected or loaded. It will work with most removable media, e. g. USB drives, SD cards, etc.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Misc., Speech
You can configure SyncBack to speak (or to play a .WAV sound file) when certain events occur. To play a .WAV file use the filename of a .WAV file. If the file exists then it will attempt to play it. Note that it must be a .WAV file and not any other type of file, e.g. MP3. To play other sound file formats you must convert them to .WAV files using 3rd party programs. You can use variables. For example, if you used %DATE% then it would say the current date. For more control over how the speech works, you can use [XML](https://msdn.microsoft.com/en-us/library/ms717077(v=vs.85).aspx#Custom_Pronunciation).
### Azure (formerly Bing) Speech
By default, the speech feature built into Windows is used. However, this is limited and can have problems with languages other than English. To overcome this, you can use Azure Speech. For this to work, you **must** be connected to the Internet, because the speech audio is created online using cloud services. Using Azure Speech, you also have a large range of languages and voices to choose from. You can also enter the speech text in the language you wish to use, e.g. French. Note that you cannot play WAV files using Azure Speech. SyncBack was updated in V11 to use the latest API to Azure Speech.
The speech/sound may be clipped if it is longer than 30 seconds.
- From December 2019, Microsoft require a TLS 1.2 connection to their speech servers. In Windows, you must do this via **Internet Explorer**:
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Misc., Elevate
SyncBackPro and SyncBackSE can run elevated or not elevated (see a description of elevation below). By default, they are run elevated (unless you have installed SyncBackPro only for the [current user](InstallerOptions.md)). Some functionality, e.g. copying locked files, requires elevation (see below). However, for security reasons you may not want to run some profiles elevated, or you may require that they are always run elevated, which is the reason for these settings.
- **Elevation requirements:** By default, a profile will run regardless of whether SyncBack is elevated or not. You can optionally choose to make sure a profile is always run elevated or not elevated. If you require the profile to run elevated, for example, then if you start a profile from a non-elevated instance of SyncBack then it will start an elevated instance of SyncBack and run the profile using that elevated instance. Also, if you schedule a profile, SyncBack will configure the scheduled task appropriately depending on the elevation setting.
- Allow this profile to be run by the shadow/virtual account (if Administrator protection is enabled in Windows): Windows 11 (24H2 or newer) includes an option to enable Administrator protection (it is off by default). If you start SyncBack elevated, and Administrator protection is enabled, then SyncBack will not run the profile unless this option is enabled. This is to protect you as the profile will not be run using your actual Windows account but are instead using the shadow/virtual administrator account. This may have a major impact on your profiles. Refer to the [Administrator protection](AdminProtWindows.md) help page for details.
- **Create Not Elevated EXE:** If you are running SyncBack elevated, and the non-elevated version of SyncBack does not exist, then you can click this button to create it. Note that the non-elevated version of SyncBack is created using a hard-link, meaning it does not use disk space. However, if a hard-link cannot be created, e.g. the file system does not support it, then it has to make a copy of the executable which does take a very small amount of extra disk space.
- **Create Administrator EXE:** If the Administrator version of SyncBack does not exist then you can click this button to create it. The Administrator version is used when deleting, creating or modifying elevated schedules from a non-elevated instance of SyncBack. Note that the Administrator version of SyncBack is created using a hard-link, meaning it does not use disk space. However, if a hard-link cannot be created, e.g. the file system does not support it, then it has to make a copy of the executable which does take a very small amount of extra disk space.
If you configure a profile to be run elevated, or not elevated, and it cannot be run using the correct elevation, then the profile will fail to run.
- If a schedule is created by an Administrator user, even if the non-elevated version of SyncBack is used, then the scheduled task is always run elevated regardless of the settings. For this reason, if the profile has been started by the task scheduler, then it will not fail if run elevated when it should not be, for example.
- **What is "elevation"?** When Windows Vista was introduced, it changed the way user security is implemented in Windows. Previously, e.g. in Windows XP, when a program was run it was given all the security rights of the user that started the program. So if you were an Administrator, the program had access to everything. With Vista, the concept of elevation was introduced. Basically, if the software did not need special access rights, e.g. it was a game, then it would not request those rights and not be given them. So even if an Administrator started the game, it would run just like a non-administrator user had started it, i.e. it would not be run with elevated rights. Some software, e.g. backup software, system utilities, etc., may require Administrator access rights to function correctly, e.g. they need to access files owned by other users. Such software is configured to run elevated, i.e. it requires elevated privileges (the rights the Administrator has), when started. This is why you receive a confirmation prompt from Windows asking your permission to run the software elevated. Windows is asking your permission before software with elevated privileges is started.
- **How is there an elevated and non-elevated version of** **SyncBack? What is the Administrator version of** **SyncBack?** An executable can define the execution level it requires in its manifest. The manifest can be embedded in the executable or in a separate XML file. SyncBack uses an XML file. SyncBackPro, for example, has the executable filename of **SyncBackPro.exe**. A manifest file has the same name as the executable, but with **.manifest** tagged onto it. So for SyncBackPro.exe the manifest file is **SyncBackPro.exe.manifest** The non-elevated version of SyncBackPro has the filename **SyncBackPro.NE.exe** with the manifest file being called **SyncBackPro.NE.exe.manifest** The Administrator version of SyncBackPro has the filename **SyncBackPro.RA.exe** with the manifest file being called **SyncBackPro.RA.exe.manifest** The executable files are identical. A hard-link is created (if possible), which essentially means they point to the same contents on the disk. Only the manifest files are different, which tells Windows to start it elevated or not elevated. If you have installed SyncBackPro only for the [current user](InstallerOptions.md) then it will not run elevated.
### Functionality
If SyncBackPro is **not** run elevated then the following functions, due to security restrictions in Windows, cannot be used:
- The [Scheduler Monitor Service](SchedulerMonitorService.md) will not be installed if you are installing for the [Current User](InstallerOptions.md). This is because services can only be installed by Windows administrators.
- [Open/locked](OpenandLockedFileCopying.md) files cannot be copied. Access to the shadow volume is restricted to administrators. The log file will contain the error: **Unable to create shadow volume: Initialization failure**
- The [backup file copying](CopyDeleteSettings.md) method cannot be used (it will gracefully fallback to the standard file copying method).
- Directory [symbolic links](CopyDeleteLinks.md#symlink) cannot be created.
- When creating a [schedule](SchedulingProblems.md), you can only create one that will run when you are logged in.
- [Virtual drives](SyncBackContainer.md) cannot be mounted.
- [Restore points](WindowsSystemRestorePoint.md) cannot be created. Note that Windows Server does not support creating System Restore Points.
- You may not have access to some files and directories (due to NTFS security).
- The SyncBackPro Window [Shell Extension](ShellExtension.md) cannot be used.
- When using the **BTRFS** file system, e.g. with **ASUStor** NAS devices, there can be issues where directories are not found on the NAS drive unless SyncBack is run elevated. With SyncBackPro and SyncBackSE the log will contain the message "Recommend running elevated as you may be using BTRFS file system".
If SyncBackPro is run elevated then take note of the following:
- [Mapped network drives](GlobalSettings.md#mappeddrives) cannot be seen by elevated processes.
**Further reading:** [SyncBack Elevation](https://www.2brightsparks.com/resources/articles/syncback-elevation.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Misc., Label
If you are using removable media, e.g. SD card, external drive, etc. then you may want SyncBack to change the label of the volume. [Variables](Variables.md) can be used in the label, e.g. *%DAY%%MONTH%%YEAR%*
- **On success, relabel the source/left volume to the following:** If the profile run is a success, then the drive label for the source/left is changed to what you specify.
- **On failure, relabel the source/left volume to the following:** If the profile run fails, then the drive label for the source/left is changed to what you specify.
- **On success, relabel the destination/right volume to the following:** If the profile run is a success, then the drive label for the destination/right is changed to what you specify.
- **On failure, relabel the destination/right volume to the following:** If the profile run fails, then the drive label for the destination/right is changed to what you specify.
### Example Use Cases
| **Description** | **Setting** | **Example Result** |
| --- | --- | --- |
| Date-stamped backup identification. Makes it immediately clear when the backup was last updated | Backup-%DAY%-%MONTH%-%YEAR% | *Backup-19-11-2025* |
| Weekly rotation scheme. Useful for rotating weekly backup drives. | WeeklyBackup-%DAYNAME% | *WeeklyBackup-Monday* through *WeeklyBackup-Sunday* |
| Monthly archives. Ideal for monthly backup rotation. | Archive-%MONTHNAME%-%YEAR% | *Archive-November-2025* |
| Timestamp for multiple daily backups. Useful when running multiple backups per day. | Daily-%YEAR%%MONTH%%DAY%-%HOUR%%MINUTE% | *Daily-20251119-1430* |
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Programs Before
Define what programs will run before and/or after the profile runs.
You have the option of running an external program before the profile starts and/or after the profile has finished. This useful option allows you to prepare the files being copied before the profile has run, for example. There are many possible uses for these settings in SyncBackPro, so read through the following and consider how they may be applied to your own computer setup.
- **Run before profile**: To have a program run before the profile is run, enable the **Run before profile** checkbox and type the name into the edit-box or click the folder icon next to it. For example, you could type **notepad.exe** so whenever the profile starts Notepad will be run. You can use variables to define the program name, path, etc. See the [section below](ProgramsBefore.md#variablesandswitches) for more details.
- Note that if the program name, or the folder it is in, contains spaces then you must wrap the entire program name with double-quotes otherwise the return value will always be 1. For example, **C:\Program Files\Company Name\A Program.exe** must be specified as "**C:\Program Files\Company Name\A Program.exe"**. Any parameters passed to the program should also be wrapped in their own pair of double-quotes, especially if they contain spaces, e.g. **"C:\Program Files\Company Name\A Program.exe" "param 1" "another param"**
- Windows has many restrictions on how programs can react to and handle the shutdown or restart of a computer. Due to these restrictions **Run Before** and **Run After** programs will silently fail and not even start if the profile is set to [run on shutdown/logoff](WhenLoginLogout.md) and the computer is shutdown or restarted (the programs will still be run as per normal if it's a logoff).
- **Wait until the program has finished before running profile**: If this option is enabled, then when the program is run, SyncBackPro will pause the profile until the program has finished. The program must exit/close before the profile will continue. If you do not enable this option then the program will be run and the profile will carry on running without waiting for it to finish.
- **Wait for a maximum of...**: If this option is enabled, then you can choose how long SyncBackPro should wait for the program to finish before it continues. If the program does not finish within the specified time then SyncBackPro will continue with the profile. Note that it is advisable to set a maximum waiting time otherwise SyncBackPro may get "stuck" waiting for a program that is not going to exit.
- **Abort the profile if the program fails to execute**: If enabled, and the **before** program fails to start (because the program doesn't exist or cannot be run), then the profile will not run. By default the profile will continue to run with a failure.
- **Abort the profile if the programs return value is not …**: Most programs, batch files, and scripts, have a numeric return/exit value. This usually indicates if it ran without error, and if there was an error, what kind of error occurred. If you tick this checkbox then you can specify which return values the program must return for the profile to be run. A comma-delimited list of values can be entered, and a hyphen used to specify a range of values. For example, if the program returns 0, 1, or a value between 10 and 50 (inclusive) if it was run successfully, and any other value on failure, then in the edit box you would type 0, 1, 10-50.
- **Run the program when simulating**: By default the program is not run when doing a simulated run. This is advisable as the program may change or delete files, which is not something you generally want to do during a simulated run.
- **Read stdin from the following file (console programs only)**: If you are running a console (command line) program, then you can send input to the program from a file. Note that you cannot send input to a Windows graphical program, only console programs. Variables can be used for the filename. See the next setting for an example.
- **Record stdout in the log file (console programs only)**: If you are running a console (command line) program, then you can record output from the program in the log file. Note that you cannot get the output from a Windows graphical program, only console programs. If you do not use the setting **Wait until the program has finished** then the output written to the log may be incomplete or impossible to retrieve. As an example of using stdin and stdout: set the run before command to *"%CSIDL_SYSTEM%sort.exe"*, set the stdin filename to *%CSIDL_SYSTEM%sort.exe*, and enable the option to record stdout. Click the **Test** button.
### Variables and Switches
As with the **Source/Left** and **Destination/Right** directories, you can use Windows environment variables. For example, if you typed “**Notepad %HOMEPATH%\test.txt”** then this would run notepad and open a file in your home directory called **test.txt**.
By default all external programs are run in a normal window and made the active window. You can have the program instead run minimized, for example, so that they do not appear as a window on the screen or become the active window. To do this prefix the program with **one** of the following:
**/min** This will run the program minimized and will not make it the currently active window. For example: **/min "C:\Program Files\Company Name\A Program.exe"**
**/max** This will run the program maximized. For example: **/max "C:\Program Files\Company Name\A Program.exe"**
**/hide** This will run the program minimized, hide the window and not make it the currently active window. For example: **/hide "C:\Program Files\Company Name\A Program.exe"**
**/notact** This will run the program and not make it the currently active window. For example: **/notact "C:\Program Files\Company Name\A Program.exe"**
Unlike the **Source/Left** and **Destination/Right** directories, you can also use special SyncBackPro variables. These are used in the same way as environment variables, except they have a leading underscore character, e.g. **%_Source%**. The value returned is for the profile being run. Below is a list of the most common variables that you can use:
**_Compression** = Returns 1 if the destination/right is compressed
**_Destination** = Destination/right directory/filename
**_DestIsFTP** = Returns Y if the destination/right is an FTP server
**_Priority** = Run priority of the profile
**_SingleFile** = Returns 1 if compressing to a single file (ignore if _Compression returns 0)
**_Source** = Source/left directory
For a full list see the profile settings INI file.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Programs, After
- **Run after profile:** To have a program run after the profile has finished,enable the **Run after profile** checkbox and type the name into the edit-box or click the folder icon next to it. You can use the same [variables and switches](ProgramsBefore.md#variablesandswitches) as per the Run Before program.
- Windows has many restrictions on how programs can react to and handle the shutdown or restart of a computer. Due to these restrictions **Run Before** and **Run After** programs will silently fail and not even start if the profile is set to [run on shutdown/logoff](WhenLoginLogout.md) and the computer is shutdown or restarted (the programs will still be run as per normal if it's a logoff). The special variable **%PROFILEFAILED%** can be used to pass the result of the profile run. If the value is 1 (one) then the profile failed (or was aborted), if the value is 0 (zero) then the profile run was a success.
- **Wait until the program has finished before running next profile or exiting:** If this option is enabled, then when the program is run, SyncBackPro will pause and not finish the profile until the program has finished. The program must exit/close before the profile will complete running. If you do not enable this option then the program will be run and the profile finish as per normal without waiting.
- **Wait for a maximum of...:** If this option is enabled, then you can choose how long SyncBackPro should wait for the program to finish before the profile run ends. If the program does not finish within the specified time then SyncBackPro will end the profile run. Note that it is advisable to set a maximum waiting time otherwise SyncBackPro may get "stuck" waiting for a program that is not going to exit.
- **Run the program even if the profile fails:** Select this option to run the **after** program even if the profile fails. By default the program is not run if the profile fails, e.g. a file could not be copied. If the source or destination is a UNC path (\\server\share\folder\), and it cannot be connected to, then the **Run After** program is not run.
- **Only run the program if the profile fails:** If you only want the program to run if the profile fails, then select this option.
- **Run the program when simulating:** By default the program is not run when doing a simulated run. This is advisable as the program may change or delete files, which is not something you generally want to do during a simulated run.
- **Run the program after the log file has been closed (any failure will not be recorded in the log):** By default the **after** program is run before the log file is closed and created. This is so the result of the program run can be recorded. It also means the log file has not yet been created. In some situations you may want the after program to use the log file, and if so, you need to enable this option. The variable [%LOGFILENAME%](Variables.md) can be used to get the filename of the first page of the log file.
- **Run the program only if any file changes were made:** If you only want the program to run if any files were copied, deleted, or moved, then tick this option.
- **Read stdin from the following file (console programs only)**: If you are running a console (command line) program, then you can send input to the program from a file. Note that you cannot send input to a Windows graphical program, only console programs. Variables can be used for the filename. See the next setting for an example.
- **Record stdout in the log file (console programs only)**: If you are running a console (command line) program, then you can record output from the program in the log file. Note that you cannot get the output from a Windows graphical program, only console programs. If you do not use the setting **Wait until the program has finished** then the output written to the log may be incomplete or impossible to retrieve. As an example of using stdin and stdout: set the run after command to *"%CSIDL_SYSTEM%sort.exe"*, set the stdin filename to *%CSIDL_SYSTEM%sort.exe*, and enable the option to record stdout. Click the **Test** button.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Auto-close
Define what programs will close before running a profile by entering the contents of their title bar.
This profile settings page can use and create [shared settings](SharedSettings.md).
Although SyncBackPro can copy locked files (under the [correct circumstances](OpenandLockedFileCopying.md)) it sometimes cannot copy files that are being used by other programs. For example, you cannot copy a Word document while it is being edited in Microsoft Word and the file is on a network drive. One option available is to automatically close those programs so SyncBackPro can copy the files being used. These settings allow you to choose which programs to automatically close before the profile is run.
To add a program to the list, click the **Add** button. You are then prompted to enter the words that appear in the application title bar of the program you want closed, or select one from the drop-down list. For example, if you want to close Microsoft Word then type **Microsoft Word**. An important point to remember is that it is case sensitive. For example, if you use **microsoft word** then it would fail. You only need to enter a fragment, i.e. you do not need to type in the exact title but just a portion of it. To be sure the setting is correct try running the program you wish to close then click the **Test** button.
To remove entries from the list, click on them and click the **Remove** button.
Before a profile is run, SyncBackPro will try and close all the programs with those words in their title bar. If you are using **Microsoft Word** at the time then **Word** will prompt you to save the document before it closes. However, some programs may not prompt you and refuse to close, or you may want them closed even if they prompt. In this case you must tick the **Forcibly close programs that will not close gracefully** option. If this option is enabled then SyncBackPro will forcibly close those programs if they don't close gracefully.
- **Note that this will very probably result in you losing data, so this option should not be used without careful consideration.** Due to Windows security, auto-close will not work with scheduled profiles (unless they are set to run only if the user is logged on). This is because processes that are run via the scheduler are run in a different session and have no access to the desktop processes.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Variables
This profile settings page can use and create [shared settings](SharedSettings.md).
Variables are strings that are replaced by something else when the profile is run. For example, you may want to backup to a folder that has the current date in its name. To do this you would use the variable %DATE%, e.g. set the destination to X:\Backup\%DATE%\. [This section](Variables.md) has more details on what variables are available.
As well as Windows environment variables, SyncBack variables, and getting values from the [registry](Variables.md#registry), you can also define your own variables. Those variables can reference other variables. For example, you could create a variable called **THEDATETIME** and set it to **The current date is %DATE% and the time is %TIME%**
The variables defined for a profile are only available to that profile. If you define a variable in a group profile then it is available to all profiles in that group. However, group level variables are only available to the non-group profiles in the group, i.e. they do not cascade to the profiles in sub-groups. If a profile has a variable with the same name as one in its parent group then the profile variables value will replace the group variables value, i.e. profile variables take precedence. This setup window will also highlight this by showing the variables in red. As well as this, the log file will also tell you which profile variables are replacing group variables (if at all).
In SyncBackPro , this setup window also displays any variables that are defined by scripts that are run as part of the profile.
To add a variable simply click the **Add** button. You then enter a unique name for the variable, e.g. **MyVariable**, and then enter a value (the value can use variables itself). Do not use percentage signs around the variables name, e.g. use **VarName** instead of **%VarName%.**
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Variables, Incremental
An automatically incrementing variable is a special variable (**%AUTOINC%**) that has a range of values and is incremented automatically by SyncBack. The value of the variable is incremented by 1 at the end of each profile run. If it goes above a value you define then it is reset to the minimum value, which you can also define.
For example, you want to keep 11 backups:
With the above example, each time the profile is run the files are copied to a different directory. For the first run the files are copied to X:\Backup\1\. On the next run it is X:\Backup\2\. After the profile copies files to X:\Backup\11\ it will be reset back to 1 for the next run.
The %AUTOINC% variable can be used with [Fast Backups](FastBackup.md), making it easy to create incremental or differential backups, for example, that keep exactly the number of backups you require.
Automatically incrementing variables are not available in groups.
- **Enable the auto-incrementing variable (%AUTOINC%):** If this option is enabled then the %AUTOINC% automatically incrementing variable can be used by this profile and will be managed by SyncBack. If you do not enable this option then the %AUTOINC% variable will not be expanded.
- **Current value:** This is the current value of the variable. It cannot be less than the minimum value or greater than the maximum value.
- **Minimum value:** This is the minimum value of the variable. Once the variable goes above the maximum value it is reset back to this minimum value. The minimum value cannot be less than zero or greater than the maximum value.
- **Maximum value:** This is the maximum value of the variable. Once the variable goes above the maximum value it is reset back to the minimum value. The maximum value cannot be less than the minimum value or greater than 2,147,483,646
- **Increment if restore:** If this option is enabled, then the variable is incremented even if the profile is run as a restore. This option is not enabled by default.
- **Increment if simulated run:** If this option is enabled, then the variable is incremented even if the profile is run as a simulation. This option is not enabled by default.
- **Increment if profile is aborted:** If this option is enabled, then the variable is incremented even if the profile run is aborted. This option is not enabled by default.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Notes
In some situations you may want to record some free-format notes about a profile, e.g. what the profile does, what needs to be done before the profile is used, etc. This settings page lets you enter those notes and optionally have them displayed when the profile is imported or copied. Note that the notes are rich-text, which means you could copy & paste the notes from Microsoft Word, for example, and it will retain the font styles, sizes, colors, etc. Images cannot be used. The Notes feature is not intended to be a full blown text editor and is intended for entering a few simple notes.
- **Show these notes when this profile is imported or copied and in the main window as a hint:** If this checkbox is ticked, and the profile is exported and imported into another installation of SyncBack, then this note is displayed. The note will also be displayed if the profile is copied and also if the mouse cursor is over the profiles name in the main window. This is useful when distributing profiles and you want to tell the user what the profile does or if they need to change something before using it, for example. Note that if a profile is imported in unattended mode then the note is obviously not displayed.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Ransomware Detection
Local Ransomware detection is already available in [Global Settings](GlobalSettings.md#ransomware). That setting lets SyncBackPro detect any Ransomware infection on your local system so that no profiles can be run if ransomware is detected. With this profile specific setting, you can enable Ransomware detection for the source and/or destination you are using with the profile. For example, if you are copying from an FTP server you can detect Ransomware on the remote FTP server. Ransomware detection cannot be used with [backup of email](BackupEmail.md) or [location scripts](LocationScripts.md).
The configuration is similar to how it works in the [Global Settings](GlobalSettings.md#ransomware). You must choose an **existing** file in the location, e.g. on the FTP server, on the same UNC share the profile uses, etc. The file can be anywhere that can be accessed by the profile, i.e. it does not need to be a file in the folder you are copying to or from. This means you could use the same file in multiple profiles that use the same location. When the profile is run the file is retrieved and checked for changes. If the files contents have changed then that is considered as Ransomware infection and the profile will abort. Keep in mind that you should not be changing, or deleting, the Ransomware file you choose. If it is within the folder you are copying to or from then you may want to [filter it out](FilterSettings.md) of your profile or [deselect it](SubDirectoriesandFiles.md).
SyncBack Touch also supports [ransomware detection](SyncBackTouch.md#ransomware). When configured, the remote SyncBack Touch service will check if there has been a ransomware infection on the SyncBack Touch device.
All three of the ransomware detection methods have different settings, work independently from each other and can be used at the same time:
- With **SyncBack Touch** ransomware detection, Touch creates the detection file on the system it is running on. If infection is detected then any profiles using that Touch service will not run.
- If you want a profile to detect ransomware on the source/left and/or destination/right, then it can be configured in the profile itself using the settings explained on this page. If ransomware is detected then the profile will not run.
- **Detect Ransomware in source/left:** If this checkbox is ticked then ransomware detection is enabled on the source/left. Click on the three-dots (...) in the **Filename** edit box to choose the ransomware detection file on the source/left. You must choose an **existing** file that the profile has read access to and is 1MiB (1,048,576 bytes) or smaller. The file can be anywhere that can be accessed, i.e. it does not need to be a file in the folder you are copying to or from. This means you could use the same file in multiple profiles. Keep in mind that you should not be changing, or deleting, the Ransomware file you choose. If it is within the folder you are copying to or from then you may want to [filter it out](FilterSettings.md) of your profile or [deselect it](SubDirectoriesandFiles.md).
- **Detect Ransomware in destination/right:** If this checkbox is ticked then ransomware detection is enabled on the destination/right. Click on the three-dots (...) in the **Filename** edit box to choose the ransomware detection file. You must choose an **existing** file that the profile has read access to and is 1MiB (1,048,576 bytes) or smaller.
Ransomware detection will have a small impact on performance as SyncBackPro needs to download the detection file and calculate its hash value. However, you must decide if performance or security is most important to you.
- The ransomware detection file must be 1MiB (1,048,576 bytes) or smaller.
- If you are on a cloud system **do not** choose a file in cold storage, e.g. Glacier, as your detection file. There are several reasons for this (cost of retrieval, immutability, etc).
**Further reading:** [Ransomware Detection with SyncBack](https://www.2brightsparks.com/resources/articles/ransomware-detection-with-syncback.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Runtime Help
Runtime Help refers to operations which occur as SyncBackPro is performing a task like a backup. This section of the help file covers the [Differences](TheDifferencesWindow.md) and [File Collision Windows](TheFileCollisionWindow.md) which allow you a great deal of flexibility in fine tuning your profile task.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# The Differences Window
When you run a profile, if there are any differences detected, e.g. files have changed, this differences window will appear. You can configure your profile never to show this window (see the [Compare Options](CompareOptionsSettings.md) page when creating/modifying the profile).
- The **Differences** window is not shown for unattended runs, e.g. scheduled tasks, if you run SyncBackPro with command line parameters, if the [Skip the Differences screen](CompareOptionsSettings.md#skip) option is enabled for the profile, or if there are no differences. There is also an [option to automatically close](CompareOptionsSettings.md#skipifempty) the Differences window if it is empty (due to the [filter settings](TheDifferencesWindow.md#filtersettings)). The **Differences** window will always be shown when doing a restore or simulated run. If your profile contains tens of thousands of files (or more) then it is not recommended that the Differences window be displayed. This is because displaying so many files uses a lot of CPU time and RAM, and takes a long time to sort. If the file information has been dumped to a database (either due to the large number of files, or lack of free RAM), then please note that the sorting will be different. Folders will be listed separately from files, e.g. folders are shown first, then files. This is done to improve performance (the sorting is done by the database instead of the display).
When a profile is run, SyncBackPro will compare the source/left and destination/right files to find the differences. There may be files in the source/left that are not in the destination/right, for example. After it has made the comparison it will display the **Differences** window that lists all the differences between the source/left and destination/right. This gives you a chance to see what will happen and change what actions will be taken. For example, a file may be marked for deletion but you may decide not to delete that particular file.
At the **bottom left** of the window are details on the currently selected files. It shows the differences between the file on the left and the file on the right. Newer dates & times, and larger file sizes, are shown in green, older dates & times, and smaller file sizes, are red. If the profile is an **Intelligent Synchronization** profile then a checkbox labeled **Show** **previous details of the files** is shown in the bottom left. To show the previous details of a file you must first select the appropriate file and then tick the checkbox. It will now show the details of the file the last time the profile was run. Obviously new files will not have previous details. See below for a description of the attributes.
The **bottom right** panel gives details on the number of files, and the amount of data, that will be copied, deleted, and skipped.
- Note that the free disk space shows the estimated free disk space on the source/left and destination/right based on the actions made. For example, if you choose to delete files from the right then its free disk space will increase.
## Actions
Between the Left and Right columns is the **Action** column. This shows what will happen to that file. Note that not all the options are available for each file as it depends on what the situation is with that file. For example, you cannot copy a file from the left/source if it only exists on the right/destination:
- **Skip:** Ignore the file and do nothing.
- **Skip and Exclude:** Ignore the file and do nothing. The file will be ignored in all future profile runs as well. See the [help in the File Collision window](TheFileCollisionWindow.md#skipandexclude) for more details.
- **Copy to right:** Copy the left file to the right. This will overwrite the right file, if it exists.
- **Copy to left:** Copy the right file to the left. This will overwrite the left file, if it exists.
- **Move to right:** Move the left file to the right. This will overwrite the right file, if it exists, and delete the file from the left.
- **Move to left:** Move the right file to the left. This will overwrite the left file, if it exists, and delete the file from the right.
- **Unchanged:** This option is only available when running a **Fast Backup** profile. By selecting this option you are telling SyncBackPro that the file actually has not changed and nothing should be done. This is useful, for example, when you have a copy of a file on an FTP server but the date & times do not match. However, you know the file is identical.
- **Delete:** Delete both the source and destination files.
- **Delete from left:** Delete the file on the left.
- **Delete from right:** Delete the file on the right.
- **Collision, prompt me:** You will be prompted what choice to make after you close this window.
- **Missing, prompt me:** You will be prompted what choice to make after you close this window.
- **Details differ, prompt me:** If the files are identical, but their attributes are different, then you can choose to be prompted on which files attributes to use.
- **Use details from left:** The files are identical, but their attributes are different, so copy the attributes from the left file to the right file.
- **Use details from right:** The files are identical, but their attributes are different, so copy the attributes from the right file to the left file.
There are four ways to change the **Action** for a file:
- Click on the Action item and select the new action from the pop-up menu
- Right-click on the row and select the new action from the pop-up menu
- Press **Ctrl-P** for the [file collision window](TheFileCollisionWindow.md) to appear
- Use hot-keys (see below)
You can change the action for multiple files by clicking on the rows and pressing the **Shift** and **Ctrl** keys. You can press **Ctrl-A** to select all the files. Right-click on the selection and choose the action from the pop-up menu. Only actions that are available for all the selected files are shown.
When changing the action for a folder, it is **recursive**. For example, if you change the Action for a folder to Skip, then it, all files in the folder, all sub-directories, and everything in those, will also be set to Skip.
You can use the following hot-keys to change the action of the selected items:
- **Ctrl-S:** Skip the files
- **Ctrl-E:** Skip and exclude the files
- **Ctrl-L:** Copy files to the source/left
- **Ctrl-R:** Copy files to the destination/right
- **Ctrl-D:** Delete the files from both the source/left and destination/right
- **Ctrl-U:** Mark the files as unchanged (Fast Backup profiles only)
- **Ctrl-N:** The newer file will replace the older file (any version changes are lost)
- **Ctrl-P:** The file collision window will be displayed for each selected item
To be prompted immediately on what to do with a file you can select the file (by clicking on its row) and pressing **Ctrl-P** (or by double-clicking the row, or selecting '**Prompt me now**' from the pop-up menu). The [File Collision Window](TheFileCollisionWindow.md) will appear from which you can make a choice. Note that nothing is done with the file until after the **Differences** window is closed.
After you have reviewed the differences, made whatever changes are required (if any), and are ready to continue with the profile run, you can click either the '**Continue**' button or the '**Abort**' button. Aborting will stop the profile run immediately and no files will be copied, deleted, or moved.
## Main Menu
There is a main menu at the top of the Window. You can optionally use the Alt key to show/hide it and also use shortcut keys (Alt-F, Alt-D, Alt-S, Alt-R, Alt-E, Alt-M, Alt-L).
- **Filter**
- **Show files/folders not on left:** If not selected then files and folders that are only on the right are hidden.
- **Show files/folders not on right:** If not selected then files and folders that are only on the left are hidden.
- **Show skipped files/folders:** If not selected, then skipped files and folders are not shown.
- **Show changed files:** If not selected then files that are on both the left and right, and are different, are hidden.
- **Show files skipped due to rename:** With [Intelligent Synchronization](IntelligentSynchronization.md) profiles files that have been [renamed](IntelligentSynchronization.md#detectrename) can be detected. When a renamed file is detected there are two entries: the old name and the new name. By enabling this option you can see both entries.
- **Revert to factory settings:** Select this option to revert the Filter menu selections to their factory settings. You can also right-click on in the tables at the bottom-left and bottom-right of the window to reset those column widths:
- **All:** If selected then all files and folders are shown and the filters are reset.
- **Source only, Destination only, etc:** If selected then the files shown are filtered as appropriate. No folders will be shown. You can also click on the rows in the totals grid at the bottom-right of the window to apply a filter. For example, if there is a row showing how many files are going to be skipped then you can click on that row to apply a filter to show only skipped files. Clicking on the "Unchanged" and "Free disk space" columns will do nothing.
Note that there is also a way to filter what is shown based on the file name. See the Filtering section below for details.
- **Display**
- **Only show action icons, not text:** If selected then the **Action** column will just show icons and not text. This reduces the width of the Action column giving you more space.
- **Only show files to be deleted or replaced:** If selected then only files that are going to be deleted or replace will be shown. No folders will be displayed. Note that if a file is being moved, and is not replacing a file, then that is not regarded as a file that is to be deleted. To avoid performance problems the display is not automatically updated if you change the action of a file, so to refresh the display you must disable and re-enable this option. Also, this setting is not saved.
- **Keep window on top of all others:** If selected then the Differences window will be placed above all other windows on your desktop.
- **Show size column:** If selected then the Size (bytes) column is shown.
- **Show date & time column:** If selected then the last modification Date & Time column is shown.
- **Show filename extension column:** If selected then the filename Extension column is shown.
- **Do not display this window again for this profile:** If ticked then this window will not be displayed again when this profile is next run. This is identical to the "**Skip the Differences screen when this profile is run (it is never shown when unattended)**" option in the **Compare Options** page in the profiles configuration. Note that this checkbox is not shown when the run is a simulation or a restore (as the **Differences** window is always shown when a profile is run in simulation or restore mode).
- **Auto Preview:** If enabled, and you click on a file in the window, then a preview of the file contents will appear. File previews are not available for remote destinations, e.g. cloud, FTP, etc. Not all file types can be previewed. You can also manually preview a file contents by selecting it and pressing Ctrl-V.
- **List Format:** By default, files and folders are listed in the window without any indentation.
- **Default**: No indentation:
- **Indent**: Indentation is based on tree-depth:
- **Indent Files**: Only files within folders are indented:
- **Search**
- **Find:** Select this menu item to find files or folders based on their name. For example, to find all files and folders with the text **temp** in their name simply enter **temp**. You can also use wild-cards. For example, to find all files with the **.txt** extension search for ***.txt**. An asterisks (*) matches zero or more characters. A question mark (?) matches any single character. SyncBack automatically wraps a search term with asterisks unless it is wrapped in double-quotes or has an asterisks or question mark in it. For example, if you search for **abc** then SyncBack will change that to ***abc***. If you really want to search for just **abc** and not everything with **abc** in the name then use **"abc"**
- **Find Next (F3):** Searches for the next item that matches the previously entered search term.
- **Rollback**
SyncBack can roll-back files to their state at a previous date & time. When one of the following menu items is selected a window will appear for you to select a date & time to rollback to. See the [Rollback](TheDifferencesWindow.md#rollback) section below for details.
- **Rollback all source/left files:** If selected all the source/left files will have their action changed so that they will be rolled back to the selected date & time when the profile continues.
- **Rollback all destination/right files:** If selected all the destination/right files will have their action changed so that they will be rolled back to the selected date & time when the profile continues.
- **Rollback selected source/left files:** If selected all the selected source/left files will have their action changed so that they will be rolled back to the selected date & time when the profile continues.
- **Rollback selected destination/right files:** If selected all the selected destination/right files will have their action changed so that they will be rolled back to the selected date & time when the profile continues.
- **Export**
SyncBack can export the rows to a CSV (Comma-Separated Values) file, which can then be imported into other software, e.g. Microsoft Excel. You can also export to the clipboard. Only the data from visible columns will be exported (including script generated columns).
- **Export all...:** This will export all rows to a file.
- **Export selected...:** This will only export the selected rows to a file.
- **Export all to clipboard...:** This will export all rows to the clipboard.
- **Export selected to clipboard...:** This will only export the selected rows to the clipboard.
- **Mirror**
- **Mirror all the files/folders to Destination/Right...:** When this button is clicked all the files on the left will have their action changed so that they are copied to the right (hold down the SHIFT key while pressing the button to move the files). **Any files on the right which are not on the left will have their action changed so they are deleted.** This button lets you quickly tell SyncBackPro that the right should have exactly the same files as the left. Note that you can mirror a selection of files via the pop-up menu.
- **Mirror all the files/folders to Source/Left...:** This does the opposite of the above button, i.e. the left should have the same files as the right. Note that you can mirror a selection of files via the pop-up menu. You cannot mirror files to the left if you have a traditional fast backup profile.
- **Select**
You can have files in the list automatically selected based on their action. For example, to select all files that are being copied to the destination or deleted from the destination, click the drop-down and select **Copy to Destination** and **Delete from Destination**.
## Filtering
As well as filtering what is shown based on where it is and the action to take (on the **Filter** tab, see above), you can also filter what is displayed based on its name.
You can type in a file name to just show files (and folders) with that name. You can use also use the special characters asterisk (*) and question mark (?). An asterisk represent zero or more of any character, and a question mark represents one of any character. Searching is not case-sensitive, i.e. ABC will match abc, AbC, etc.
For example, to only show files with the extentsion **.DAT** files you would enter ***.DAT** in the filter and press enter or the refresh button on the right of the filter edit box.
You can also use the pop-up menu to enter a filter. If you right-click on a folder, and select **Only show this folder**, then the filter is set to just show what is in that folder. If you right-click on a file, you can select **Only show files with this extension** or **Only show files with this filename**. The filter can also be cleared from the pop-up menu (**Clear filter**).
If you prefer, you can change the double-click action to use filtering. For example, if you right-click on a file or folder, and go to the **Double-click action** sub-menu in the pop-up menu, you could change it to **Only show this folder**. That way, when you double-click on a folder in the display, it will just show what is in that folder. This gives you a quick and simple way to drill-down into the contents of folders.
To quickly clear the filter you can press the **X** button in the filter edit box, or press the back button on the mouse.
## Restoring Versions
[Versions](CopyDeleteVersioning.md#whatisversioning) of files are restored via the **Differences** window. One way to ensure the Differences window is displayed is to run the profile by using **Ctrl-R**. If it's a backup profile you could also run it as a Restore.
When there are versions of a file available then a graphic is displayed next to the filename. If a file doesn't exist, but it does have versions, then the filename will be post-fixed (suffixed) with the text **[Versions]**.
To restore a version of a file simply click on the graphic and choose the version to restore from the drop-down list. The list gives the date & time when the version was made (it is not the last modification date & time, or creation date & time, of the file). Once a version to restore is chosen the filename shown will be post-fixed with the date & time of the version to be restored.
Versions cannot be restored if the **Action** is such that restoring the version would be pointless. For example, if you want to copy a source file to the destination (to replace the existing destination file), then you cannot restore a version of the destination file. It would make no sense because SyncBackPro would need to restore the destination version, then copy the source file to the destination, which would then replace the version you wanted to restore. In this case the text **[unavailable]** will appear in the pop-up menu. If you just want to restore the version change the Action to Skip and then choose the version to restore.
Keep in mind that restoring a version means any existing file will be versioned before it is replaced. For example, you have a source file that has one version. If you restore the version then a version of the existing source file will be made before the version is restored (basically the files are switched). This makes sense because you may later realize you made a mistake then it's very simple to correct it (you just restore the latest version, which was your original file).
It's possible to restore versions for multiple files. First, select the files you want to restore versions for (e.g. press Ctrl-A to choose all the files, or hold down the Ctrl key and click on a file to add it to the selection, or use Shift key and click to select a block of files). Next, right-click on the filename of one of the files you have selected. A pop-up menu will appear. Choose Restore Version, then Source or Destination (depending on where you want the versions restored), then you can choose either of the following options:
- **Restore latest version (except if backup file available)** - If the file has one or more versions, and doesn't exist in the source/destination, then it will restore the newest version of the file. If the file does exist then it won't do anything with that file.
- **Restore latest version (even if backup file available)** - If the file has one or more versions then it will restore the newest version of the file.
## Rollback
The rollback feature lets you rollback files to their known state at a certain point in time, with the last modification date & time of a file being used to determine this. You can rollback the source or destination. This feature works best when versioning is used otherwise it has nothing to restore from except the files that are on the other side (source or destination).
Empty folders are ignored and folders will not be deleted, but folders will be created as needed. Keep in mind that even if you are rolling back the source, for example, it can affect the destination. For example, a versioned file on the destination may be the best file to copy back to the source. In that case the destination will be changed as well because SyncBack will need to restore a version on the destination.
For example, you may want to rollback the source to 1pm on the 1st of June 2014. SyncBack will then look at the source, destination, and all the versions to see which file was last modified closest to that date & time (but not after it). It will then change the actions as appropriate. Let's say you are rolling back the source:
- SyncBack will first look at the current file on the source and get its last modification date & time.
- SyncBack will then look at the current file on the destination. If it was modified after the source file, but before the date & time you want to rollback to, then it will copy that file to the source.
- SyncBack will then look at the versions of the source file. If any of the versions are a better option (i.e. they were modified nearer to the rollback date & time but not after it), then it will instead restore one of those versions.
- SyncBack will then look at the versions of the destination file. If any of the versions are a better option (i.e. they were modified nearer to the rollback date & time but not after it), then it will instead restore one of those versions and copy it to the source.
When looking at a file, and it sees nothing that was modified before the rollback date & time, then it will do nothing with that file, i.e. it will set the file to be skipped. You can decide to delete the existing file, instead of skipping it and leaving it where it is, when selected the date to rollback to.
## Comparing Files
SyncBack can tell you files are different, and using third party programs, you can ask SyncBack to show you the actual differences between the files. Click the [Comparison Programs](ComparisonPrograms.md) button to tell SyncBack which programs to use to compare which types of files.
To compare files simply click the file (or files to compare multiple files) and press **Ctrl-M**, or select **Compare** from the pop-up menu. You can also configure the double-click action to compare files. If a suitable comparison program is not available for the file type then the files will be opened.
- Note that the files must be retrieved to the local drive for comparison. If you have large files on FTP servers, or slow networks, then there may be a delay while retrieving the files.
## Opening Files
To **open** (view) a file simply click the file (or files to compare multiple files) and press **Ctrl-O**, or select **Open** from the pop-up menu. You can also configure the double-click action to open files.
To **preview** a file simply click the file to select it and press **Ctrl-V**. File previews are not possible for remote locations, e.g. FTP, cloud, etc.
You can also drag & drop files from the Differences window onto your Windows desktop, for example. Click on the file, keep the left-mouse button pressed, drag it to your desktop, and release the mouse button.
- Note that the files must be retrieved to the local drive to be opened. If you have large files on FTP servers, or slow networks, then there may be a delay while retrieving the files.
## Collisions
A "collision" is when a file in the source and destination differ, yet have the same name. That is, the file is both in the source and destination but is modified in some way, perhaps by date, size, etc.
A notification of collisions occur in the "Differences" window which appears by default when making a backup (note however there are circumstances when the "Differences" window does not appear, for example when the user has chosen not to show the window):
You can click on the rows to immediately apply a filter. For example, if you click on the **Collisions** row then the items list will be filtered to only show collisions. Clicking on the "Unchanged" and "Free disk space" columns will do nothing.
Collisions, and deletions, are shown in red in the "Differences" window to highlight there are going to be changes made when you continue the profile task. If the user views the Differences window carefully, the user has the option to make choices about whether they want to accept the changes SyncBackPro will make, or bypass them with a right click and choose a different action. For more read about the [Collision Window](TheFileCollisionWindow.md).
## Free disk space
The free disk space values (shown at the bottom-right of the window) have two values:
- The first value (not in brackets) is the total free disk space (available to the user), plus the amount going to be deleted, less the total being copied to it. For example, if the destination has 4GB free, and 1GB is going to be deleted from it, and 2GB is going to be copied to it, then the free disk space would be 3GB (4 + 1 - 2). Note that this is just an estimation. Also, more space may be required temporarily, e.g. if [safe copies](CopyDeleteAdvanced.md#makesafecopies) are being used. For some locations, e.g. cloud, FTP, MTP, etc., it may not be possible to know how much free disk space is available. If so, a question mark (?) is shown.
- The value in brackets is how much the free disk space value is going to decrease by. For example, if you are copying 5GB to the destination, and deleting 3GB from it, then it would show -2GB, i.e. the free disk space will reduce by 2GB. Again, this is an estimation. This value is useful when the free disk space is unknown.
### Links
If you are [preserving file hard links](CopyDeleteLinks.md), or [copying directory symbolic links and junction points](CopyDeleteLinks.md#junctionpoint), the Differences window will show the links for the selected files or directories, both in the hint (if a hard link) and in the details at the bottom-left of the window:
Keep in mind that hard links to files outside of the base folder are not shown. See the [Links](CopyDeleteLinks.md#hardlink) section for details.
## Attributes
The file attributes are:
| **A** | Archive |
| --- | --- |
| **a** | Recall on data access |
| **b** | Block device (Linux) |
| **c** | Character device (Linux) |
| **C** | Compressed |
| **d** | Device (Linux) |
| **D** | Directory |
| **E** | Encrypted |
| **H** | Hidden |
| **I** | Not content indexed |
| **J** | Junction point |
| **l** | Symbolic link (Linux) |
| **N** | Normal |
| **O** | Offline |
| **p** | Pinned (Windows) or named pipe (Linux) |
| **P** | Sparse |
| **R** | Read only |
| **s** | Socket (Linux) |
| **S** | System |
| **T** | Temporary |
| **u** | Unpinned |
| **V** | Integrity Stream |
| **v** | Virtual (Linux) |
| **W** | Whiteout |
| **X** | No scrub data |
For FTP, it may be in **rwx** format, i.e. read, write, execute, with the first group of three letters referring to the owner, next is the group and finally others (users).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# The File Collision Window
When you run a profile, and you have enabled prompting, then the **File Collision** window will appear when a decision is required from you on what to do with the file. Note that for unattended profile runs, e.g. when scheduled, this window does not appear and instead the file will be skipped.
On the **Decisions Files** and **Folders** pages, in Profile Setup, you have the option of asking SyncBackPro to prompt you under certain circumstances, e.g. if a file is in both the source/left and destination/right, but the files are not the same. For example, if you created a backup profile, then run the profile, and edit a file in the source, you would then have a file in the destination that is not the same as the one in the source. On the next run of the profile, if you have configured your profile to be prompted, then a window will appear asking you what action to take for this file.
The window has the filename at the top. If the filename is too long to fit in the edit box, you can resize the window. Information is also shown on where the file is in the source/left and destination/right, the size of the file, its last modification date & time, its attributes, its hash value (if you have configured the profile to use hashing for file comparisons), etc. When there are differences the values are highlighted in green or red. For example, if the left/source file is newer than the right/destination file then its date & time is shown in green whereas the right/destination files date & time is shown in red.
If you are [preserving file hard links](CopyDeleteLinks.md), or [copying directory symbolic links and junction points](CopyDeleteLinks.md#junctionpoint), the window will show the links for the selected files or directories in the Source/Destination details section.
There are two sets of information: for the file on the left, and for the file on the right. Between the left and right files details is a box listing what actions you can take. There are a number of options available to you, some of which may not be shown depending on how you've configured your profile and what the differences are:
- **Skip:** No action will be taken with this file. The file will not be copied, deleted, or moved, and it will be ignored. If you click the **Always** button then you won't be prompted again, during this profile run and in this kind of situation, and instead the files will be skipped.
- **Skip and Exclude:** No action will be taken with this file. The file will not be copied, deleted, or moved, and it will be ignored. The difference between this action and the plain **Skip** option is that the file will now always be skipped, including in any future profile runs. It is equivalent to de-selecting the file in the [Sub-directories and files](SubDirectoriesandFiles.md) window in the profile configuration. If it is a simulated run then the file is simply skipped as per normal and not excluded from future profile runs. Note that the **Always** button cannot be used with Skip and Exclude to avoid accidentally excluding numerous files and folders. Also, this action is not available if the profile is configured [not to use file and folder selections](SubDirectoriesandFiles.md#ignoreselections) or it is a [Fast Backup](FastBackup.md) profile that does not use the archive attribute.
- **Copy to left:** The file on the right will replace the file on the left. If you click the **Always** button then you won't be prompted, during this profile run and in this kind of situation, and instead the left file will be replaced by the right file.
- **Copy to right:** The file on the left will replace the file on the right. If you click the **Always** button then you won't be prompted again, during this profile run and in this kind of situation, and instead the right file will be replaced by the left file.
- **Move to right:** Move the left file to the right. This will overwrite the right file, if it exists, and delete the file from the left. If you click the **Always** button then you won't be prompted again, during this profile run and in this kind of situation, and instead the file on the left will be moved to the right.
- **Move to left:** Move the right file to the left. This will overwrite the left file, if it exists, and delete the file from the right. If you click the **Always** button then you won't be prompted again, during this profile run and in this kind of situation, and instead the file on the right will be moved to the left.
- **Unchanged:** This option is only available when running a **Fast Backup** profile. By selecting this option you are telling SyncBackPro that the file actually hasn’t changed and nothing should be done. This is useful, for example, when you have a copy of a file on an FTP server but the date & times do not match. However, you know the file is identical.
- **Delete:** The file will be deleted from the left and right. If you click the **Always** button then you won't be prompted again, during this profile run and in this kind of situation, and instead the files will be deleted.
- **Delete from left:** The file on the left will be deleted. If you click the **Always** button then you won't be prompted again, during this profile run and in this kind of situation, and instead the file on the left will be deleted.
- **Delete from right:** The file on the right will be deleted. If you click the **Always** button then you won't be prompted again, during this profile run and in this kind of situation, and instead the file on the right will be deleted.
- **Missing, prompt me:** The file is either not on the left or right, and you want to be prompted later on what to do when the profile run continues. Note that this option is only available when prompted from the **Differences** screen. After that screen is shown (or if you've configured the profile not to show that screen) then this option is not available.
- **Collision, prompt me:** The file is both on the left and right, and you want to be prompted later on what to do when the profile run continues. Note that this option is only available when prompted from the **Differences** screen. After that screen is shown (or if you've configured the profile not to show that screen) then this option is not available.
- **Details differ, prompt me:** The files are identical but the attributes and/or last modification date & time are different, and you want to be prompted later on what to do when the profile run continues. Note that this option is only available when prompted from the **Differences** screen. After that screen is shown (or if you've configured the profile not to show that screen) then this option is not available.
- **Use details from left:** The files are identical but the attributes and/or last modification date & time are different, but you want to copy the attributes and date & time from the file on the left to the file on the right. If you click the **Always** button then you won't be prompted again, during this profile run and in this kind of situation, and instead the details from the file on the left will be used.
- **Use details from right:** The files are identical but the attributes and/or last modification date & time are different, but you want to copy the attributes and date & time from the file on the right to the file on the left. If you click the **Always** button then you won't be prompted again, during this profile run and in this kind of situation, and instead the details from the file on the right will be used.
If the profile is an **Intelligent Synchronization** profile then a checkbox labeled **Show** **previous details of the files** is shown in the bottom left of the window. To show the previous details of a file you must first select the appropriate file and then tick the checkbox. It will now show the details of the file the last time the profile was run. Obviously new files will not have previous details.
After making your decision you can click the **OK** or **Always** button. If you click the **Abort** button then no action is taken and the profile run is immediately stopped.
### Always
What other files are affected when you click the **Always** button is dependent on the situation. There's an **Always** action each for:
- Collision (file on both sides and they are not the same). This includes when you have [configured the profile](DecisionsFiles.md#identical) to prompt if the files are identical.
- The file details differ (same file contents but different file attributes)
- File only on the left/source
- File only on the right/destination
For example: if you had a file on both sides, and they are different (i. e. it's a collision), and you selected an action and clicked Always, then that action will be automatically used for files that are on both sides and are different (instead of you being prompted). If, for example, there is a file only on the left/source then the action does not apply to that. Note that the Always decision applies only for the current profile run, i. e. it doesn't apply the next time the profile is run, or the next profile in a group.
The Always button cannot be used with the **Skip and Exclude** action.
### Compare
SyncBack can tell you files are different, and using 3rd party programs, you can ask SyncBack to show you the actual differences between the files. To compare the files simply click the **Compare** button. Only when there is a file both on the left and right can the files be compared. If a suitable comparison program is not available for the file type then the files will be opened.
Note that the files must be retrieved to the local drive for comparison. If you have large files on FTP servers, or slow networks, then there may be a delay while retrieving the files.
### Shortcut Keys
A number of shortcut keys are available to help users who are familiar with the program make choices quickly:
**L** - Copy the file to the left
**R** - Copy the file to the right
**D** - Delete the file. Note **both** files will be chosen for deletion, but if that option is not available, then the file on the right will be chosen for deletion, and if that option is not available, then the file on the left will be chosen for deletion.
**P** - Prompt later for what action to be taken
**S** - Skip the file
**E** - Skip and exclude the file
**U** - The file is unchanged (available only with Fast Backup profiles)
- Note that if you use the **Ctrl** key with these shortcut keys then the action is immediate. For example, if you press **Ctrl-R** then the action to copy the file to the right is chosen, and the prompt window is closed.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Technical Reference
The Technical Reference of this help file provides detailed information about:
[Common Errors and What They Mean](CommonErrors.md)
[Scripting](Scripting.md)
[Pascal](PascalScriptLanguage.md)
[Basic](BasicScriptLanguage.md)
[Calling DLL functions](CallingDLLFunctions.md)
[System Library](SystemLibraryScript.md)
[Base](ScriptBase.md)
[Main Interface Scripts](MainInterfaceScripts.md)
[Profile Configuration Scripts](ProfileConfigurationScripts.md)
[Location Scripts](LocationScripts.md)
[Runtime Scripts](RuntimeScripts.md)
[SBLocation](SBLocation.md)
[SBProfile](SBProfile.md)
[SBProfiles](SBProfiles.md)
[SBRunning](SBRunning.md)
[SBSystem](SBSystem.md)
[SBVariables](SBVariables.md)
[SBHistory](SBHistory.md)
[Constants](ScriptConstants.md)
[Functions](ScriptFunctions.md)
[Classes](ScriptClasses.md)
[Scripting A.I.](ScriptingAI.md)
[Debugging](DebuggingScripts.md)
[Example Scripts](ExampleScripts.md)
[Converting VBScript to Basic](ConvertingVBSToBasic.md)
[Technical Support Wizard](TechnicalSupportWizard.md)
[32-bit vs 64-bit](32bit64bit.md)
[Command Line Parameters](CommandLineParameters.md)
[Filter Settings](FilterSettings.md)
[Open and Locked File Copying](OpenandLockedFileCopying.md)
[Variables](Variables.md)
[Regular Expressions](ExpressionFilters.md)
[Invalid Profiles](InvalidProfiles.md)
[Restoring and Selections](RestoringSelections.md)
[Windows System Restore Point](WindowsSystemRestorePoint.md)
[Power Management](PowerManagement.md)
[SyncBack Management Service](SBMService.md)
[Group Policies](GroupPolicies.md)
[SyncBack Touch](SyncBackTouchIntro.md)
[Connection Problems](SyncBackTouchConnectionProblems.md)
[SyncBack Monitor](SyncBackMonitor.md)
[Scheduler Monitor Service](SchedulerMonitorService.md)
[All Volumes Path (\\?\)](AllVolumes.md)
[Upgrading Cloud Service](CloudServiceUpgrade.md)
[Google Drive](GoogleDrive.md)
[Egnyte](Egnyte.md)
[Gmail](Gmail.md)
[Administrator Protection](AdminProtWindows.md)
[Installing](Installing.md)
[Installer Options](InstallerOptions.md)
[Uninstalling SyncBackPro](UninstallingSyncBackSE.md)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Common Errors and What They Mean
This page lists the error messages most commonly reported by SyncBackPro users, what they usually mean, and the first checks to perform. It is not a substitute for the [profile log](Log.md). If a profile fails, open the log first and note the exact message, whether the failure happened on the source or the destination, and whether the profile was run manually or by the [Windows Task Scheduler](SchedulingProblems.md).
Many of these errors are returned by Windows, the Task Scheduler antivirus software, your NAS, or the file system. The wording in the log reflects what the underlying component reported, not what SyncBackPro itself decided.
Use your browser's find feature to search for an exact error message, or browse by category.
## Where to Find the Error
- Right-click the profile in the main window and choose **View log**. See the [Log](Log.md) page for details on log settings.
- For scheduled profiles, also open Windows **Task Scheduler** and check the **History** tab for the task. See [Scheduling Problems](SchedulingProblems.md).
- For diagnostic information to send to support, use the [Technical Support Wizard](TechnicalSupportWizard.md).
## 1. Access is denied / Error 5 / 0x80070005
### Common messages
- Access is denied
- Error 5: Access is denied
- 0x80070005 - Access is denied
- DeleteFile failed; code 5 Access is denied
- Read Only (added by SyncBackPro when a delete fails on a read-only file)
- Cannot clear read-only flag
- Security settings could not be set: ...
- Security settings could not be read: ...
- Scan failed ... error code 13 (SyncBack Touch on Android)
### What it means
Windows is refusing to give SyncBackPro the access it needs. The most common reasons are NTFS file permissions, the read-only attribute, network share permissions, the Windows account SyncBackPro is running as, and security software. Where SyncBackPro can identify a specific cause (such as the read-only flag) it will say so.
### Likely causes
- The file has the read-only attribute set, and the profile is not configured to clear it.
- The Windows account running SyncBackPro does not have read permission on the source, or write/delete permission on the destination.
- The destination volume is mounted read-only (BitLocker recovery, ChkDsk failure, USB write-protect switch).
- Network share permissions and NTFS file-system permissions do not both allow access.
- SyncBackPro is running elevated, as a different user, or via a scheduled task using different credentials from when you tested manually.
- Copying NTFS owner or audit security entries requires SeRestorePrivilege and SeSecurityPrivilege. Without these, security copy fails.
- The file is encrypted with Windows EFS by another user (see [Decryption](Encryption.md)).
- Antivirus or endpoint protection is blocking access.
- A NAS device may reject the temporary rename used by safe copy. See the NAS section.
- The path is System Volume Information, which Windows protects and which should normally be excluded.
- Windows Defender **Controlled Folder Access** (part of ransomware protection) blocks unrecognised apps from writing to protected folders such as Documents, Pictures, Videos, Music, Desktop, and Favorites. The same file may be writable in Explorer because Explorer is on the allowed list and SyncBackPro is not.
### First checks (in order)
- Confirm whether the error is on the source or destination side. The log will say.
- If the message includes *Read Only*, clear the read-only attribute or enable *Clear the read-only attribute before delete* on the **Copy/Delete** page.
- Run SyncBackPro elevated for system and Program Files locations.
- On the destination, confirm the Windows account has Modify rights on the folder.
- For scheduled tasks, confirm the right account is in use and that *Do not store password* was not enabled inadvertently.
- If *Security settings could not be set/read* appears, either run elevated or disable *Copy NTFS security permissions* on the [Compare Options, Security](CompareOptionsSecurity.md) page.
- If the destination is in Documents, Pictures, Videos, Music, Desktop, Favorites, or another folder protected by **Controlled Folder Access**, open **Windows Security » Virus & threat protection » Ransomware protection » Allow an app through Controlled folder access**, and add the SyncBackPro executable (and any helper executables such as the Scheduler Monitor Service) to the allowed list.
- Do not unblock or allow files flagged by your security software unless you are certain the file is safe.
### Read more
- In this help file: [Copy/Delete, Locked](CopyDeleteLocked.md), [Copy/Delete, Advanced](CopyDeleteAdvanced.md), [Administrator Protection](AdminProtWindows.md).
- On the 2BrightSparks site: [A basic introduction to NTFS permissions](https://www.2brightsparks.com/resources/articles/a-basic-introduction-to-ntfs-permissions.html), [SyncBack Elevation](https://www.2brightsparks.com/resources/articles/syncback-elevation.html), [Administrator Protection (Windows 11)](https://www.2brightsparks.com/resources/articles/administrator-protection.html).
## 2. The drive X does not exist / Network path unavailable
### Common messages
- The drive X: does not exist!
- No disk in drive X:
- Drive 'X' was removed during scan
- Directory does not exist: ...
- Directory *X* does not exist and cannot be created
- A network drive works when run manually, but fails when run by the scheduler.
### What it means
The drive letter, network path, or folder was not present at the moment SyncBackPro tried to use it, or it disappeared partway through the scan. This is very common with mapped drive letters, with USB drives that received a different letter on the next reboot, and with NAS shares that drop their connection on idle.
### Likely causes
- Mapped drive letters are specific to the Windows session that created them. A different session, including a scheduled task, will not see them.
- An elevated SyncBackPro cannot see drives mapped by a non-elevated Explorer, and vice-versa.
- A USB or removable drive has been assigned a different drive letter, unplugged, or has lost power.
- The optical drive is empty.
- The destination folder was renamed or deleted.
- A variable used in the path expanded to an empty string at run time.
- A network share dropped during the scan, or the laptop went to sleep (USB power-saving can disconnect drives on battery).
### First checks
- Replace mapped drive letters in the profile with **UNC paths** such as \\server\share\folder\.
- For a USB or removable drive that receives a different letter each time it is plugged in, replace the drive letter in the profile's source or destination with the [%SERIAL%](Variables.md#drivesfilesfolders) or [%LABEL%](Variables.md#drivesfilesfolders) variable. SyncBackPro will then locate the correct drive by its volume serial number or volume label regardless of which letter Windows has assigned. For example: %SERIAL=1234-ABCD%\Backups\ or %LABEL=MyBackup%\Backups\. See [Variables](SetupVariables.md) for the full syntax.
- Trigger profiles on [drive insertion](WhenInsert.md) rather than a scheduled time for removable media.
- As a Windows-side alternative, assign a fixed drive letter to the removable drive in Windows Disk Management.
- If credentials are needed for a network path, set them on the profile's [Network](NetworkSettings.md) page.
- If the path already uses a variable that may be empty at run time, see the [Variables](SetupVariables.md) page to verify what it resolves to.
### Read more
- In this help file: [Copy/Delete, Network](CopyDeleteNetwork.md), [Network](NetworkSettings.md).
- On the 2BrightSparks site: [Windows drive letter changes](https://www.2brightsparks.com/resources/articles/windows-drive-letter-changes.html).
## 3. Scheduled task does not run
### Common messages
- Scheduled task does not run, or runs with no log produced.
- 0x80070005 - Access is denied
- The operator or administrator has refused the request (0x800710E0)
- Profile cannot be found when run by the scheduler.
- Task works manually but not unattended.
### What it means
Windows Task Scheduler is unable to start the profile, or starts it under conditions where it cannot find what it needs (profiles, log folder, mapped drives, network credentials).
### Likely causes
- Wrong Windows username or password.
- The user entered a Windows Hello PIN instead of the Windows **login password**.
- Blank-password restrictions prevent the task from running.
- The task runs as a different Windows account from the one that owns the profiles. Profiles are user-specific.
- The task runs as SYSTEM or SERVICE and cannot find user-specific profile storage.
- The task is configured not to run unless the user is logged on.
- The task is disabled, or is already running with policy *Do not start a new instance*.
- Network credentials are not available because the task is configured not to store the password.
### First checks
- Confirm the task user account.
- Confirm the password is the Windows account password, not a PIN.
- Confirm the profile exists for that user.
- Confirm the log-storage location is accessible to the account.
- Confirm the task is enabled and check the **History** tab in Task Scheduler.
- If the task looks corrupted, delete it and recreate the schedule from inside SyncBackPro.
### Read more
- In this help file: [Scheduling Problems](SchedulingProblems.md), [Scheduler Monitor Service](SchedulerMonitorService.md), [Command Line Parameters](CommandLineParameters.md).
- On the 2BrightSparks site: [Windows Task Scheduler](https://www.2brightsparks.com/resources/articles/windows-task-scheduler.html).
## 4. Open or locked files / VSS errors
### Common messages
- File is locked:
- File is being locked by: (SyncBackPro uses Windows Restart Manager to identify the application where possible)
- Sharing violation (Win32 error 32)
- Creating the Shadow Volume took too long - open/locked files cannot be copied
- Unable to create shadow volume: Initialization failure
- VSS_E_BAD_STATE
- External exception E06D7363 when copying open or locked files.
### What it means
Either another program is holding the file open and not sharing read access, or the Volume Shadow Copy Service (VSS) that SyncBackPro uses to read open files could not produce a snapshot. Where SyncBackPro can identify the locking application via the Windows Restart Manager, it will name it.
### Likely causes
- Desktop search, antivirus, a database, an email client, or another application is holding the file open.
- SyncBackPro does not have the privileges required to create or use VSS snapshots.
- Another backup product has VSS in use.
- There is not enough free space on the snapshotted volume (VSS needs roughly 10 percent for its shadow copy area).
- 32-bit SyncBackPro is running on 64-bit Windows. VSS is only fully supported in the 64-bit build.
- One or more Windows VSS writers are in a failed or waiting state.
- The [Scheduler Monitor Service](SchedulerMonitorService.md) is not installed or not available.
- Windows updates or vulnerable-driver blocklist changes have disturbed VSS providers.
### First checks
- Close the application named in the *File is being locked by* message, if any.
- Enable VSS for open files on the [Copy/Delete, Locked](CopyDeleteLocked.md) page. VSS requires administrator privileges and an NTFS source.
- Use the 64-bit SyncBackPro build for full VSS support.
- Enable *Retry on failure* with a short delay on the [Copy/Delete, Advanced](CopyDeleteAdvanced.md) page for transient locks such as antivirus scanning.
- From an elevated command prompt, run vssadmin list writers and look for any writer not in *Stable / No error*. Run vssadmin list providers to check for broken providers, and vssadmin resize shadowstorage to enlarge the shadow copy area if needed.
- Reboot the machine to clear stuck VSS writers, then retry.
### Read more
- In this help file: [Open and Locked File Copying](OpenandLockedFileCopying.md), [Copy/Delete, VSS](CopyDeleteVSS.md), [Copy/Delete, Locked](CopyDeleteLocked.md).
- On the 2BrightSparks site: [Locked files](https://www.2brightsparks.com/resources/articles/locked-files.html), [Volume Shadow Copy (VSS)](https://www.2brightsparks.com/resources/articles/volume-shadow-copy-vss-windows.html), [Understanding file attributes](https://www.2brightsparks.com/resources/articles/understanding-file-attributes.html).
## 5. Safe copy failed / Failed to rename temp file
### Common messages
- Safe copy failed
- Failed to rename temp file
- Cannot move file (3): The system cannot find the path specified
- File does not exist
### What it means
Safe copy writes the destination file under a temporary name first and then renames it. Either the temporary file vanished before the rename, or the destination did not allow the rename.
### Likely causes
- Antivirus or anti-malware quarantines or deletes the temporary file before SyncBackPro can rename it.
- Security tools detect executable or script content even when the temporary file has an anonymous name.
- A NAS or network device handles temporary files or renames differently from local NTFS. See the NAS section.
- Verification may fail if the file disappears before hashing.
### First checks
- Check antivirus and security logs at the time the profile failed.
- Safe copy writes to a temporary file and then renames it, to reduce the risk of a corrupted partial copy. Disabling safe copy may avoid the temporary-name issue but will not address an underlying quarantine, and removes the corruption-prevention benefit.
### Read more
- In this help file: [Copy/Delete, Advanced](CopyDeleteAdvanced.md).
## 6. NAS-specific errors and quirks
Many NAS devices present themselves as NTFS-like SMB shares but behave differently in subtle ways. SyncBackPro already includes workarounds for most of the known quirks, but if your NAS is reporting odd errors it can be worth knowing what each one means.
### Common messages
- The drive or device is incorrectly stating the file exists when it does not. SyncBackPro will append a recommendation to update the NAS firmware and scan the NAS for disk errors.
- ERROR_ACCESS_DENIED when deleting a file that has the read-only flag set, even though the same account can delete other files in the same folder.
- ERROR_INVALID_FUNCTION during large-fetch directory enumeration.
- ERROR_INVALID_LEVEL or ERROR_EAS_NOT_SUPPORTED when creating a folder.
- ERROR_INVALID_PARAMETER (87) returned intermittently. SyncBackPro already retries this up to 5 times automatically.
- ERROR_ALREADY_EXISTS (183) when the file should not exist.
- The router or provider is busy, possibly initializing. The caller should retry
- There are open files so the networked drive cannot be disconnected
- Folder listings contain duplicate entries.
- File timestamps are rounded to 2-second precision (FAT-style) instead of NTFS precision.
- Connection to the NAS is dropped while a profile is running, then comes back.
- On ASUStor with Btrfs, the parent folder of a newly-created folder appears with unexpected attributes.
### What it means
The NAS firmware's SMB server implements a subset of the Windows file API, and edge cases are not always handled the same way. The errors above are returned by Windows, but the cause is the NAS firmware. SyncBackPro retries, ignores, or reinterprets many of these silently.
### First checks
- Update the NAS firmware and scan the NAS for disk errors.
- Use UNC paths, not mapped drive letters, especially for scheduled profiles.
- On the [Network](NetworkSettings.md) page, consider enabling *Connect to share first*.
- On the [Network, Advanced](NetworkAdvanced.md) page, enable *Do not disconnect after profile run* for the source or destination.
- If scans fail with ERROR_INVALID_FUNCTION, disable *Use large FindFirst cache* in the TreeScan options on the [Copy/Delete, Network](CopyDeleteNetwork.md) page.
- For timestamp drift, enable *Ignore time differences of 2 seconds or less* on the [Compare Options, Date Time](CompareOptionsDateTime.md) page. This is recommended for any non-NTFS destination.
- If the share goes to sleep, use Wake-on-LAN as a *Before profile* step, or disable NAS sleep.
### Read more
- In this help file: [Copy/Delete, Network](CopyDeleteNetwork.md), [Network](NetworkSettings.md), [Network, Advanced](NetworkAdvanced.md), [Compare Options, Date Time](CompareOptionsDateTime.md).
- On the 2BrightSparks site: [NAS backup best practices](https://www.2brightsparks.com/resources/articles/nas-backup-best-practices.html), [What is the SMB protocol](https://www.2brightsparks.com/resources/articles/what-is-smb-protocol.html), [Network file systems](https://www.2brightsparks.com/resources/articles/network-file-systems.html).
## 7. Cloud authorisation, quota, and provider API errors
### Common messages
- rateLimitExceeded (Google Drive)
- Quota exceeded for drive.googleapis.com
- 403 Forbidden - Access Denied
- Expired or invalid Azure SAS URL.
- HTTP 404 Not Found during large-file download from SharePoint or OneDrive.
- Egnyte 403 authorisation or scopes error.
- Google Drive requires your own client ID and client secret.
### What it means
The cloud provider has refused the request. The most common reason is an OAuth token that has expired, been revoked, or never had the right scopes. The second most common reason is a quota or rate limit on the shared API credentials.
### First checks by provider
- **Google Drive:** configure your own client ID and client secret, re-authorise the linked account, and check rate limits. See [Google Drive](GoogleDrive.md).
- **OneDrive and SharePoint:** re-authorise, confirm site and library selection. Large-file download URLs can expire mid-transfer.
- **Amazon S3 (and S3-compatible / Lightsail):** verify endpoint, region, access key and secret, storage class, and ACL.
- **Microsoft Azure:** check the SAS URL or access key. A cold or archive blob must be rehydrated before it can be read.
- **Egnyte:** confirm required scopes are granted by an Egnyte administrator.
- **Gmail (log notifications and email backup):** re-authorise the Gmail account; ordinary passwords no longer work.
Re-authorise the [linked cloud account](LinkedCloudAccounts.md) before changing other profile settings. That is the usual fix for 403, 401, and expired-token errors.
### Read more
- In this help file: [Cloud](Cloud.md), [Cloud, Advanced](CloudAdvanced.md), [Upgrading Cloud Service](CloudServiceUpgrade.md), [Secrets Manager](SecretsManager.md).
- On the 2BrightSparks site: [OAuth 2](https://www.2brightsparks.com/resources/articles/oauth2.html), [Google Drive OAuth](https://www.2brightsparks.com/resources/articles/google-drive-oauth.html), [Gmail OAuth](https://www.2brightsparks.com/resources/articles/gmail-oauth.html), [Google Drive client ID](https://www.2brightsparks.com/resources/articles/gdriveclientid.html).
## 8. Ransomware detection halted the backup
### Common messages
- The contents of the ransomware detection file have changed.
- Ransomware infection detected on the source/left.
- Ransomware infection detected on the destination/right.
- No profiles can be run because ransomware was detected on this system. (Global Settings)
- SyncBack Touch reports a ransomware infection.
### What it means
SyncBackPro uses a *detection file* (sometimes called a canary file) to detect ransomware. You point SyncBackPro at an existing file of 1 MiB or smaller on the location you want monitored. At each run SyncBackPro reads that file and calculates its hash. If the hash differs from the recorded value, SyncBackPro treats it as evidence of a ransomware infection and refuses to run, on the assumption that the file should not have been altered by anything legitimate.
This is a separate mechanism from the **TooManyDeletes** / **TooManyCopies** / **TooManyUpdates** safety thresholds (see section 17). Those abort when the planned file operation count exceeds the configured percentage. A large **TooManyDeletes** figure can be a symptom of ransomware, but it is not the detection-file mechanism described here.
### The three scopes
- **Global Settings:** the detection file lives on the local system SyncBackPro is running on. If its hash changes, no profiles run.
- **SyncBack Touch:** the detection file lives on the remote Touch device. If its hash changes, no profile that uses that Touch service runs.
- **Profile-level:** a detection file can be configured per source/left and per destination/right. If its hash changes, this profile will not run.
All three scopes work independently and can be used together.
### First checks
- Do **not** immediately pick a new detection file and rerun. Find out first why the hash of the existing one changed.
- Inspect the file you nominated as the detection file. Was it edited, replaced, restored from backup, moved, or renamed? Any of these will change its hash even if there is no ransomware.
- If you believe ransomware is present, treat the affected location as compromised. The destination copy from the last good run is your recovery source.
- If the change was legitimate, choose a new stable, low-traffic existing file on the [Ransomware Detection](SetupRansomware.md) page so SyncBackPro can record a fresh hash.
- Make sure the detection file is excluded from the profile's own copy. Otherwise the profile itself may overwrite or remove it. Use [filters](FilterSettings.md) or deselect it on the [Sub-directories and Files](SubDirectoriesandFiles.md) page.
- The detection file must be **1 MiB (1,048,576 bytes) or smaller**.
- For cloud destinations, do **not** nominate a file in cold storage (for example Glacier or Azure Archive). Retrieval cost and delay make it impractical and the file may be effectively immutable.
### Read more
- In this help file: [Ransomware Detection](SetupRansomware.md) (profile-level), [Global Settings » Ransomware](GlobalSettings.md#ransomware) (local system), [SyncBack Touch » Ransomware](SyncBackTouch.md#ransomware) (Touch device).
- On the 2BrightSparks site: [Ransomware detection with SyncBack](https://www.2brightsparks.com/resources/articles/ransomware-detection-with-syncback.html), [Ransomware-resilient backups](https://www.2brightsparks.com/resources/articles/ransomware-resilient-backups-syncbackpro.html), [Protect yourself from ransomware](https://www.2brightsparks.com/resources/articles/protect-yourself-from-ransomware.html).
## 9. I/O error 112 / Not enough disk space
### Common messages
- Exception in RunTheProfile - 112
- I/O error 112
- The drive X may be full or read-only
- Warning! You do not have enough free disk space on '...'.
### What it means
Windows refused a write because the target volume is out of space, or SyncBackPro's pre-run check estimated the copy needs more space than is available. The target is not always the destination drive. The Windows temporary folder and the profile log folder also need free space. The pre-run estimate is based on listed file sizes; actual usage may differ slightly because of compression and sparse files.
### First checks
- Check free space on the destination, the source, the Windows %TEMP% folder, and the SyncBackPro profile-storage folder.
- Confirm the destination volume is not mounted read-only.
- Compression and verification can temporarily need more free space than the final file.
- If old versions are filling the destination, review your retention rules on the [Versioning](CopyDeleteVersioning.md) page, then remove known unwanted versions manually rather than relying on bulk deletion.
- Before running any profile or cleanup that enables deletes against the destination, do a [simulated run](SimulatedRuns.md) first and review the [Differences window](TheDifferencesWindow.md) so you can see exactly what would be removed.
### Read more
- In this help file: [Versioning](CopyDeleteVersioning.md), [Log](Log.md).
- On the 2BrightSparks site: [Fix not enough space on Windows when copying files](https://www.2brightsparks.com/resources/articles/fix-not-enough-space-windows-copy-files.html).
## 10. Antivirus or potentially unwanted software warnings
### Common messages
- Operation did not complete successfully because the file contains a virus or potentially unwanted software
- Access denied while copying profile, log, or history files.
- A safe-copy temporary file disappears mid-copy.
### What it means
SyncBackPro is relaying an error from Windows Defender or another security product. SyncBackPro does not scan files for viruses itself.
### First checks
- Check Windows Security or your antivirus logs around the time of the failure.
- If Access Denied appears for files in Documents, Pictures, Videos, Music, Desktop, Favorites, or other protected folders, check whether Windows Defender **Controlled Folder Access** is blocking SyncBackPro. See section 1 for the steps to allow SyncBackPro through Controlled Folder Access.
- Do not add SyncBackPro, the source files, or the destination to an antivirus exclusion list unless you are certain the files are safe and you understand the security implications.
## 11. Copy, move, and delete errors (Windows error codes)
Copy, move, and delete errors all include the underlying Windows error code in parentheses, followed by the Windows description. Examples: Cannot copy file (5): Access is denied, Cannot move file (32): The process cannot access the file because it is being used by another process. The most common codes and their fixes are listed below.
| **Code** | **Meaning** | **Typical fix** |
| --- | --- | --- |
| 2 FILE_NOT_FOUND | File was deleted between scan and copy. | Re-run. If persistent, antivirus is quarantining files mid-run. |
| 3 PATH_NOT_FOUND | Parent folder missing. | Create or fix the path. |
| 5 ACCESS_DENIED | Permission, read-only, or share violation. | See section 1. |
| 19 WRITE_PROTECT | Volume is read-only. | Eject and remount; clear write-protect switch. |
| 21 NOT_READY | Device not ready. | Pause and retry; common with sleeping NAS. |
| 32 SHARING_VIOLATION | File in use, no share-read. | Close the application, or use VSS. |
| 33 LOCK_VIOLATION | Range lock held by another writer. | Wait and retry. |
| 39 / 112 DISK_FULL | Out of space. | Free space. See section 9. |
| 87 INVALID_PARAMETER | Often transient on NAS and external storage. | SyncBackPro already retries up to 5 times automatically. |
| 145 DIR_NOT_EMPTY | Trying to remove a folder containing files. | Subfolder has hidden files; show hidden in Explorer. |
| 183 ALREADY_EXISTS | Destination exists when it should not. | Usually a NAS firmware bug. See section 6. |
| 206 FILENAME_EXCED_RANGE | Path exceeds MAX_PATH (260 characters). | Enable long path support, or shorten paths. See section 13. |
| 1117 IO_DEVICE | Hardware I/O error. | Run chkdsk; replace failing disk. |
### Cannot create hard link / symbolic link
The destination file system does not support links (FAT, exFAT, and many NAS shares cannot), or the account lacks SeCreateSymbolicLinkPrivilege for symlinks. Switch to a regular copy, choose an NTFS destination, or run elevated. See [Copy/Delete, Links](CopyDeleteLinks.md).
### Failed to set short filename
The destination volume has 8.3 short-name generation disabled, is not NTFS, or the chosen short name conflicts. Disable *Set the short filename* on the [Compare Options, Attributes](CompareOptionsAttributes.md) page if 8.3 names are not actually needed.
## 12. Date and time errors
### Common messages
- Cannot get date and time of file
- Cannot get date and time from server: ...
- Failed to change modification date-time: ... (also creation, last access)
- Cannot set modification date and time for file on FTP server
### Likely causes
- FAT precision rounds modification times to 2-second multiples on even seconds.
- The FTP server does not implement MDTM set, MFMT, or MFCT. Many older or restricted-permission FTP servers do not.
- The NAS firmware does not honour SetFileTime.
- The destination is read-only.
- The source file has an invalid or out-of-range modification date.
### First checks
- Enable *Ignore time differences of 2 seconds or less* on the [Compare Options, Date Time](CompareOptionsDateTime.md) page. Recommended for any non-NTFS destination including most NAS shares.
- Disable *Set the modification date-time on the destination* if it is not actually needed.
- On the [FTP, Advanced](FTPAdvanced.md) page, try a different MDTM syntax, or enable *Calculate time-zone offset*.
- For local files with a bad date, check the file in Explorer and correct it at the source.
## 13. Filename and path length errors
### Common messages
- The filename may be too long
- The Zip filename is too long (maximum length is N characters)
- FILENAME_EXCED_RANGE (Win32 error 206)
- DOS filters must be shorter than N characters
- Invalid Windows filename when syncing from FTP, SFTP, or cloud sources.
- A file or folder is ignored because it already exists under the same name with a different case.
### Likely causes
- The path exceeds MAX_PATH (260 characters) on a destination that does not support long paths.
- Zip 2.0 has an internal 256-character filename limit.
- Windows is case-insensitive but a remote system (Linux, FTP, cloud) presents names that differ only by case.
- A remote system allows characters that Windows does not (such as colon or question mark).
- Junctions or mount points cause the scan to recurse back into a folder it has already processed.
### First checks
- Enable long path support in Windows (registry value LongPathsEnabled=1).
- Switch from Zip 2.0 to Zip 64 on the [Compression](CompressionSettings.md) page.
- Move the source folder higher in the tree to shorten relative paths.
- For DOS filter length, switch to regular expressions or split the filter into multiple lines on the [Filter Settings](FilterSettings.md) page.
- Review junction and link handling on the [Copy/Delete, Links](CopyDeleteLinks.md) page.
## 14. Verification and integrity errors
### Common messages
- The file cannot be verified: ...
- Cannot retrieve file integrity hash from
### Likely causes
- The destination file changed between write and read-back (antivirus scanning, indexer touching metadata).
- The source file changed during the copy (live database file or similar).
- The integrity database is locked, corrupt, or unreachable.
### First checks
- Check antivirus or endpoint protection logs around the time of the failure. If real-time scanning is modifying files during verification, consider a folder exclusion for SyncBackPro's destination, but only if the files are known safe and your security policy permits it (see section 10).
- Use VSS to snapshot the source for files that change frequently.
- Enable retry on verification mismatch.
- On the [Integrity Check](CopyDeleteIntegrity.md) page, clear the integrity database or move it to a local drive. Cloud-stored integrity databases are slow and error-prone.
## 15. SMB and network-share errors
### Common messages
- Access to the network resource was denied
- The network path was not found
- The remote name (...) is not acceptable to any network resource provider
- The local device specified is already connected to a network resource
- There is no network present
- The user name or password is incorrect
- Logon failure: unknown user name or bad password
### What it means
Windows could not connect to, authenticate to, or reach the SMB/CIFS share that the profile uses. The error comes from the Windows network redirector, not from SyncBackPro.
### Likely causes
- Username or password rejected, or share-level permissions exclude this account.
- Share permissions and NTFS permissions disagree. Both must allow access.
- For scheduled tasks running as SYSTEM, the share needs to permit the computer account (DOMAIN\HOSTNAME$). Most home NAS will not. Run the task as a real user instead.
- Server name or share name typo, DNS resolution failure, or the share is offline.
- A mapped drive letter is already in use by a different share (often a different session's view of the same letter).
- No network adapter is up, or the connection profile is *Public* with sharing disabled.
- SMB protocol version mismatch. Some older NAS devices only speak SMB1, which Windows 10 and 11 disable by default.
### First checks
- Re-enter credentials on the [Network](NetworkSettings.md) page.
- Use **UNC paths** rather than mapped drive letters. Using network drive letters is not recommended.
- Ping the host, try the IP address directly, and check the firewall (SMB ports 139 and 445).
- Open the share manually in Explorer using the same account that SyncBackPro will run as. If Explorer also fails, the issue is Windows-side, not SyncBackPro-side.
- Only enable the SMB1 client in Windows Features as a temporary workaround. Update the NAS firmware to SMB2 or higher instead. SMB1 has known security vulnerabilities.
### Read more
- In this help file: [Network](NetworkSettings.md), [Network, Advanced](NetworkAdvanced.md), [Copy/Delete, Network](CopyDeleteNetwork.md). NAS-specific quirks are in section 6.
- On the 2BrightSparks site: [What is the SMB protocol](https://www.2brightsparks.com/resources/articles/what-is-smb-protocol.html), [Network file systems](https://www.2brightsparks.com/resources/articles/network-file-systems.html).
## 16. FTP and SFTP errors
### Common messages (FTP and FTPS)
- 530 Login authentication failed, 530 Not logged in
- Cannot connect to FTP server / Connection timed out
- Socket Error 11001 - Host not found
- Socket Error 11004 - Unable to connect (usually leading/trailing spaces in the host, or a ftp:// URL where a bare hostname is expected)
- Socket Error 10061 - Connection refused
- Socket Error 10054 (with FTPS, typically Windows Firewall stateful FTP inspection)
- Cannot enter passive mode / PASV command not accepted
- Cannot select destination directory
- 421 Service not available, closing control connection
- 421 Too many connections from this IP
- 425 Cannot open data connection / 425 Unable to build data connection: Operation not allowed
- 426 Connection closed; transfer aborted
- 450 TLS session of data connection has not resumed or the session does not match the control connection
- 451 Failure writing to local file
- 522 SSL connection failed; session reuse required
- 550 Data channel timed out
- 550 The supplied message is incomplete. The signature was not verified.
- SSL/TLS handshake failed / Certificate could not be verified
- Cannot retrieve directory listing / Cannot parse directory listing
- Cannot get date and time from server
- Cannot set modification date and time for file on FTP server
### Common messages (SFTP)
- Host key verification failed / Host key has changed
- No matching host key type, No supported authentication methods
- Unable to load SFTP key (...): ...
- Permission denied (publickey)
- Server unexpectedly closed the connection
### What it means
The remote FTP, FTPS, or SFTP server refused or could not complete the request. The cause is usually authentication, firewall and data-channel routing, TLS configuration, server feature support, or (for SFTP) host-key trust.
### Likely causes
- **Login (530):** wrong username or password, the account is disabled, or the account is not allowed to access this directory.
- **Connection timeout:** the server is unreachable, the control port is blocked, or the server is offline.
- **Passive vs active mode:** the profile's mode does not match what the server, your firewall, or NAT allows. Most home and office networks need *passive* mode. Active mode requires inbound connections to the client.
- **TLS/SSL handshake:** the profile is configured for plain FTP but the server requires explicit FTPS, or vice-versa; the server certificate is expired, self-signed, or the hostname does not match; the server requires a TLS version or cipher that is disabled at one end.
- **Directory listing parse failure:** the server returns a LIST output in a non-standard format that SyncBackPro cannot recognise.
- **Date and time on server:** the FTP server does not implement MDTM set, MFMT, or MFCT. See also section 12.
- **Windows Firewall stateful FTP inspection (Socket 10054 with FTPS):** Windows Firewall's stateful FTP inspection cannot read encrypted FTPS control commands and can drop the connection.
- **FTP engine compatibility (425, 450 with specific servers):** the default FTP engine does not always negotiate correctly with every server. Known cases include 425 Unable to build data connection with ProFTPD, and 450 TLS session of data connection has not resumed with FileZilla Server 0.9.51 or newer.
- **Server-side resource limits and storage:** 421 Too many connections from this IP indicates the server's per-IP connection limit was exceeded. 451 Failure writing to local file means the server cannot store the upload, typically because of disk space, user quota, or folder permissions.
- **Server certificate cipher and TLS version restrictions:** some Windows FTPS servers produce 550 The supplied message is incomplete. The signature was not verified. when their TLS cipher priority or TLS version configuration is incompatible with the client.
- **Windows update side-effects (522):** certain Windows updates have changed SSL session-reuse behaviour and triggered 522 SSL connection failed; session reuse required against servers (such as vsftpd) that require session reuse.
- **SFTP host key changed:** the server's host key is not the one previously trusted. Either the server was legitimately rebuilt or migrated, or the connection is being intercepted.
- **SFTP key authentication:** the key file is in an unrecognised format (OpenSSH versus PuTTY .ppk), the passphrase is wrong, the public key is not in authorized_keys on the server, or the file or its containing folder is world-readable.
### First checks
- For login failures, re-enter the username and password on the [FTP](FTPSettings.md) page. Confirm the account has access to the working directory.
- For connection timeouts, try the host name then the IP address. Check that the control port is open: 21 for FTP/FTPS-explicit, 990 for FTPS-implicit, 22 for SFTP.
- Switch between passive and active mode on the [FTP, Advanced](FTPAdvanced.md) page. For active mode behind a router or firewall, see [FTP, Firewall](FTPFirewall.md).
- For TLS errors, confirm the connection mode on the [FTP](FTPSettings.md) page matches what the server expects (plain FTP, explicit FTPS, or implicit FTPS). On the [FTP, Advanced](FTPAdvanced.md) page, review certificate validation options.
- For directory listing parse failures, enable [debug output](TechnicalSupportWizard.md) so the raw LIST output is captured, then send the log to support.
- For FTP date issues, disable *Set modification date/time on destination*, or enable *Calculate time-zone offset* on the [FTP, Advanced](FTPAdvanced.md) page.
- For 425 Unable to build data connection (ProFTPD) or 450 TLS session of data connection has not resumed (FileZilla Server), switch the FTP engine on the [FTP](FTPSettings.md) page to the alternative engine (**WeOnlyDo**). Alternatively, on the FileZilla Server side, disable *Require TLS session resumption on data connection*.
- For Socket Error 10054 with FTPS, either disable Windows Firewall stateful FTP inspection with netsh advfirewall set global StatefulFtp disable from an elevated command prompt, or switch the profile to implicit FTPS.
- For 421 Too many connections from this IP, reduce *Scan threads* and *Worker threads* on the [FTP, Advanced](FTPAdvanced.md) page, or raise the server's per-IP connection limit.
- For 451 Failure writing to local file and 550 Data channel timed out, the problem is on the FTP server side (disk space, user quota, folder permissions, or firewall configuration on the server's passive-port range). Contact the server administrator.
- For SFTP **host key changed**, do not accept the new key blindly. Verify out of band (e.g. by asking the server's administrator) that the change was legitimate before trusting it. An unexpected host key change can indicate a man-in-the-middle attack.
- For SFTP key authentication failures, convert keys with PuTTYgen when mixing OpenSSH and PuTTY tooling, re-enter the passphrase, and confirm the private key file is not world-readable. On the server, confirm the public key is present in the user's authorized_keys file.
### Read more
- In this help file: [FTP](FTPSettings.md), [FTP, Advanced](FTPAdvanced.md), [FTP, Proxy](FTPProxy.md), [FTP, Firewall](FTPFirewall.md), [FTP, HTTP](FTPHTTP.md).
- 2BrightSparks Knowledge Base, FTP error reference: [Common FTP errors and Socket Error messages](https://help.2brightsparks.com/support/solutions/articles/43000335831), [Active versus Passive for FTP](https://help.2brightsparks.com/support/solutions/articles/43000335801), [421 Too many connections from this IP](https://help.2brightsparks.com/support/solutions/articles/43000336188), [425 Unable to build data connection](https://help.2brightsparks.com/support/solutions/articles/43000542676), [450 TLS session of data connection has not resumed](https://help.2brightsparks.com/support/solutions/articles/43000541303), [451 Failure writing to local file](https://help.2brightsparks.com/support/solutions/articles/43000335841), [522 SSL connection failed](https://help.2brightsparks.com/support/solutions/articles/43000538785), [550 Data channel timed out](https://help.2brightsparks.com/support/solutions/articles/43000336178), [550 The supplied message is incomplete](https://help.2brightsparks.com/support/solutions/articles/43000336175).
## 17. Profile aborted: Why?
When a profile aborts, SyncBackPro records an explicit reason. The reason appears in the log and in the result row in the main window. The most common reasons are listed below.
- **User**: you clicked Abort, or another instance asked SyncBackPro to stop.
- **TooManyDeletes**: pre-run check found more files queued for deletion than the configured threshold. Safety abort.
- **TooManyCopies**: same, for copies and moves.
- **TooManyUpdates**: same, for updates.
- **TooManyErrors**: more errors than the configured threshold.
- **TimeUp**: the [time limit](WhenTimeLimit.md) was reached.
- **WindowsShutdown**: Windows is shutting down.
- **ProgramClose**: SyncBackPro itself is closing.
- **Script**: a user script raised an abort.
- **StoppingGroup**: the parent group queue was stopped.
### First checks for TooMany... aborts
- Review the planned changes in the differences window before clicking **Continue Run**.
- If the action was intended, raise the warning threshold on the [Copy/Delete, Warning](CopyDeleteWarning.md) page.
- If not, tighten filters and decisions and re-run.
- A large **TooManyDeletes** abort may indicate ransomware activity. See section 8.
## 18. Profile and settings cannot be saved, loaded, or modified
### Common messages
- You cannot delete the profile because it is currently running or is due to run
- %s cannot be modified
- Sorry, the settings cannot be saved: ...
- Unable to import profile '...': ...
- The profile '...' was imported, but it could not be converted to the current version
### Likely causes and fixes
- **Profile is running or due to run:** wait for the run to finish, or pause the profile first.
- **Cannot be modified:** the profile is running, or it is owned by another user and you are not in admin mode. Stop the profile or take ownership.
- **Settings cannot be saved:** disk full, the INI file is read-only, the network store is unavailable (when profiles are stored on a share), or AV is blocking the write. Confirm the profiles folder is writable; move it to a local drive if it is on a flaky share.
- **Unable to import or convert:** the profile is from a newer or incompatible SyncBackPro version. Use the matching version, or recreate the profile.
See [Exporting and Importing Profiles](ExportingImportingProfiles.md) and [Invalid Profiles](InvalidProfiles.md).
## 19. Installation and update errors
### Common messages
- DeleteFile failed; code 5 Access is denied
- XceedZip.dll is not registered or missing
- OLE Error 800A0183
- Access violation in ntdll.dll
### First checks
- Fully exit SyncBackPro, including the system tray icon. Temporarily disable "start with Windows", reboot, and retry the installer.
- For DLL registration errors, run the installer from an elevated command prompt.
## Looking up Win32 numeric error codes
If the log shows a bare numeric error code such as (5), (32), (112), or 0x80070005, these are usually Windows system error codes returned by the underlying API call. The most common codes are listed in section 11.
- The canonical reference is the *System Error Codes* index on Microsoft Learn, which lists every numeric code with its symbolic name and meaning.
- HRESULT values of the form 0x8007xxxx wrap a Win32 code: the low 16 bits xxxx are the underlying Win32 code in hexadecimal. For example, 0x80070005 is Win32 error 5 (ERROR_ACCESS_DENIED).
## What to Collect Before Contacting Support
If the steps above do not resolve your error, please collect the following before contacting support:
- SyncBack version and edition, e.g. SyncBackPro
- Windows version
- Whether the profile was run manually or by schedule
- Whether SyncBackPro was elevated
- The exact log message and the profile log file
- Source and destination types (local, network, NAS, cloud, FTP, Touch)
- Whether antivirus or endpoint protection is installed
- For cloud problems: the provider, the linked-account status, and whether re-authorisation has been tried
The [Technical Support Wizard](TechnicalSupportWizard.md) bundles the logs, debug logs, settings, system info, and (optionally) the relevant profile so the support team has the full picture without follow-up.
## When All Else Fails
For anything that does not match the above, especially intermittent or "it worked yesterday" failures, enable debug output, reproduce the error once, then generate a Technical Support archive (Help, Tech Support) and send it to 2BrightSparks. See the [Help](Help.md) page for support contact options, or visit [our online support guide](https://help.2brightsparks.com/support/solutions/articles/43000335587).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Scripting
This section of the help file provides information about scripting support. Scripting is a way in which the functionality of SyncBackPro can be changed or extended by writing small scripts. A script is a set of instructions and is similar to the macro support in Microsoft Office and Java Script in web pages. It is also similar to plug-ins in other software. SyncBackPro can use scripts written in [Pascal](PascalScriptLanguage.md) and [Basic](BasicScriptLanguage.md).
For compatibility with older versions of SyncBackPro, **VBScript** is also supported. However, VBScript can only be used with the 32-bit version of SyncBackPro and will be removed in a future release. The newer Pascal and Basic scripting languages (introduced in SyncBackPro V8) can be used both in 32-bit and 64-bit. Microsoft deprecated VBScript in October 2023, which means it will eventually be removed from Windows entirely.
SyncBackPro comes with many [example scripts](ExampleScripts.md).
- We do not provide technical support, or consultancy, for writing or debugging scripts.
## Scripting Overview
When SyncBackPro performs certain actions it will check to see if there are any scripts installed that can be called when the action is performed. For example, whenever the profiles are listed in the main window it checks to see if there are any [main interface scripts](MainInterfaceScripts.md) installed. If so, it checks if those scripts can be called, and if so, calls the appropriate function in the script. In technical terms, these are events. You write functions in the scripts that perform actions when certain events occur. To make it easier for the scripts to communicate with SyncBackPro it also provides helper objects, e.g. [SBSystem](SBSystem.md). Depending on the script type, one or more of those helper objects will be available to the script.
## Installing Scripts
To start using a script you must first install it via **Scripts** in the [burger menu](PreferencesMainMenu.md) in the main window. Note that installing a script does not automatically make the script active. If it's a [Main Interface](MainInterfaceScripts.md) or [Profile Configuration](ProfileConfigurationScripts.md) script then you must install it then go to the relevant tab and tick the checkbox for that script. To use a [Runtime](RuntimeScripts.md) script in a profile, after installing it you must select it in the [Scripts](SetupScripts.md) page of the profiles configuration. If it's a [Location](LocationScripts.md) script then you must create (or modify) a profile so it does a backup or sync with that script. You can also import scripts by dragging the file onto the main window of SyncBackPro.
You can also install scripts via the [command line interface](CommandLineParameters.md#importscripts) by simply passing the filename of the script (the same way as importing profiles).
## Creating Scripts
To create a new script you can use a text editor, e.g. Notepad, and then install the script (see above). Alternatively, you can go to the Scripts window (via [burger menu](PreferencesMainMenu.md) **-> Scripts** in the main window), and click the **New** button. SyncBackPro will prompt you where to save the script and then it will open the built-in script editor (see below). After creating the script, and clicking OK, you are then prompted if you want to install the script.
You can also open an existing script file using the drop-down menu on the **New** button and selecting **Open**.
## Exporting Scripts
To export a script, go to the Scripts window (via [burger menu](PreferencesMainMenu.md) **-> Scripts** in the main window), select the script (or scripts) you wish to export, then click the **Export** button.
## Editing and Checking Scripts
The built-in script editor can only be used with **Pascal** and **Basic** scripts (VBScript is not supported). To edit a script (after it has been imported), go to the Scripts window (via [burger menu](PreferencesMainMenu.md) **-> Scripts** in the main window), select the script you wish to edit, then click the **Edit** button. You can also double-click the script to edit it.
The script editor has language sensitive syntax highlighting, auto-completion (Ctrl-Space), parameter hints (Ctrl-Shift-Space) and can compile scripts (Ctrl-F7) to check them for errors. You can also perform text search (Ctrl-f) and replace (Ctrl-r).
Introduced in SyncBackPro V12, you can also make use of [Artificial Intelligence](ScriptingAI.md). See **AI Assistant** in the pop-up menu for the editor. Also, see the **AI Chat** button at the bottom of the window.
## Script Debugger
See the [debugging section](DebuggingScripts.md) for help with debugging scripts.
## Script Order
The order in which the scripts are set to run is important. This is because, in some cases, only one script can perform an action. For example, if you have a runtime script that renames a file then obviously a file can only be renamed once. This means the first script to rename a file is the one that will rename it. Any following scripts cannot rename the file.
## Script Types
There are four different types of scripts:
1. [Main Interface](MainInterfaceScripts.md) scripts: these are scripts that can be used with the main user interface in SyncBackPro. For example, you could write a script that adds columns to the [main window](TheMainWindow.md).
2. [Profile Configuration](ProfileConfigurationScripts.md) scripts: these are scripts that can be used when configuring a profile.
3. [Location](LocationScripts.md) scripts: these are scripts that are used with profiles to store and retrieve files. For example, you could write a location script that copies files to and from a database.
4. [Runtime](RuntimeScripts.md) scripts: these are scripts that are used by profiles when they are run. For example, you could write a profile to decide on which files to copy, or add columns to the [Differences](TheDifferencesWindow.md) window.
A single script file can be more than one type of script. For example, you could write a script that is both a main interface and runtime script.
SyncBackPro knows what type a script is because the script tells SyncBackPro via the [Description](ScriptBase.md#function_description_var_scripttype__) function. It also knows what scripting language is being used based on comments in the header (first 10 lines) of a script, and failing that, the filename extension of the script file. The following languages can be used with the **SBLang** comment: **Pascal**, **Basic** and **VBScript**. For filename extensions, use **.pas** for Pascal, **.bas** for Basic and **.vbs** for VBScript.
VBScript support is provided for backwards compatibility only and its use is not recommended. VBScript is only supported by 32-bit SyncBackPro and it may be removed in future versions of SyncBackPro.
For example, the following **Pascal** script is a profile configuration, runtime, and location script:
*//*
*// Use* ***SBLang*** *to define what language this script is in:*
*//*
*// SBLang=Pascal*
*//*
**Function** Description(**var** ScriptType);
**begin**
Result:='All Drives Location';
ScriptType:=SCRIPTTYPE_CONFIG + SCRIPTTYPE_RUN + SCRIPTTYPE_LOCATION;
**End**;
## Scripts Objects
SyncBackPro makes a number of objects available to scripts to help them interface with SyncBackPro. Which objects are available depends upon the type of script:
- [SBLocation](SBLocation.md): This object is only accessible from [Location](LocationScripts.md) scripts. It provides information and control over the source/left and destination/right locations.
- [SBProfile](SBProfile.md): This object is only accessible from [Profile Configuration](ProfileConfigurationScripts.md) scripts. It allows you to create a page in the profile setup window.
- [SBProfiles](SBProfiles.md): This object is accessible from any type of script. It provides information about profiles.
- [SBRunning](SBRunning.md): This object is only accessible from [Runtime](RuntimeScripts.md) scripts. Using this object you can access the runtime information of a profile.
- [SBSystem](SBSystem.md): This object is accessible from any type of script. It provides general functions, e.g. hashing.
- [SBVariables](SBVariables.md): This object is accessible from any type of script. It allows you access to the profile and program variables.
- [SBHistory](SBHistory.md): This object is accessible from [Main Interface](MainInterfaceScripts.md), [Runtime](RuntimeScripts.md) and [Profile Configuration](ProfileConfigurationScripts.md) scripts. Using it you can get access to the runtime history of a profile.
## Scripts Online
If you have scripts you wish to share, or want to download more scripts, visit the following web page:
https://www.2brightsparks.com/syncback/scripts/index.html
**Further reading:** [SyncBackPro Scripting](https://www.2brightsparks.com/resources/articles/syncbackpro-scripting.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Pascal
The **Pascal** syntax is similar to **Delphi** and supports:
- begin .. end constructor
- procedure and function declarations
- if .. then .. else constructor
- for .. to .. do .. step constructor
- while .. do constructor
- repeat .. until constructor
- try .. except and try .. finally blocks
- case statements
- array constructors (x:=[ 1, 2, 3 ];)
- ^ , * , / , and , + , - , or , <> , >=, <= , = , > , < , div , mod , xor , shl , shr operators
- access to object properties and methods (ObjectName.SubObject.Property)
Like in Pascal, statements should be terminated by the "**;**" character. **Begin**..**end** blocks are allowed to group statements.
### Identifiers
Identifier names in scripts (variable names, function and procedure names, etc.) follow the most common rules in Pascal: they should begin with a character (a..z or A..Z), or '_', and can be followed by alphanumeric chars or '_' char. They cannot contain any other character or spaces.
For example:
- Valid: VarName, _Some, V1A2, _____Some____
- Invalid: 2Var, My Name, Some-more, This,is,not,valid
### Assign Statements
Just like in Pascal, assign statements (assign a value or expression result to a variable or object property) are built using ":=". Examples:
```
MyVar := 2;
Button.Caption := 'This ' + 'is ok.';
```
### Character Strings
Strings (sequence of characters) are declared in Pascal using single quote (') character. Double quotes (") are not used. You can also use #nn to declare a character inside a string. There is no need to use '+' operator to add a character to a string. For example:
```
A := 'This is a text';
Str := 'Text '+'concat';
B := 'String with CR and LF char at the end'#13#10;
C := 'String with '#33#34' characters in the middle';
```
### Comments
Comments can be inserted inside scripts. You can use // chars or (* *) or { } blocks. Using // the comment will finish at the end of line. For example:
```
// This is a comment before ShowMessage
ShowMessage('Ok');
(* This is another comment *)
ShowMessage('More ok!');
{ And this is a comment
with two lines }
ShowMessage('End of okays');
```
### Variables
Unlike [Basic scripting](BasicScriptLanguage.md), when using Pascal you must declare variables. However, there is no need to declare variable types. To declare variables use the **var** directive and the variable name. For example:
```
procedure Msg;
var S;
begin
S:='Hello world!';
ShowMessage(S);
end;
```
When passing variables to functions or procedures that can return values, you must set the variable before the call, e.g.
```
var Executed;
var RetVal;
var ErrMsg;
begin
ErrMsg:='';
RetVal:=0;
Executed:=SBSystem.Exec('C:\Windows\notepad.exe', 0, RetVal, ErrMsg);
end;
```
### Indexes
Strings, arrays and array properties can be indexed using "[" and "]" chars. For example, if *Str* is a string variable, the expression *Str[3]* returns the third character in the string denoted by *Str*, while *Str[X + 1]* returns the character immediately after the one indexed by X. For example:
```
MyChar:=MyStr[2];
MyStr[1]:='A';
MyArray[1,2]:=1530;
Lines.Strings[2]:='Some text';
```
### Arrays
Array constructors and variant arrays are supported. To construct an array, use "[" and "]" chars. You can construct multi-index array nesting array constructors. You can then access arrays using indexes. If the array is multi-index, separate indexes using ",".
If a variable is a variant array, then indexing in that variable is supported. A variable is a variant array if it was assigned using an array constructor, if it is a direct reference to a Delphi variable which is a variant array or if it was created using the **VarArrayCreate** procedure.
Arrays are 0-based index. For example:
```
NewArray := [ 2,4,6,8 ];
Num:=NewArray[1]; //Num receives "4"
MultiArray := [ ['green','red','blue'] , ['apple','orange','lemon'] ];
Str:=MultiArray[0,2]; //Str receives 'blue'
MultiArray[1,1]:='new orange';
```
### If statements
There are two forms of if statement: **if...then** and the **if...then...else**. Like normal Pascal, if the **if** expression is true, the statement (or block) is executed. If there is an **else** part and the expression is false, then the statement (or block) after **else** is executed. For example:
```
if J <> 0 then Result := I/J;
if J = 0 then Exit else Result := I/J;
if J <> 0 then begin
Result := I/J;
Count := Count + 1;
end else
Done := True;
```
### While statements
A **while** statement is used to repeat a statement or a block, while a control condition (expression) is evaluated as true. The control condition is evaluated before the statement. Hence, if the control condition is false at first iteration, the statement sequence is never executed. The **while** statement executes its constituent statement (or block) repeatedly, testing the expression before each iteration. As long as the expression returns True, execution continues. For example:
```
while Data[I] <> X do I := I + 1;
while I > 0 do begin
if Odd(I) then Z := Z * X;
I := I div 2;
X := Sqr(X);
end;
while not Eof(InputFile) do begin
Readln(InputFile, Line);
Process(Line);
end;
```
### Repeat statements
The syntax of a **repeat** statement is ***repeat*** *statement1; ...; statementn;* ***until*** *expression* where *expression* returns a Boolean value. The repeat statement executes its sequence of constituent statements continually, testing the expression after each iteration. When the expression returns True, the repeat statement terminates. The sequence is always executed at least once because the expression is not evaluated until after the first iteration. For example:
```
repeat
K := I mod J;
I := J;
J := K;
until J = 0;
repeat
Write('Enter a value (0..9): ');
Readln(I);
until (I >= 0) and (I <= 9);
```
### For statements
The **for** statement has the following syntax: ***for*** *counter* ***:=*** *initialValue* ***to*** *finalValue* ***do*** *statement*
The **for** statement sets the counter to *initialValue*, repeats execution of the statement (or block) and increments the value of *counter* until *counter* reaches *finalValue*. For example:
```
for c:=1 to 10 do
a:=a+c;
for i:=a to b do begin
j:=i^2;
sum:=sum+j;
end;
```
### Case statements
Case statements have the following syntax:
```
case selectorExpression of
caseexpr1: statement1;
...
caseexprn: statementn;
else
elsestatement;
end;
```
if *selectorExpression* matches the result of one of the *caseexprn* expressions, the respective statement (or block) will be executed. Otherwise, the *elsestatement* will be executed. The **Else** part of a case statement is optional. It is different from Delphi because the case statement doesn't need to use only ordinal values. You can use expressions of any type in both selector expression and case expression. For example:
```
case uppercase(Fruit) of
'lime': ShowMessage('green');
'orange': ShowMessage('orange');
'apple': ShowMessage('red');
else
ShowMessage('black');
end;
```
### Function and Procedure declarations
The declaration of functions and procedures is similar to Object Pascal in Delphi, with the difference you don't specify variable types. Just like OP, to return function values, use the implicitly declared result variable. Parameters by reference can also be used, with the restriction that there is no need to specify variable types. For example:
```
procedure HelloWorld;
begin
ShowMessage('Hello world!');
end;
procedure UpcaseMessage(Msg);
begin
ShowMessage(Uppercase(Msg));
end;
function TodayAsString;
begin
result:=DateToStr(Date);
end;
function Max(A,B);
begin
if A>B then
result:=A
else
result:=B;
end;
procedure SwapValues(var A, B);
Var Temp;
begin
Temp:=A;
A:=B;
B:=Temp;
end;
```
### Exceptions
Exceptions can be caught between **try**...**except** blocks. **on:** exception filtering is not supported, but you can get the exception details using **LastExceptionClassName** and **LastExceptionMessage**. For example:
```
try
...
except
ShowMessage(LastExceptionClassName);
ShowMessage(LastExceptionMessage);
end;
```
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Basic
Although the **Basic** script syntax is very similar to **VBScript**, it is not identical and there are differences. See the [Converting VBS to Basic](ConvertingVBSToBasic.md) section for details.
The Basic syntax supports:
- sub .. end and function .. end declarations
- byref and dim directives
- if .. then .. else .. end constructor
- for .. to .. step .. next constructor
- do .. while .. loop and do .. loop .. while constructors
- do .. until .. loop and do .. loop .. until constructors
- ^ , * , / , and , + , - , or , <> , >=, <= , = , > , < , div , mod , xor , shl , shr operators
- try .. except and try .. finally blocks
- try .. catch .. end try and try .. finally .. end try blocks
- select case .. end select constructor
- array constructors (x:=[ 1, 2, 3 ];)
- exit statement
- access to object properties and methods (ObjectName.SubObject.Property)
### Identifiers
Identifier names in scripts (variable names, function and procedure names, etc.) follow the most common rules in Basic: they should begin with a character (a..z or A..Z), or '_', and can be followed by alphanumeric chars or '_' char. They cannot contain any other character or spaces.
For example:
- Valid: VarName, _Some, V1A2, _____Some____
- Invalid: 2Var, My Name, Some-more, This,is,not,valid
### Assign Statements
Assign statements (assign a value or expression result to a variable or object property) are built using "=".. Examples:
```
MyVar = 2
Button.Caption = "This " + "is ok."
```
### New statement
The "**new**" statement is provided for the Basic syntax. Since you don't provide the method name in this statement, it looks for a method named "**Create**" in the specified class. If the method doesn't exist, the statement fails. For example:
```
MyLabel = new TLabel(Form1)
MyFont = new TFont
```
In the above examples, a method named "Create" for TLabel and TFont class will be called. The method must be registered. If the method receives parameters, you can pass the parameters in parenthesis, like the TLabel example above.
### Character Strings
Strings (sequence of characters) are declared in Basic using the double quotes (") character. For example:
```
A = "This is a text"
Str = "Text "+"concat"
```
### Comments
Comments can be inserted inside scripts. You can use ' chars or **REM**. A comment will finish at the end of the line. For example:
```
' This is a comment before ShowMessage
ShowMessage("Ok")
REM This is another comment
ShowMessage("More ok!")
' And this is a comment
' with two lines
ShowMessage("End of okays")
```
### Variables
To aid with **VBScript** compatibility, there is no need to declare variable types or even variables themselves. However, if you wish to declare variables you can using the **DIM** directive and the variable name. For example:
```
SUB Msg
DIM S
S = "Hello world!"
ShowMessage(S)
END SUB
DIM A
A = 0
A = A+1
ShowMessage(A)
```
You can also declare global variables as private or public using the following syntax :
```
PRIVATE A
PUBLIC B
B = 0
A = B + 1
ShowMessage(A)
```
Variables declared with the **DIM** statement are public by default. Private variables are not accessible from other scripts. Variables can be default initialized with the following syntax:
```
DIM A = "Hello world"
DIM B As Integer = 5
```
### Indexes
Strings, arrays and array properties can be indexed using "[" and "]" chars. For example, if Str is a string variable, the expression Str[3] returns the third character in the string denoted by Str, while Str[I + 1] returns the character immediately after the one indexed by I. For example:
```
MyChar = MyStr[2]
MyStr[1] = "A"
MyArray[1,2] = 1530
Lines.Strings[2] = "Some text"
```
### Arrays
Array constructors and variant arrays are supported. To construct an array, use "[" and "]" chars. You can construct multi-index array nesting array constructors. You can then access arrays using indexes. If the array is multi-index, separate indexes using ",".
If a variable is a variant array, then indexing in that variable is supported. A variable is a variant array if it was assigned using an array constructor, if it is a direct reference to a Delphi variable which is a variant array or if it was created using the **VarArrayCreate** procedure.
Arrays are 0-based index. For example:
```
NewArray = [ 2,4,6,8 ]
Num = NewArray[1] //Num receives "4"
MultiArray = [ ["green","red","blue"] , ["apple","orange","lemon"] ]
Str = MultiArray[0,2] //Str receives 'blue'
MultiArray[1,1] = "new orange"
```
### If statements
There are two forms of if statement: **if...then...end** and the **if...then...else...end if**. Like normal Basic, if the **if** expression is true, the statement (or block) is executed. If there is an **else** part and the expression is false, then the statement (or block) after **else** is executed. For example:
```
FUNCTION Test(I, J)
IF J <> 0 THEN Result = I/J END IF
IF J = 0 THEN Exit Function ELSE Result = I/J END IF
IF J <> 0 THEN
Exit Function
ELSE
Result = I/J
END IF
END FUNCTION
```
If the **IF** statement is in a single line, you don't need to finish it with **END IF**:
```
IF J <> 0 THEN Result = I/J
IF J = 0 THEN Exit ELSE Result = I/J
```
### While statements
A **while** statement is used to repeat a statement or a block, while a control condition (expression) is evaluated as true. The control condition is evaluated before the statement. Hence, if the control condition is false at first iteration, the statement sequence is never executed. The **while** statement executes its constituent statement (or block) repeatedly, testing the expression before each iteration. As long as the expression returns True, execution continues. For example:
```
WHILE (Data[I] <> X) I = I + 1 END WHILE
WHILE (I > 0)
IF Odd(I) THEN Z = Z * X END IF
X = Sqr(X)
END WHILE
WHILE (not Eof(InputFile))
Readln(InputFile, Line)
Process(Line)
END WHILE
```
### loop statements
The possible syntaxes are:
```
DO WHILE expr statements LOOP
DO UNTIL expr statements LOOP
DO statements LOOP WHILE expr
DO statement LOOP UNTIL expr
```
The *statements* will be executed **WHILE** *expr* is true, or **UNTIL** *expr* is true. If *expr* is before *statements*, then the control condition will be tested before iteration. Otherwise, control condition will be tested after iteration. For example:
```
DO
K = I mod J
I = J
J = K
LOOP UNTIL J = 0
DO UNTIL I >= 0
Write("Enter a value (0..9): ")
Readln(I)
LOOP
DO
K = I mod J
I = J
J = K
LOOP WHILE J <> 0
DO WHILE I < 0
Write("Enter a value (0..9): ")
Readln(I)
LOOP
```
### For statements
For statements can have the following syntax:
**FOR** *counter* = *initialValue* **TO** *finalValue* **STEP** *stepValue*
*statements*
**NEXT**.
The **for** statement sets *counter* to *initialValue*, repeats execution of *statements* until "**next**" and then increments value of *counter* by *stepValue*, until *counter* reaches *finalValue*. The **step** part is optional, and if omitted *stepValue* is considered to be 1.
For example:
```
FOR c = 1 TO 10 STEP 2
a = a + c
NEXT
FOR I = a TO b
j = i ^ 2
sum = sum + j
NEXT
```
### select case statements
Case statements have the following syntax:
```
SELECT CASE selectorExpression
CASE caseexpr1
statement1
…
CASE caseexprn
statementn
CASE ELSE
elsestatement
END SELECT
```
if *selectorExpression* matches the result of one of the *caseexprn* expressions, the respective statements will be executed. Otherwise, the *elsestatement* will be executed. The **Else** part of a case statement is optional. For example:
```
SELECT CASE uppercase(Fruit)
CASE "lime" ShowMessage("green")
CASE "orange"
ShowMessage("orange")
CASE "apple" ShowMessage("red")
CASE ELSE
ShowMessage("black")
END SELECT
```
### function and sub declarations
The declaration of functions and subs is similar to Basic. Functions return values, which are returned using the implicitly declared variable (with the same name as the function) or via the **Return** statement. Parameters by reference can also be used, by using the **BYREF** directive. For example:
```
SUB HelloWorld
ShowMessage("Hello world!")
END SUB
SUB UpcaseMessage(Msg)
ShowMessage(Uppercase(Msg))
END SUB
FUNCTION TodayAsString
TodayAsString = DateToStr(Date)
END FUNCTION
FUNCTION Max(A,B)
IF A>B THEN
MAX = A
ELSE
MAX = B
END IF
END FUNCTION
SUB SwapValues(BYREF A, B)
DIM TEMP
TEMP = A
A = B
B = TEMP
END SUB
```
You can use **Return** statement to exit subs and functions. For functions, you can also return a valid value:
```
SUB UpcaseMessage(Msg)
ShowMessage(Uppercase(Msg))
Return
'This line will be never reached
ShowMessage("never displayed")
END SUB
FUNCTION TodayAsString
Return DateToStr(Date)
END FUNCTION
```
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Calling DLL functions
You can import and call external DLL functions by adding special directives to the declaration of a [script](Scripting.md) routine. In addition to the function signature, the directive specifies the library name and, optionally, the calling convention.
External libraries are loaded automatically the first time one of their functions is called, unless the library is already loaded. To load and unload libraries explicitly, the Windows API functions **LoadLibrary** and **FreeLibrary** can be used.
**Note:** the DLL must match the bitness of SyncBackPro. A 64-bit installation of SyncBackPro can only load 64-bit DLLs, and a 32-bit installation can only load 32-bit DLLs. See [32-bit vs 64-bit](32bit64bit.md).
### Pascal Syntax
The declaration syntax when using the [Pascal scripting language](PascalScriptLanguage.md) is:
```
function functionName(arguments): resultType; [callingConvention]; external 'libName.dll' [name 'ExternalFunctionName'];
```
For example, the following declaration:
```
function MyFunction(arg: integer): integer; external 'CustomLib.dll';
```
imports a function called **MyFunction** from **CustomLib.dll**. The default calling convention, if not specified, is **register**. You can declare different calling conventions (**stdcall**, **register**, **pascal**, **cdecl** or **safecall**) and use a different name for the DLL function. For example:
```
function MessageBox(hwnd: pointer; text, caption: string; msgtype: integer): integer; stdcall; external 'User32.dll' name 'MessageBoxA';
```
This imports the **MessageBoxA** function from **User32.dll** (a Windows API library), but it is called as **MessageBox** in the script.
Declarations can be used for both functions and procedures (routines that do not return a value).
### Basic Syntax
The declaration syntax when using the [Basic scripting language](BasicScriptLanguage.md) is:
```
function lib "libName.dll" [alias "ExternalFunctionName"] [callingConvention] functionName(arguments) as resultType
```
For example, the following declaration:
```
function lib "CustomLib.dll" MyFunction(arg as integer) as integer
```
imports a function called **MyFunction** from **CustomLib.dll**. The default calling convention, if not specified, is **stdcall**. You can declare different calling conventions (**stdcall**, **register**, **pascal**, **cdecl** or **safecall**) and use a different name for the DLL function. For example:
```
function MessageBox lib "User32.dll" alias "MessageBoxA" stdcall
(hwnd as pointer, text as string, caption as string, msgtype as integer) as integer
```
This imports the **MessageBoxA** function from **User32.dll** (a Windows API library), but it is called as **MessageBox** in the script.
Declarations can be used for both functions and subs (routines that do not return a value).
### Supported Types
The following data types are supported for the arguments and result of external functions:
```
Integer
Boolean
Char
Extended
String
Pointer
PChar
Object
Class
WideChar
PWideChar
AnsiString
Currency
Variant
Interface
WideString
Longint
Cardinal
Longword
Single
Byte
Shortint
Word
Smallint
Double
Real
DateTime
```
Other types (records, arrays, etc.) are not supported. Arguments of the above types can be passed by reference by adding **var** (Pascal) or **byref** (Basic) to the parameter declaration.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# System Library
There are a number of built-in functions that are part of the scripting system. SyncBackPro also provides extra functions via [SBSystem](SBSystem.md) and other miscellaneous [functions](ScriptFunctions.md) and [classes](ScriptClasses.md). There are also built-in [constants](ScriptConstants.md) and functions provided for [compatibility with VBScript](ConvertingVBSToBasic.md) (if you are using the Basic language).
For help and details on these functions, refer to the Delphi online documentation:
```
[Abs](http://www.delphibasics.co.uk/RTL.asp?Name=abs)
[AnsiCompareStr](http://www.delphibasics.co.uk/RTL.asp?Name=AnsiCompareStr)
[AnsiCompareText](http://www.delphibasics.co.uk/RTL.asp?Name=AnsiCompareText)
[AnsiLowerCase](http://www.delphibasics.co.uk/RTL.asp?Name=AnsiLowerCase)
[AnsiUpperCase](http://www.delphibasics.co.uk/RTL.asp?Name=AnsiUpperCase)
[Append](http://www.delphibasics.co.uk/RTL.asp?Name=Append)
[ArcTan](http://www.delphibasics.co.uk/RTL.asp?Name=ArcTan)
[Assigned](http://www.delphibasics.co.uk/RTL.asp?Name=Assigned)
[AssignFile](http://www.delphibasics.co.uk/RTL.asp?Name=AssignFile)
[Beep](http://www.delphibasics.co.uk/RTL.asp?Name=Beep)
[Chdir](http://www.delphibasics.co.uk/RTL.asp?Name=Chdir)
[Chr](http://www.delphibasics.co.uk/RTL.asp?Name=Chr)
[CloseFile](http://www.delphibasics.co.uk/RTL.asp?Name=CloseFile)
[CompareStr](http://www.delphibasics.co.uk/RTL.asp?Name=CompareStr)
[CompareText](http://www.delphibasics.co.uk/RTL.asp?Name=CompareText)
[Copy](http://www.delphibasics.co.uk/RTL.asp?Name=Copy)
[Cos](http://www.delphibasics.co.uk/RTL.asp?Name=Cos)
[CreateOleObject](http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/OleAuto_CreateOleObject.html)
[Date](http://www.delphibasics.co.uk/RTL.asp?Name=Date)
[DateTimeToStr](http://www.delphibasics.co.uk/RTL.asp?Name=DateTimeToStr)
[DateToStr](http://www.delphibasics.co.uk/RTL.asp?Name=DateToStr)
[DayOfWeek](http://www.delphibasics.co.uk/RTL.asp?Name=DayOfWeek)
[Dec](http://www.delphibasics.co.uk/RTL.asp?Name=Dec)
[DecodeDate](http://www.delphibasics.co.uk/RTL.asp?Name=DecodeDate)
[DecodeTime](http://www.delphibasics.co.uk/RTL.asp?Name=DecodeTime)
[Delete](http://www.delphibasics.co.uk/RTL.asp?Name=Delete)
[EncodeDate](http://www.delphibasics.co.uk/RTL.asp?Name=EncodeDate)
[EncodeTime](http://www.delphibasics.co.uk/RTL.asp?Name=EncodeTime)
[EOF](http://www.delphibasics.co.uk/RTL.asp?Name=EOF)
[Exp](http://www.delphibasics.co.uk/RTL.asp?Name=Exp)
[FilePos](http://www.delphibasics.co.uk/RTL.asp?Name=FilePos)
[FileSize](http://www.delphibasics.co.uk/RTL.asp?Name=FileSize)
[FloatToStr](http://www.delphibasics.co.uk/RTL.asp?Name=FloatToStr)
[Format](http://www.delphibasics.co.uk/RTL.asp?Name=Format)
[FormatDateTime](http://www.delphibasics.co.uk/RTL.asp?Name=FormatDateTime)
[FormatFloat](http://www.delphibasics.co.uk/RTL.asp?Name=FormatFloat)
[Frac](http://www.delphibasics.co.uk/RTL.asp?Name=Frac)
[GetActiveOleObject](http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/ComObj_GetActiveOleObject.html)
[High](http://www.delphibasics.co.uk/RTL.asp?Name=High)
[Inc](http://www.delphibasics.co.uk/RTL.asp?Name=Inc)
[IncMonth](http://www.delphibasics.co.uk/RTL.asp?Name=IncMonth)
[InputQuery](http://www.delphibasics.co.uk/RTL.asp?Name=InputQuery)
[Insert](http://www.delphibasics.co.uk/RTL.asp?Name=Insert)
[Int](http://www.delphibasics.co.uk/RTL.asp?Name=Int)
[IntToHex](http://www.delphibasics.co.uk/RTL.asp?Name=IntToHex)
[IntToStr](http://www.delphibasics.co.uk/RTL.asp?Name=IntToStr)
[IsLeapYear](http://www.delphibasics.co.uk/RTL.asp?Name=IsLeapYear)
[IsValidIdent](http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/SysUtils_IsValidIdent.html)
[Length](http://www.delphibasics.co.uk/RTL.asp?Name=Length)
[Ln](http://www.delphibasics.co.uk/RTL.asp?Name=Ln)
[Low](http://www.delphibasics.co.uk/RTL.asp?Name=Low)
[LowerCase](http://www.delphibasics.co.uk/RTL.asp?Name=LowerCase)
[Now](http://www.delphibasics.co.uk/RTL.asp?Name=Now)
[Odd](http://www.delphibasics.co.uk/RTL.asp?Name=Odd)
[Ord](http://www.delphibasics.co.uk/RTL.asp?Name=Ord)
[Pos](http://www.delphibasics.co.uk/RTL.asp?Name=Pos) (see also [PosEx](ScriptFunctions.md#function_posex_asubstr__astring__aoffset__))
[Raise](http://www.delphibasics.co.uk/RTL.asp?Name=Raise)
[Random](http://www.delphibasics.co.uk/RTL.asp?Name=Random)
[ReadLn](http://www.delphibasics.co.uk/RTL.asp?Name=ReadLn) (see also [ReadStringFromFile](ScriptFunctions.md#function_readstringfromfile_afilename__))
[Reset](http://www.delphibasics.co.uk/RTL.asp?Name=Reset)
[Rewrite](http://www.delphibasics.co.uk/RTL.asp?Name=Rewrite)
[Round](http://www.delphibasics.co.uk/RTL.asp?Name=Round)
[ShowMessage](http://www.delphibasics.co.uk/RTL.asp?Name=ShowMessage) (use [SBSystem.ShowMessage](SBSystem.md) instead)
[Sin](http://www.delphibasics.co.uk/RTL.asp?Name=Sin)
[Sqr](http://www.delphibasics.co.uk/RTL.asp?Name=Sqr)
[Sqrt](http://www.delphibasics.co.uk/RTL.asp?Name=Sqrt)
[StrToDate](http://www.delphibasics.co.uk/RTL.asp?Name=StrToDate)
[StrToDateTime](http://www.delphibasics.co.uk/RTL.asp?Name=StrToDateTime)
[StrToFloat](http://www.delphibasics.co.uk/RTL.asp?Name=StrToFloat)
[StrToInt](http://www.delphibasics.co.uk/RTL.asp?Name=StrToInt)
[StrToIntDef](http://www.delphibasics.co.uk/RTL.asp?Name=StrToIntDef)
[StrToTime](http://www.delphibasics.co.uk/RTL.asp?Name=StrToTime)
[Time](http://www.delphibasics.co.uk/RTL.asp?Name=Time)
[TimeToStr](http://www.delphibasics.co.uk/RTL.asp?Name=TimeToStr)
[Trim](http://www.delphibasics.co.uk/RTL.asp?Name=Trim)
[TrimLeft](http://www.delphibasics.co.uk/RTL.asp?Name=TrimLeft)
[TrimRight](http://www.delphibasics.co.uk/RTL.asp?Name=TrimRight)
[Trunc](http://www.delphibasics.co.uk/RTL.asp?Name=Trunc)
[UpperCase](http://www.delphibasics.co.uk/RTL.asp?Name=UpperCase)
[VarArrayCreate](http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Variants_VarArrayCreate.html)
[VarArrayHighBound](http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Variants_VarArrayHighBound.html)
[VarArrayLowBound](http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Variants_VarArrayLowBound.html)
[VarIsNull](http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Variants_VarIsNull.html)
[VarToStr](http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Variants_VarToStr.html)
[Write](http://www.delphibasics.co.uk/RTL.asp?Name=Write)
[WriteLn](http://www.delphibasics.co.uk/RTL.asp?Name=WriteLn) (see also [WriteStringToFile](ScriptFunctions.md#procedure_writestringtofile_afilename__atext__))
```
There are also some other special functions:
**procedure** Interpret(Ascript: **string**);
Executes the script source code specified by *Ascript* parameter
**function** Machine: TatVirtualMachine;
Returns the current virtual machine executing the script.
**function** Scripter: TatCustomScripter;
Returns the current script component.
**function** SetOf(**array**): integer;
Returns a set from the array passed. For example: MyFontStyle := SetOf([fsBold, fsItalic]);
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Base
These are functions that should be defined in all scripts regardless of their type. All scripts must implement the Description function, but the others are optional. The functions are called by SyncBackPro at the appropriate time.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**function Description(var ScriptType);**
**ScriptType:** Set this to the type of script
**Return value:** A short description of the script (this is shown to the user)
This function is mandatory. All scripts must declare this function.
Called to get a description of the script and what type of script it is. The description is not stored and so can be dynamic, however this should not be relied upon in future. The description is stripped of newline and carriage return characters.
The script type is an integer that defines when the script should be used by SyncBack. It is a bitmask (i.e. the values can be or'ed together) of the following types:
SCRIPTTYPE_NONE = Not a valid script
SCRIPTTYPE_CONFIG = A script that can be used when configuring profiles (a 'configuration' script)
SCRIPTTYPE_RUN = A script that can be used by profiles at run-time (a 'run-time' script)
SCRIPTTYPE_MAIN = A script that can be used by in the main user interface (a 'main' script)
SCRIPTTYPE_LOCATION = A script that can be used by profiles to store and retrieve files (a 'location' script)
A single script file can be used in more than one place. For example, if a script was both a location and a run-time script then its ScriptType value would be SCRIPTTYPE_LOCATION + SCRIPTTYPE_RUN. The script type is stored by SyncBack when the script is installed.
```
function Description(var ScriptType);
begin
Result:='A short description of what this script does';
ScriptType:=SCRIPTTYPE_CONFIG + SCRIPTTYPE_LOCATION;
end;
```
**function FilesToExport(Interactive, Counter);**
**Interactive:** Passed as True if the script can prompt the user
**Counter:** This is initially passed as 0 (zero) and incremented on each call
**Return value:** The complete filename of a file to be exported along with the script
Called when a script is being exported as part of a profile. This function is called repeatedly until an empty string is returned. For the first call the Counter value is zero, and is incremented on each call.
The script should return the filenames (one per call) of files that SyncBack should include into the exported profile (the .SPS file). The filenames must be complete filenames including the drive and path. Note that when the script is imported, the files (and the script) will all be put into their own unique folder and then the [Install function](ScriptBase.md#function_install_interactive__) will be called (the script can then move those files, if required, and do any other installation tasks, e.g. register COM objects).
Do not include the filename of the script itself as that is included automatically. This function does not need to be defined if the script has no accompanying files.
If Interactive is True then the script can prompt for user input, otherwise it must not ask for user input (e.g. dialogs boxes should not be displayed).
```
function FilesToExport(Interactive, Counter);
begin
if (Counter = 0) then
Result:='C:\abc\def\ghi.txt'
else if (Counter = 1) then
Result:='D:\another\folder\file.exe'
else
Result:='';
end;
end;
```
**function Install(Interactive);**
**Interactive:** Passed as True if the script can prompt the user
**Return value:** An error message on failure
Called when the script is installed into SyncBack. On failure it should return an error message, in which case the script will not be installed.
This function is called when a script is installed, either by the user via the Script window, or via the import of a profile that uses scripts. It can be used, for example, to move files used by the script to their correct places or to register COM objects. Note that if a script is already installed then Install is not called.
You should not prompt the user, or expect user input, if Interactive is passed as FALSE.
```
function Install(Interactive);
begin
if Interactive then
SBSystem.Say('Installed');
end;
```
**procedure Uninstall();**
This function is called when the script is uninstalled from SyncBack. It should assume no user is present, i.e. it should not prompt the user for input.
```
procedure Uninstall;
begin
SBSystem.Say('Uninstalled');
end;
```
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Main Interface Scripts
These are functions that are defined in your **Main Interface** script and are called by SyncBackPro. A main interface script can enhance or change the main user interface. For example, you can add columns to show extra information about profiles, or perform some action when a key is pressed. The functions are called by SyncBackPro at the appropriate time. Main Interface scripts have access to the [SBSystem](SBSystem.md), [SBVariables](SBVariables.md), and [SBHistory](SBHistory.md) objects.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**function MainColumnHint(Col, IsGroup, ProfileName);**
**Col:** The column number
**IsGroup:** True if the profile is a group
**ProfileName:** The name of the profile
**Return value:** The hint string to display
This subroutine is called from the main window when a custom column hint is required. The first custom column is column zero (0). The script is only called for its custom columns and not for columns created by other scripts.
**function MainColumnsCount;**
**Return value:** The number of custom columns, or zero if none are required
This function is called from the main window to ask the script how many custom columns it wants created in the main window. Note that this value is cached so the function is only called once (when the main window appears, i.e. when the program is run).
**function MainColumnSort(Col, IsGroup1, IsGroup2, ProfileName1, ProfileName2);**
**Col:** The column the display is being sorted on
**IsGroup1:** True if ProfileName1 is a group
**IsGroup2:** True if ProfileName2 is a group
**ProfileName1:** The name of a profile
**ProfileName2:** The name of a profile
**Return value:** An integer (<0 if profile 1 should go before profile 2, 0=same profile, > 0 if profile 1 should go after profile 2)
This function is called from the main window when a custom column is being sorted. The first custom column is column zero. The script is only called for its custom columns and not for columns created by other scripts.
Important: As little processing or disk reading as possible should be done in this subroutine. Whenever possible use in-memory caching. See the History.vbs script as an example.
**function MainColumnText(Col, IsGroup, ProfileName);**
**Col:** The column number
**IsGroup:** True if ProfileName refers to a group profile
**ProfileName:** The name of the profile
**Return value:** The text to display in the column
This function is called from the main window when text for a custom column is required. The first custom column is column zero (0). The script is only called for its custom columns and not for columns created by other scripts.
Important: As little processing or disk reading as possible should be done in this subroutine. Whenever possible use in-memory caching. See the History.vbs script as an example.
**function MainColumnTitle(Col; var Width);**
**Col:** The column number
**Width:** Set it to the width the column should be (in pixels)
**Return value:** The columns title
This function is called from the main window when the title for a custom column is required. The first custom column is column zero (0). The script is only called for its custom columns and not for columns created by other scripts.
**function NewVersionCheck(var ErrMsg);**
**ErrMsg:** If a check cannot be made then set an error message, else set to an empty string
**Return value:** If a new version is available then return the URL to open the web browser with, else return empty string
This function is deprecated. SyncBack V9 introduced [NewVersionCheckEx](MainInterfaceScripts.md#function_newversioncheckex_var_errmsg__) which is the replacement.
This function is called when SyncBack checks to see if a new version of SyncBack is available. This is only done while SyncBack is being used interactively, i.e. from the Update Check button in Preferences, from the Update Check item on the Help menu, or from the automatic periodic check. It is never called during a scheduled or otherwise unattended run.
The function should not prompt the user, and should return as quickly as it can, because it is called on the main thread and so anything it does blocks the user interface until it returns. Only the check made afterwards against the 2BrightSparks web server is done in the background.
- If any script returns an error message then the update check is aborted.
- If any script returns a URL then the update check is aborted and the user is told a new version is available.
- If a script returns the URL string '*' then the update check is aborted and the user is told there is no new version.
- If all the scripts return an empty string URL, and no error messages, then SyncBack will check the 2BrightSparks web site to see if there is a new version available.
**function NewVersionCheckEx(var ErrMsg);**
**ErrMsg:** If a check cannot be made then set an error message, else set to an empty string
**Return value:** If a new version is available then return the URL to open the web browser with, else return empty string
This function is called when SyncBack checks to see if a new version of SyncBack is available. This is only done while SyncBack is being used interactively, i.e. from the Update Check button in Preferences, from the Update Check item on the Help menu, or from the automatic periodic check. It is never called during a scheduled or otherwise unattended run.
The function should not prompt the user, and should return as quickly as it can, because it is called on the main thread and so anything it does blocks the user interface until it returns. Only the check made afterwards against the 2BrightSparks web server is done in the background.
- If any script returns an error message then the update check is aborted.
- If any script returns a URL then the update check is aborted and the user is told a new version is available.
- If a script returns the URL string '*' then the update check is aborted and the user is told there is no new version.
- If all the scripts return an empty string URL, and no error messages, then SyncBack will check the 2BrightSparks web site to see if there is a new version available.
**function PollingRefresh;**
**Return value:** True if the script wants [RefreshDisplayEx](MainInterfaceScripts.md#procedure_refreshdisplayex_reloading__refreshing__) or [RefreshDisplay](MainInterfaceScripts.md#procedure_refreshdisplay_) called even if there is no reload or refresh of profile data
This function is called from the main window to ask the script if it wants to have [RefreshDisplayEx](MainInterfaceScripts.md#procedure_refreshdisplayex_reloading__refreshing__) or [RefreshDisplay](MainInterfaceScripts.md#procedure_refreshdisplay_) called even when no profiles have been reloaded or refreshed.
It is called just before [MainColumnsCount](MainInterfaceScripts.md#function_maincolumnscount_) and is only called once on program startup. If the function is not defined then it is assumed the script does not want to be called.
**procedure MainColumnClicked(Col, IsGroup, ProfileName);**
**Col:** The column number
**IsFile:** True if it is a group profile
**ProfileName:** The name of the profile
This subroutine is called from the main window when a custom column is clicked. The first custom column is column zero (0). The script is only called for its custom columns and not for columns created by other scripts.
**procedure MainEnded(EndSession);**
**EndSession:** Passed as TRUE on Windows shutdown, restart or logout
This subroutine is called when SyncBack stops. The script should not prompt the user or expect any user interaction. It should also not try to stop the program from exiting.
In previous versions this subroutine was not called on Windows shutdown, restart or logout if profiles were set to run in those situations. In V7 and newer it is called and also EndSession will be passed as TRUE (it is FALSE if the program is closing because the user manually closed it, for example). When EndSession is TRUE you must not delay as Windows may terminate the process if it is taking too long.
**procedure MainFocusChanged(IsGroup, ProfileName);**
**IsGroup:** True if ProfileName refers to a group
**ProfileName:** The name of the profile
This subroutine is called from the main window when the focused node changes.
**procedure MainKeyPress(Key, Shift, IsGroup, ProfileName);**
**Key:** The key that as pressed
**Shift:** The shift state
**IsGroup:** True if ProfileName refers to a group profile
**ProfileName:** The name of the profile
This subroutine is called from the main window when a key is pressed. It is called for each selected row. It is not called if the Delete key is pressed (as that is handled by SyncBack itself).
The Key value refers to the virtual key codes.
The Shift state can be a selection values (see [RunDiffKeyPress](RuntimeScripts.md#procedure_rundiffkeypress_key__shift__isfile__filename__) for details)
**procedure MainStarted(Unattended);**
**Unattended:** If True then do not prompt the user or expect any user interaction
This subroutine is called when SyncBack starts.
**procedure RefreshDisplay;**
This subroutine is called when SyncBack refreshes or updates the main display. It is deprecated and instead [RefreshDisplayEx](MainInterfaceScripts.md#procedure_refreshdisplayex_reloading__refreshing__) is recommended.
Important: As little processing or disk reading as possible should be done in this subroutine. Whenever possible use in-memory caching. See the History.vbs script as an example.
**procedure RefreshDisplayEx(Reloading, Refreshing);**
**Reloading:** Passed as TRUE if the list was reloaded
**Refreshing:** The names of the profiles that were refreshed. If using newer scripting then this is a TStringList. If using legacy Windows Scripting then this is a Scripting.Dictionary object.
This subroutine is called when SyncBack refreshes or updates the main display.
Reloading is TRUE if the list of profiles has been reloaded. This usually happens when a profile has been deleted, created, or renamed. If a profile has been renamed then the old profile name is passed in Refreshing. On program start, and when the users refreshes the list by pressing V5, for example, Reloading is passed as TRUE and Refreshing contains just one empty string (meaning all profiles are being refreshed).
Refreshing lists the names of all the profiles that were refreshed (in the key, the item is always empty). This usually happens when a profile has been modified. If Refreshing contains just one key, and the key is an empty string, then all the profiles have been refreshed.
For the legacy Windows Scripting, Refreshing is a Scripting.Dictionary object. For newer scripting it's a TStringList object. So you can get the total number of profiles via TStringList(Refreshing).Count and get the profile names via TStringList(Refreshing).Strings[0] (the list is zero-based).
If Reloading is FALSE and Refreshed is empty then this is just a polling call. For example, if nothing is happening (which includes profiles running), then it may be a polling call. Note that when a profile starts and stops then RefreshDisplayEx (or RefreshDisplay) is called with the name in Refreshing.
How frequently a polling call is made depends on the refresh rate set by SyncBackPro. In most cases you won't need to do anything and so your script will not be called. However, if you do want the script to be called in these cases then see [PollingRefresh](MainInterfaceScripts.md#function_pollingrefresh_).
Important: As little processing or disk reading as possible should be done in this subroutine. Whenever possible use in-memory caching. See the History.vbs script as an example.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Profile Configuration Scripts
These are functions that are defined in your **Profile Configuration** script and are called by SyncBackPro. The functions are called by SyncBackPro at the appropriate time. Profile Configuration scripts have access to the [SBProfile](SBProfile.md), [SBSystem](SBSystem.md), [SBVariables](SBVariables.md), and [SBHistory](SBHistory.md) objects.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**function ConfigCanClose;**
**Return value:** FALSE if the setup page should not be allowed to close
This function is called by SyncBack to ask the script if the setup page can be closed. The script may not want the setup page to close if, for example, some settings are incorrect (however, in this case it is advised that the script simply not save invalid settings).
**function ConfigCanRevert;**
**Return value:** TRUE if the script supports reverting to factory defaults
This function is called by SyncBack to ask the script if it can revert its settings to the factory defaults. Note that it should not revert to the factory settings in this call (for that see [ConfigFactoryDefaults](ProfileConfigurationScripts.md#procedure_configfactorydefaults_)).
**function ConfigLoadSettings;**
**Return value:** Return an error message on failure
This function is called to tell the script to load its settings and update the display to show those settings. For example:
```
// Create setup window display
procedure ConfigSetupDisplay;
begin
SBProfile.AddEdit('The name of the process you want to have finished running', 128, FALSE, FALSE, 1);
SBProfile.AddEdit('The number of seconds to wait before re-checking if it is still running', 10, TRUE, FALSE, 2);
end;
// Load settings. Return error message on failure.
function ConfigLoadSettings;
begin
Result:='';
SBProfile.SetEdit(SBVariables.GetProperty('WFProcessName', 'Notepad.exe', FALSE), 1);
SBProfile.SetEdit(SBVariables.GetProperty('WFRetrySecs', 5, FALSE), 2);
end;
```
**function ConfigNodeCaption;**
**Return value:** The caption to use in the profile setup window
This function is called to get the caption to use in the profile setup window.
**function ConfigSaveSettings(Silent);**
**Silent:** Is TRUE if the script should not display any prompts or interact with the user
**Return value:** Return an error message on failure
This function is called when the script should save its settings. It should also check to make sure the settings are valid. For example:
```
// Save settings. Return error message on failure.
function ConfigSaveSettings(Silent);
begin
Result:='';
if (SBProfile.GetEdit(1) = '') then begin
ConfigSaveSettings:='The process name cannot be empty!';
Exit;
end;
if (SBProfile.GetEdit(2) < 1) then begin
ConfigSaveSettings:='The retry secionds cannot be less than 1!';
Exit;
end;
SBVariables.SetProperty('WFProcessName', SBProfile.GetEdit(1));
SBVariables.SetProperty('WFRetrySecs', SBProfile.GetEdit(2));
end;
```
**function ConfigWantSetupNode(IsGroup);**
**IsGroup:** Pass TRUE if the profile is a group profile
**Return value:** True if a node in the setup window for the profile is required
Should a node in the profile setup window be created for this script to use? Note that the result should be consistent, e.g. it should not be based on what the current time is. This is because this function is called several times once the profile setup window is displayed for a profile, and each time it is called the result should be the same.
**procedure ConfigButtonPressed(Tag);**
This subroutine is called when a button on the profile settings page has been pressed.
NOTE: Not available when using old Windows scripting.
**procedure ConfigFactoryDefaults;**
This subroutine is called when the user has reverted to factory defaults. In this case the script should delete all the profile settings it manages. By doing this the default values will be used when the settings are read.
For example:
```
// Reset to factory defaults
procedure ConfigFactoryDefaults;
begin
SBVariables.DeleteProperty('WFProcessName');
SBVariables.DeleteProperty('WFRetrySecs');
end;
```
**procedure ConfigSetupDisplay;**
This subroutine is called when the script should tell SyncBack what items the setup page should have on it. For example:
```
// Create setup window display
procedure ConfigSetupDisplay;
begin
SBProfile.AddEdit('The name of the process you want to have finished running', 128, FALSE, FALSE, 1);
SBProfile.AddEdit('The number of seconds to wait before re-checking if it is still running', 10, TRUE, FALSE, 2);
end;
```
**procedure ConfigUpdateConditionals;**
This subroutine is called when an item on the profile settings page has been changed. The script can then verify the new values, enable or disable other items based on the new values, etc.
**procedure InitialiseVars(Checking);**
**Checking:** Passed as True if the variables are being checked to see if they exist
This subroutine is called when the variables are initialised when a profile is being created or modified. Checking is passed as TRUE.
Note that if your script is also a run-time script then this sub-routine is [shared](RuntimeScripts.md#procedure_initialisevars_checking__). A configuration script does not have access to the SBRunning object.
In the example below the variable MyScriptVar is set to a dummy value if it's a call to check if the variable is valid.
```
//
// Called very early when a profile is run (Checking is False)
// Also called in profile config when asking what variables the script sets (Checking is True)
//
procedure InitialiseVars(Checking);
begin
if Checking then begin
// Profile is being saved
SBVariables.SetVar('MyScriptVar', '?');
end else begin
// Profile is being run
// Do nothing
end;
end;
```
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Location Scripts
These are functions that are defined in your **Location** script and are called by SyncBackPro. A location script is one that controls how files and folders are stored. For example, you could create a location script to backup to a 7zip archive file, or to a database, for example. The functions are called by SyncBackPro at the appropriate time. For a profile to use a location script you must [configure the profile](SetupScripts.md) to use it. Location scripts have access to the [SBLocation](SBLocation.md) and [SBSystem](SBSystem.md) objects.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**function LocAbilities;**
**Return value:** The [abilities](ScriptConstants.md#abilities) of the script
This function is called so SyncBack knows what [abilities](ScriptConstants.md#abilities) (functions) the location script supports. Note that the value is cached, so the first value returned is used through-out the entire profile run.
The script can optionally support a number of features (the values can be OR'ed together, e.g. [CAN_COPYDIRATTRS](ScriptConstants.md#abilities) + [CAN_NTFSATTRIBUTES](ScriptConstants.md#abilities):
For example:
```
function LocAbilities;
begin
// Cannot use CAN_EXACTDATETIME because some drives may be FAT32
// Cannot use CAN_NTFSATTRIBUTES because some drives may be FAT32
Result:= CAN_COPYDIRATTRS + CAN_USEATTRIBUTES + CAN_CHANGEDATETIME +
CAN_HAVEEMPTYPATH + CAN_VERSION + CAN_MOVE_FILES + CAN_USECRC32 +
CAN_MOVE_FOLDERS;
end;
```
**function LocConnect(MainThread);**
**MainThread:** Passed as True if it is being called from a user interface
**Return value:** An error message if the script cannot be connect, otherwise an empty string
This function is called to tell the script to connect to the storage location.
There are two different ways in which this function is called: from the profile thread, or from the main thread (which is the user interface, e.g. the Differences window or the File Prompt window). When a profile is run then an instance of the script is created, and that instance is used while the profile is running. However, when there is user interaction (e.g. from the Differences window) then a new script instance is created. This means the state is different between the scripts, i.e. they have different global variables.
Return an error message if the script cannot connect to the storage location, e.g. the network is down.
**function LocConnected;**
**Return value:** An error message if the script is not connected, otherwise an empty string
This function is called to tell ask the script if it is connected to its storage location. If it is connected (or doesn't need to connect to anything) then return an empty string, otherwise return an error message.
See also [LocReconnect](LocationScripts.md#function_locreconnect_) and [LocConnect](LocationScripts.md#function_locconnect_mainthread__)
**function LocCRC32(Filename; var CRC32);**
**Filename:** The complete path of the file to get the hash value of
**CRC32:** Set this to the CRC32 hash value of the file, in string format
**Return value:** An error message if the CRC32 cannot be retrieved, otherwise an empty string
This function is called when the CRC32 hash value of a file is required, e.g. for verification. The entire filename is passed, including the base path. If the CRC32 hash value cannot be retrieved then an error message should be returned.
Note that the CRC32 hash value should be returned in string format, e.g. E75A6A52
For example:
```
function LocCRC32(FullPath; var CRC32);
begin
CRC32:=SBSystem.CRC32(FullPath);
Result:='';
end;
```
**function LocDeleteFile(Filename; var DoesNotExist);**
**Filename:** The complete path of the file to delete
**DoesNotExist:** Set to True if the file does not exist, otherwise set to False
**Return value:** An error message if the file exists and cannot be deleted, otherwise an empty string
This function is called when the script must delete a file. The entire filename is passed, including the base path. If the file cannot be deleted then an error message should be returned. If the file does not exist then set DoesNotExist to True, but do not return an error message.
For example:
```
function LocDeleteFile(FullPath; var DoesNotExist);
begin
Result:='';
DoesNotExist:=not gFSO.FileExists(FullPath);
If Not DoesNotExist Then
gFSO.DeleteFile(FullPath, True);
end;
```
**function LocDirExists(FullPath);**
**FullPath:** The complete directory path including the base path
**Return value:** An empty string if the directory exists, otherwise an error message
This function is called when the script must check if a directory (folder) exists. The entire directory path will be passed, including the base path. If the directory exists then an empty string should be returned, otherwise return an error message.
For example:
```
function LocDirExists(FullPath);
begin
if (FullPath = '') Then
Result:=''
else if FSO.FolderExists(FullPath) Then
Result:=''
else
Result:='Folder does not exist';
end;
```
See also [LocFileExists](LocationScripts.md#function_locfileexists_fullfilename__)
**function LocDisconnect;**
**Return value:** An error message if the disconnect failed
This function is called when the location should disconnect from its storage, e.g. when the profile has finished or the user has aborted. If the script does not need to disconnect, or it disconnects without any problem, then it should return an empty string.
See also [LocConnect](LocationScripts.md#function_locconnect_mainthread__)
**function LocFileExists(FullFilename);**
**FullFilename:** The complete filename including the base path
**Return value:** An empty string if the file exists, otherwise an error message
This function is called when the script must check if a file exists. The entire filename will be passed, including the base path. If the file exists then an empty string should be returned, otherwise return an error message.
For example:
```
function LocFileExists(FullPath);
begin
if (FullPath = '') then
Result:='File does not exist'
else if FSO.FileExists(FullPath) then
Result:=''
else
Result:='File does not exist';
end;
```
See also [DirExists](LocationScripts.md#function_locdirexists_fullpath__)
**function LocFreeSpace;**
**Return value:** The free space in bytes, else -1
This function is called when the location should return how much free space (in bytes) the storage location has. If it's not relevant or practical then return -1. If using VBScript, take note of the 32-bit integer limit, so return the value as a string when using VBScript, e.g.
```
LocFreeSpace = CStr(CCur(3221225472))
```
**function LocGet(fromFName, toFName);**
**fromFName:** The complete filename of the file to retrieve from the scripts storage location
**toFName:** Where script should store the file on the local filesystem
**Return value:** If the file cannot be retrieved and stored then return an error message
This function is called when SyncBack needs the location to retrieve one if its files and store it on the filesystem.
For example:
```
Function LocGet(fromFName, toFName);
var
FileObj, Attrs, r;
begin
If Not gFSO.FileExists(FromName) Then
Result:='File does not exist'
Else begin
// Read-only?
If gFSO.FileExists(toFName) Then begin
FileObj:=gFSO.GetFile(toFName);
Attrs:=FileObj.Attributes;
If (Attrs And 1 <> 0) Then
FileObj.Attributes:=Attrs - 1;
FileObj:=Unassigned;
end;
// gFSO.CopyFile(FromName, toFName, True);
r:=CopyFile(FromName, toFName);
if (r = 0) then
Result:=''
else
Result:=SysErrorMessage(r);
end;
end;
```
**function LocGetAttributes(Filename; var Attributes);**
**Filename:** The complete path of the file or directory
**Attributes:** The filesystem attributes of the file or directory
**Return value:** An error message if the attributes cannot be retrieved, otherwise an empty string
This function is called when the filesystem attributes for a file or directory need to be retrieved. The entire path of the file or directory to get the attributes of is passed. Note that if it's a directory then it will have a trailing backslash. If the attributes cannot be retrieved then an error message should be returned.
For example:
```
function LocGetAttributes(Filename; var Attrs);
var
FolderObj, FileObj;
begin
Filename:=ExtractFilename(Filename);
If (Filename = '') Then begin
// Its a special folder
Result:='';
Attrs:=1 + 2 + 4 + 16;
Exit;
end;
If SBSystem.IsFolder(Filename) Then begin
//
// A folder
//
If not gFSO.FolderExists(Filename) Then begin
Result:='Folder does not exist';
Exit;
end;
FolderObj:=gFSO.GetFolder(Filename);
Attrs:=FolderObj.Attributes;
Result:='';
end Else begin
//
// A file
//
If not gFSO.FileExists(Filename) Then begin
Result:='File does not exist';
Exit;
end;
FileObj:=gFSO.GetFile(Filename);
Attrs:=FileObj.Attributes;
Result:=''
end;
end;
```
**function LocMakeDir(FullPath);**
**FullPath:** The complete path of the directory to create
**Return value:** An error message if the directory cannot be created, otherwise an empty string
This function is called when the location should create a directory. The entire path of the directory to create is passed. If the directory cannot be created then an error message should be returned.
Note that an empty string should be returned if the directory already exists. Do not return an error message.
For example:
```
function LocMakeDir(FullPath);
begin
Result:='';
FullPath:=ExtractFilename(FullPath);
If (FullPath = '') Then
Exit
Else If Not gFSO.FolderExists(FullPath) Then
gFSO.CreateFolder(FullPath);
end;
```
**function LocMD5(Filename; var MD5);**
**Filename:** The complete path of the file to get the hash value of
**MD5:** Set this to the MD5 hash value of the file, in string format
**Return value:** An error message if the MD5 cannot be retrieved, otherwise an empty string
This function is called when the MD5 hash value of a file is required, e.g. for file integrity verification. The entire filename is passed, including the base path. If the MD5 hash value cannot be retrieved then an error message should be returned.
Note that the MD5 hash value should be returned in string format, e.g. E75A6A52
For example:
```
function LocMD5(FullPath; var MD5);
begin
MD5:=SBSystem.MD5(FullPath);
Result:='';
end;
```
**function LocPut(fromFName, toFName, fromAttrs, fromDateTime, fromFileSize, DoSafeCopy; var SafeFName);**
**fromFName:** The complete filename of the file to retrieve from the local filesystem
**toFName:** Where script should store the file in its storage location
**fromAttrs:** The filesystem attributes of the file (ignore if < 0)
**fromDateTime:** The last modification date & time of the file (local timezone) (ignore if <=1.0)
**fromFileSize:** The size of the file (in bytes). In VBScript this is a string to avoid the 32-bit integer limit (ignore if < 0)
**DoSafeCopy:** Passed as True if the file should be copied to a temporary file first and not to toFName
**SafeFName:** Set this to the filename used to store the file if DoSafeCopy was passed as True
**Return value:** If the file cannot be stored then return an error message
This function is called when SyncBack needs the location to store a file in its storage location. The file to store can be copied from the local filesystem.
It is recommended that you use the newer [LocPutEx](LocationScripts.md#function_locputex_fromfname__tofname__fromattrs__frommoddatetime__fromcreatedatetime__fromfilesize__fromntfssec__dosafecopy__var_safefname__) function instead of this function.
If DoSafeCopy is True then the file should be copied to a temporary file first and not to the filename specified in toFName. The full path of the safe filename used should be returned in SafeFName.
For example:
```
function LocPutEx(fromFName, toFName, fromAttrs, fromDateTime, fromCreateDateTime, fromFileSize, fromNTFSSec, DoSafeCopy; var SafeFName);
var
FileObj, Attrs, r;
begin
DebugOut('---LocPutEx:' + fromFName + '*' + toFName);
If Not gFSO.FileExists(fromFName) Then
Result:='File does not exist'
Else begin
// Safe copy?
If DoSafeCopy Then begin
// Note that we must return a SafeFName that we will understand when
// it is passed back to us (we will be asked to move the file)
toFName:=ExtractFilename(toFName) + '.$$$';
SafeFName:=toFName + '.$$$';
end Else begin
toFName:=ExtractFilename(toFName);
SafeFName:='';
end;
// Destination file read-only?
If gFSO.FileExists(toFName) Then begin
FileObj:=gFSO.GetFile(toFName);
Attrs:=FileObj.Attributes;
If (Attrs and 1 <> 0) Then
FileObj.Attributes:=Attrs - 1;
FileObj:=Unassigned;
end;
// SBSystem.UpdateFileStatus('Copying ' + fromFName + '...')
r:=CopyFile(fromFName, toFName);
if (r <> 0) then begin
Result:=SysErrorMessage(r);
Exit;
end;
If (fromAttrs >= 0) Then begin
FileObj:=gFSO.GetFile(toFName);
FileObj.Attributes:=fromAttrs;
FileObj:=Unassigned;
end;
If (fromDateTime > 1.0) Then
SBSystem.SetLastModDateTime(toFName, fromDateTime);
If (fromCreateDateTime > 1.0) Then
SBSystem.SetCreateDateTime(toFName, fromCreateDateTime);
Result:='';
end;
end;
```
**function LocPutEx(fromFName, toFName, fromAttrs, fromModDateTime, fromCreateDateTime, fromFileSize, fromNTFSSec, DoSafeCopy; var SafeFName);**
**fromFName:** The complete filename of the file to retrieve from the local filesystem
**toFName:** Where script should store the file in its storage location
**fromAttrs:** The filesystem attributes of the file (ignore if < 0)
**fromModDateTime:** The last modification date & time of the file (local timezone) (ignore if <=1.0)
**fromCreateDateTime:** The creation date & time of the file (local timezone) (ignore if <=1.0)
**fromFileSize:** The size of the file (in bytes). In VBScript this is a string to avoid the 32-bit integer limit (ignore if < 0)
**fromNTFSSec:** The NTFS security of the file (string format). (ignore if empty string)
**DoSafeCopy:** Passed as True if the file should be copied to a temporary file first and not to toFName
**SafeFName:** Set this to the filename used to store the file if DoSafeCopy was passed as True
**Return value:** If the file cannot be stored then return an error message
This function is called when SyncBack needs the location to store a file in its storage location. The file to store can be copied from the local filesystem.
If DoSafeCopy is True then the file should be copied to a temporary file first and not to the filename specified in toFName. The full path of the safe filename used should be returned in SafeFName.
For example:
```
function LocPutEx(fromFName, toFName, fromAttrs, fromDateTime, fromCreateDateTime, fromFileSize, fromNTFSSec, DoSafeCopy; var SafeFName);
var
FileObj, Attrs, r;
begin
If Not gFSO.FileExists(fromFName) Then
Result:='File does not exist'
Else begin
// Safe copy?
If DoSafeCopy Then begin
// Note that we must return a SafeFName that we will understand when
// it is passed back to us (we will be asked to move the file)
toFName:=ExtractFilename(toFName) + '.$$$';
SafeFName:=toFName + '.$$$';
end Else begin
toFName:=ExtractFilename(toFName);
SafeFName:='';
end;
// Destination file read-only?
If gFSO.FileExists(toFName) Then begin
FileObj:=gFSO.GetFile(toFName);
Attrs:=FileObj.Attributes;
If (Attrs and 1 <> 0) Then
FileObj.Attributes:=Attrs - 1;
FileObj:=Unassigned;
end;
// SBSystem.UpdateFileStatus('Copying ' + fromFName + '...')
r:=CopyFile(fromFName, toFName);
if (r <> 0) then begin
Result:=SysErrorMessage(r);
Exit;
end;
If (fromAttrs >= 0) Then begin
FileObj:=gFSO.GetFile(toFName);
FileObj.Attributes:=fromAttrs;
FileObj:=Unassigned;
end;
If (fromDateTime > 1.0) Then
SBSystem.SetLastModDateTime(toFName, fromDateTime);
If (fromCreateDateTime > 1.0) Then
SBSystem.SetCreateDateTime(toFName, fromCreateDateTime);
Result:='';
end;
end;
```
**function LocReconnect;**
**Return value:** An error message if the script cannot reconnect, otherwise an empty string
This function is called to tell the script to reconnect to the storage location. This is called when [LocConnected](LocationScripts.md#function_locconnected_) indicates it is not connected, for example. Return an error message if the reconnect failed, e.g. it cannot reconnect because the network is down.
**function LocRemoveDir(FullPath);**
**FullPath:** The complete path of the empty directory to delete
**Return value:** An error message if the directory cannot be deleted, otherwise an empty string
This function is called when the location should delete an empty directory. The entire path of the directory to delete is passed. If the directory cannot be deleted then an error message should be returned.
Note that an empty string should be returned if the directory does not exist. Do not return an error message.
IMPORTANT: Do not delete a directory unless it is empty, i.e. it contains no files and no sub-directories.
For example:
```
function LocRemoveDir(FullPath);
var
Folder;
begin
Result:='';
FullPath:=ExtractFilename(FullPath);
If FullPath = '' Then
Exit;
Else If gFSO.FolderExists(FullPath) Then begin
Folder:=gFSO.GetFolder(FullPath);
If (Folder.Files.Count > 0) Then begin
Result:='Directory contains files'
Exit;
end;
If (Folder.SubFolders.Count > 0) Then begin
Result:='Directory contains directories'
Exit;
end;
Folder.Delete(TRUE);
Folder:=Unassigned;
end;
end;
```
**function LocRenameDir(OldFullPath, NewFullPath);**
**OldFullPath:** The existing path
**NewFullPath:** The new path (rename it to this)
**Return value:** An error message if the directory cannot be renamed, otherwise an empty string
This function is called when the script must rename a directory. Entire paths are passed, including the base path. If the directory cannot be renamed then return an error message.
For example:
```
function LocRenameDir(FromPath, ToPath);
var
TempFldr;
begin
If (FromPath = '') Then begin
Result:='Root directory cannot be moved'
Exit;
end Else If (ToPath = '') Then begin
Result:='Cannot move to root directory'
Exit;
end;
If Not gFSO.FolderExists(FromPath) Then begin
Result:='Source directory does not exist'
Exit;
end;
If gFSO.FolderExists(ToPath) Then begin
If SBSystem.SameFilenames(FromPath, ToPath, TRUE) Then begin
Result:='To destination directory already exists'
Exit;
end;
end;
// Do not include trailing backslash
If SBSystem.IsFolder(FromPath) Then
FromPath:=SBSystem.ExcludeTrailingBackslash(FromPath);
If SBSystem.IsFolder(ToPath) Then
ToPath:=SBSystem.ExcludeTrailingBackslash(ToPath);
// Cannot rename just the case, e.g. \abc to \ABC
// Must instead do a two-step process
If SBSystem.SameFilenames(FromPath, ToPath, FALSE) Then begin
TempFldr:=ToPath + '.' + SBSystem.UniqueID;
gFSO.MoveFolder(FromPath, TempFldr);
gFSO.MoveFolder(TempFldr, ToPath);
end Else
gFSO.MoveFolder(FromPath, ToPath);
Result:='';
end;
```
**function LocRenameFile(OldFullFilename, NewFullFilename);**
**OldFullFilename:** The existing filename
**NewFullFilename:** The new filename (rename it to this)
**Return value:** An error message if the file cannot be renamed, otherwise an empty string
This function is called when the script must rename a file. Entire filenames are passed, including the base path. If the file cannot be renamed then return an error message.
For example:
```
function LocRenameFile(FromName, ToName);
var
FileObj, Attrs;
begin
If Not gFSO.FileExists(FromName) Then begin
Result:='Source file does not exist';
Exit;
end;
// Get file attributes. Rename will give archive attribute.
FileObj:=gFSO.GetFile(FromName);
Attrs:=FileObj.Attributes;
If gFSO.FileExists(ToName) Then begin
If SBSystem.SameFilenames(FromName, ToName, TRUE) Then begin
Result:='To destination file already exists';
Exit;
end;
end;
gFSO.MoveFile(FromName, ToName);
Result:='';
// Set attributes
FileObj:=gFSO.GetFile(ToName);
FileObj.Attributes:=Attrs;
end;
```
**function LocScanList(FullPath);**
**FullPath:** The complete directory path including the base path
**Return value:** An error message if the directory cannot be scanned, otherwise an empty string
This function is called when the script must tell SyncBack what files and sub-directories are in a directory. The entire path of the directory to scan is passed. For each file it must call [SBLocation.AddFile](SBLocation.md#function_addfile_name__crc32__filesize__attrs__moddatetime__), and for each folder it must call [SBLocation.AddDir](SBLocation.md#function_adddir_name__). If the directory cannot be scanned, e.g. access denied or it doesn't exist, then an error message should be returned.
For example:
```
function LocScanList(FullPath);
var
Folder, DiskDrive, DriveLetter, DrivePath,
SubFol, FileItem, DrivesEnum, FoldersEnum, FilesEnum;
begin
Result:='';
if (FullPath = '\') or (FullPath = '') then begin
//
// Return the list of drives
//
DrivesEnum:=TEnumVariant.Create(gFSO.Drives);
try
while DrivesEnum.ForEach(DiskDrive) do begin
If (DiskDrive.IsReady = TRUE) then
If not SBLocation.AddDir(DiskDrive.DriveLetter) then
Exit;
end;
finally
DrivesEnum.Free;
end;
end else begin
//
// Return the list of folders and files
//
DriveLetter:=Copy(FullPath, 2, 1);
if (DriveLetter = '') then
Exit;
DrivePath:=Copy(FullPath, 3, Length(FullPath) - 2);
If (DrivePath = '') then
DrivePath:= '\';
// Return a list of sub-folders
Folder:=gFSO.GetFolder(DriveLetter + ':' + DrivePath);
FoldersEnum:=TEnumVariant.Create(Folder.SubFolders);
try
while FoldersEnum.ForEach(SubFol) do begin
If not SBLocation.AddDirEx2(SubFol.Name, SubFol.Attributes, SubFol.DateLastModified, SubFol.DateCreated, '') then
Exit;
end;
finally
FoldersEnum.Free;
end;
// Return a list of files
FilesEnum:=TEnumVariant.Create(Folder.Files);
try
while FilesEnum.ForEach(FileItem) do begin
If not SBLocation.AddFileEx(FileItem.Name, '', VarToInt64(FileItem.Size), FileItem.Attributes, FileItem.DateLastModified, FileItem.DateCreated, '') then
Exit;
end;
finally
FilesEnum.Free;
end;
end;
end;
```
**function LocScanPrepare;**
**Return value:** An error message if the storage location cannot be prepared, otherwise an empty string
This function is called to tell the script to prepare the storage location for scanning. It is called after [LocConnect](LocationScripts.md#function_locconnect_mainthread__).
**function LocSetAttributes(Filename, Attributes);**
**Filename:** The complete path of the file or directory
**Attributes:** The filesystem attributes to set the file or directory to
**Return value:** An error message if the attributes cannot be set, otherwise an empty string
This function is called when the filesystem attributes for a file or directory need to be set. The entire path of the file or directory to change the attributes of is passed. Note that if it's a directory then it will have a trailing backslash. If the attributes cannot be changed then an error message should be returned.
For example:
```
function LocSetAttributes(Filename, Attrs);
var
FolderObj, FileObj;
begin
Filename:=ExtractFilename(Filename);
If (Filename = '') Then begin
// Its a special folder
Result:='Cannot set roots attributes';
Exit;
end;
If SBSystem.IsFolder(Filename) Then begin
//
// A folder
//
If not gFSO.FolderExists(Filename) Then begin
Result:='Folder does not exist';
Exit;
end;
FolderObj:=gFSO.GetFolder(Filename);
FolderObj.Attributes:=Attrs;
Result:='';
end Else begin
//
// A file
//
If not gFSO.FileExists(Filename) Then begin
Result:='File does not exist';
Exit;
end;
FileObj:=gFSO.GetFile(Filename);
FileObj.Attributes:=Attrs;
Result:=''
end;
end;
```
**function LocSetCreateDateTime(Filename, CreateDateTime);**
**Filename:** The complete path of the file or folder
**CreateDateTime:** The creation date & time (local timezone)
**Return value:** An error message if the date & time cannot be changed, otherwise an empty string
This function is called when the creation date & time of a file or folder must be changed. The entire path of the file to change the date & time of is passed. If the creation date & time cannot be changed then an error message should be returned.
For example:
```
function LocSetCreateDateTime(FullPath, CreateDateTime);
begin
Result:=SBSystem.SetCreateDateTime(FullPath, CreateDateTime);
end;
```
**function LocSetModDateTime(Filename, ModDateTime);**
**Filename:** The complete path of the file
**ModDateTime:** The last modication date & time (local timezone)
**Return value:** An error message if the date & time cannot be changed, otherwise an empty string
This function is called when the last modification date & time of a file must be changed. The entire path of the file to change the date & time of is passed. If the last modification date & time cannot be changed then an error message should be returned.
For example:
```
function LocSetModDateTime(FullPath, ModDateTime);
begin
Result:=SBSystem.SetLastModDateTime(FullPath, ModDateTime);
end;
```
**function LocSHA1(Filename; var SHA1);**
**Filename:** The complete path of the file to get the hash value of
**SHA1:** Set this to the SHA1 hash value of the file, in string format
**Return value:** An error message if the SHA1 cannot be retrieved, otherwise an empty string
This function is called when the SHA1 hash value of a file is required, e.g. for file integrity verification. The entire filename is passed, including the base path. If the SHA1 hash value cannot be retrieved then an error message should be returned.
Note that the SHA1 hash value should be returned in string format, e.g. E75A6A52
For example:
```
function LocSHA1(FullPath; var SHA1);
begin
SHA1:=SBSystem.SHA1(FullPath);
Result:='';
end;
```
**function LocSHA256(Filename; var SHA256);**
**Filename:** The complete path of the file to get the hash value of
**SHA256:** Set this to the SHA256 hash value of the file, in string format
**Return value:** An error message if the SHA256 cannot be retrieved, otherwise an empty string
This function is called when the SHA256 hash value of a file is required, e.g. for file integrity verification. The entire filename is passed, including the base path. If the SHA256 hash value cannot be retrieved then an error message should be returned.
Note that the SHA256 hash value should be returned in string format, e.g. E75A6A52
For example:
```
function LocSHA256(FullPath; var SHA256);
begin
SHA256:=SBSystem.SHA256(FullPath);
Result:='';
end;
```
**function LocSHA512(Filename; var SHA512);**
**Filename:** The complete path of the file to get the hash value of
**SHA512:** Set this to the SHA512 hash value of the file, in string format
**Return value:** An error message if the SHA512 cannot be retrieved, otherwise an empty string
This function is called when the SHA512 hash value of a file is required, e.g. for file integrity verification. The entire filename is passed, including the base path. If the SHA512 hash value cannot be retrieved then an error message should be returned.
Note that the SHA512 hash value should be returned in string format, e.g. E75A6A52
For example:
```
function LocSHA512(FullPath; var SHA512);
begin
SHA512:=SBSystem.SHA512(FullPath);
Result:='';
end;
```
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Runtime Scripts
These are functions that are defined in your **Runtime** script and are called by SyncBackPro. A runtime script can be used to change what happens when a profile is run. For example, you could stop a profile from being run if certain conditions aren't met, or perform actions when some files are copied, deleted, or renamed. The functions are called by SyncBackPro at the appropriate time. Runtime scripts are [used by profiles](SetupScripts.md) and have access to the [SBRunning](SBRunning.md), [SBSystem](SBSystem.md), [SBVariables](SBVariables.md), and [SBHistory](SBHistory.md) objects.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
The order in which these routines are called is listed below. However, it may not run exactly in this order depending on the profile settings, e.g. the Run After program may be called after the log file is created. Also, routines may not be called, e.g. it's not a Fast Backup, there is no Run Before program, etc.
***[Ransomware detection]***
RunDisabledCheck
InitialiseVars
RunBeforeConfig
RunDoFullBackup
***[Silently fail if no network connection or no internet connection]***
***[Check is source and/or destination can be reached]***
RunAfterConfig
RunRunBeforeBefore
***[Run Before program]***
RunRunBeforeAfter
***[Connects to FTP etc.]***
***[Prepares the profile log]***
RunLogOpening
RunLogLocationInfoToAdd
RunLogLocationInfoCaption
RunLogLocationInfoInfo
RunDeleteAll
RunBeforeScanning
***[Scans source and destination]***
RunBeforeFileCompare
RunFileCompareSame / RunFileCompareSameEx
RunFileCompareDiff
RunAfterFileCompare
RunBeforeFolderCompare
RunAfterFolderCompare
RunShowDiffWindow
***[Differences window shown]***
RunDiffColumnsCount
RunDiffColumnTitle
RunDiffOpened
RunDiffColumnText
RunDiffColumnHint
RunDiffColumnSort
RunDiffFocusChanged
RunDiffColumnClicked
RunDiffKeyPress
RunDiffClosed
RunPreCopyCheck
***[Processes each file...]***
RunBeforeCopyFile / BeforeCopyFileEx
RunAfterCopyFile
RunBeforeRenameFile
RunAfterRenameFile
RunBeforeDeleteFile
RunAfterDeleteFile
RunBeforeSetDateTimes
RunAfterSetDateTimes
RunBeforeSetAttrs
RunAfterSetAttrs
RunRunAfterBefore
***[Run After program]***
RunRunAfterAfter
***[Close log, display log]***
RunLogClosing
***[Network disconnect]***
RunProfileResult
***[Email log]***
RunBeforeEmailLog
RunEmailLogAttachToAdd
RunEmailLogAttachFilename
RunAfterEmailLog
**function RunBeforeCopyFile(ToLeft, Filename; var ToDirCreated; var FromFileLocked; var ToFileLocked; var DoneCopy);**
**ToLeft:** True if the left/source file is to be copied from the right/destination
**Filename:** The file to be copied (not including the base path)
**ToDirCreated:** Set to True if a directory was created
**FromFileLocked:** Set to True if the file to be copied is locked
**ToFileLocked:** Set to True if the file to be replaced is locked
**DoneCopy:** Set to True if the file was copied
**Return value:** An error message if the copy failed
This function is called before a file is to be copied, and before any version is made. On failure the function should return an error message (do not return an error message if the script is not copying files). If a directory was created in order to copy the file then ToDirCreated should be returned as True. If the from file is locked then FromFileLocked should be returned as True (and an error message should be returned). If the to file is locked then ToFileLocked should be returned as True (and an error message should be returned). If the file was copied then DoneCopy should be returned as True.
Note that once a script has copied a file then no other scripts will be called to copy the file. This means the order of run-time scripts used in a profile is important.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
IMPORTANT: If the profile is using a file integrity database, and you have a [RunBeforeCopyFileEx](RuntimeScripts.md#function_runbeforecopyfileex_toleft__filename__var_todircreated__var_fromfilelocked__var_tofilelocked__var_donecopy__var_integrityhash__var_integritytype__) function, then RunBeforeCopyFileEx will be called instead of RunBeforeCopyFile.
See also [RunAfterCopyFile](RuntimeScripts.md#procedure_runaftercopyfile_toleft__filename__failed__)
**function RunBeforeCopyFileEx(ToLeft, Filename; var ToDirCreated; var FromFileLocked; var ToFileLocked; var DoneCopy; var IntegrityHash; var IntegrityType);**
**ToLeft:** True if the left/source file is to be copied from the right/destination
**Filename:** The file to be copied (not including the base path)
**ToDirCreated:** Set to True if a directory was created
**FromFileLocked:** Set to True if the file to be copied is locked
**ToFileLocked:** Set to True if the file to be replaced is locked
**DoneCopy:** Set to True if the file was copied
**IntegrityHash:** Set this to a hash value for integrity checking
**IntegrityType:** Set this to the type of hash value ([TIntegrityType](ScriptConstants.md#tintegritytype))
**Return value:** An error message if the copy failed
This function is called before a file is to be copied, and before any version is made. On failure the function should return an error message (do not return an error message if the script is not copying files). If a directory was created in order to copy the file then ToDirCreated should be returned as True. If the from file is locked then FromFileLocked should be returned as True (and an error message should be returned). If the to file is locked then ToFileLocked should be returned as True (and an error message should be returned). If the file was copied then DoneCopy should be returned as True.
IntegrityHash and IntegrityType are for the file integrity database. If you cannot return a file hash then return an empty string and IntegrityType as EIT_None.
Note that once a script has copied a file then no other scripts will be called to copy the file. This means the order of run-time scripts used in a profile is important.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
IMPORTANT: RunBeforeCopyFileEx is only called if the profile is using a file integrity database, otherwise [RunBeforeCopyFile](RuntimeScripts.md#function_runbeforecopyfile_toleft__filename__var_todircreated__var_fromfilelocked__var_tofilelocked__var_donecopy__) is called instead.
See also [RunAfterCopyFile](RuntimeScripts.md#procedure_runaftercopyfile_toleft__filename__failed__)
**function RunBeforeDeleteFile(Left, Filename; var FileLocked; var DoneDelete);**
**Left:** True if the left/source file is to be deleted
**Filename:** The file to be deleted (not including the base path)
**FileLocked:** Set to True if the file to be deleted is locked
**DoneDelete:** Set to True if the file was deleted
**Return value:** An error message if the delete failed
This function is called before a file is to be deleted (and before a version has been made). On failure the function should return an error message (do not return an error message if the script is not deleting files). If the file is locked then FileLocked should be returned as True (and an error message should be returned). If the file was deleted then DoneDelete should be returned as True.
Note that once a script has deleted a file then no other scripts will be called to delete the file. This means the order of run-time scripts used in a profile is important. Obviously a file can only be deleted once.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunAfterDeleteFile](RuntimeScripts.md#procedure_runafterdeletefile_left__filename__failed__)
**function RunBeforeEmailLog(ProfileResult, Failed, Diffs, NoDiffs);**
**ProfileResult:** The [result](ScriptConstants.md#results) of the profile run
**Failed:** True if the profile run had failures
**Diffs:** True if the profile found differences between the left/source and destination/right and the profile is set to email if there are differences
**NoDiffs:** True if the profile found no differences between the left/source and destination/right and the profile is set to email if there are no differences
**Return value:** Return False to not send the email, else return True
This function is called before the log is to be emailed. This gives the script an opportunity to not send the email.
Note this subroutine is not called if the profile is not configured to send the log via email.
The NoDiffs parameter is optional (to remain compatible with pre-V10 scripts).
IMPORTANT: This function is called in the context of the main user interface thread. This means, for example, that the script global variables will not be as expected. Also, SyncBack will retry sending an email if it thinks the email cannot be sent if the attachments are too large. This means this function may be called twice.
**function RunBeforeRenameFile(Left, FromFilename, ToFilename; var ToDirCreated; var FileLocked; var DoneRename);**
**Left:** True if the left/source file is to be renamed
**FromFilename:** The old name of the file (not including the base path)
**ToFilename:** The new name of the file (not including the base path)
**ToDirCreated:** Set to True if the directory for ToFilename was created
**FileLocked:** Set to True if one of the files is locked so cannot be renamed
**DoneRename:** Set to True if the file was renamed
**Return value:** An error message if the rename failed
This function is called before a file is to be renamed. On failure the function should return an error message (do not return an error message if the script is not renaming files). If a directory was created in order to rename the file then ToDirCreated should be returned as TRUE. If one of the files is locked then FileLocked should be returned as TRUE (and an error message should be returned). If the file was renamed then DoneRename should be returned as True.
Note that once a script has renamed a file then no other scripts will be called to rename the file. This means the order of run-time scripts used in a profile is important. Obviously a file can only be renamed once.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunAfterRenameFile](RuntimeScripts.md#procedure_runafterrenamefile_left__fromfilename__tofilename__failed__)
**function RunBeforeSetAttrs(Left, Filename, useAttrs; var DoneSet);**
**Left:** True if the left/source files attributes are to be changed
**Filename:** The name of the file (not including the base path)
**useDateTime:** The attributes to use
**DoneSet:** Set to True if the files attributes were changed
**Return value:** An error message on failure
This function is called when a files filesystem attributes are going to be changed. On error return an error message (do not return an error message if the script is not changing the files attributes). If the files attributes were changed then DoneSet should be returned as True. It is called only when the action is [CACTION_USE_SRC_DETAILS](ScriptConstants.md#actions) or [CACTION_USE_DEST_DETAILS](ScriptConstants.md#actions), and is not called when a file is copied and its attributes are to be changed, for example.
Note that once a script has set a files attributes then no other scripts will be called to set the files attributes. This means the order of run-time scripts used in a profile is important.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunAfterSetAttrs](RuntimeScripts.md#procedure_runaftersetattrs_left__filename__useattrs__failed__)
**function RunBeforeSetDateTimes(Left, Filename, ModDateTime, CreateDateTime; var DoneModSet; var DoneCreateSet);**
**Left:** True if the left/source files date & time is to be changed
**Filename:** The name of the file (not including the base path)
**ModDateTime:** The modification date & time to change it to (local timezone). Ignore if <= 1.0.
**CreateDateTime:** The creation date & time to change it to (local timezone). Ignore if <= 1.0.
**DoneModSet:** Set to True if the files modification date & times was changed
**DoneCreateSet:** Set to True if the files creation date & times was changed
**Return value:** An error message on failure
This function is called when a files last modification date & time and/or creation date & time is going to be set. On error return an error message (do not return an error message if the script is not setting the files date & time).
If the files modification date & time was changed then DoneModSet should be returned as True. If the files creation date & time was changed then DoneCreateSet should be returned as True.
It is called only when the action is [CACTION_USE_SRC_DETAILS](ScriptConstants.md#actions) or [CACTION_USE_DEST_DETAILS](ScriptConstants.md#actions), and is not called when a file is copied and its date & time is changed, for example.
Note that once a script has set a files date & time then no other scripts will be called to set the files date & time. This means the order of run-time scripts used in a profile is important.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunAfterSetDateTimes](RuntimeScripts.md#procedure_runaftersetdatetimes_left__filename__moddatetime__createdatetime__failed__)
**function RunBeforeSetModDateTime(Left, Filename, useDateTime; var DoneSet);**
**Left:** True if the left/source files date & time is to be changed
**Filename:** The name of the file (not including the base path)
**useDateTime:** The date & time to change it to (local timezone)
**DoneSet:** Set to True if the files date & time was changed
**Return value:** An error message on failure
Note that this is a legacy function. You should now use [RunBeforeSetDateTimes](RuntimeScripts.md#function_runbeforesetdatetimes_left__filename__moddatetime__createdatetime__var_donemodset__var_donecreateset__)
This function is called when a files last modification date & time is going to be set. On error return an error message (do not return an error message if the script is not setting the files date & time). If the files date & time was changed then DoneSet should be returned as True. It is called only when the action is [CACTION_USE_SRC_DETAILS](ScriptConstants.md#actions) or [CACTION_USE_DEST_DETAILS](ScriptConstants.md#actions), and is not called when a file is copied and its date & time is changed, for example.
Note that once a script has set a files date & time then no other scripts will be called to set the files date & time. This means the order of run-time scripts used in a profile is important.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunAfterSetModDateTime](RuntimeScripts.md#procedure_runaftersetmoddatetime_left__filename__usedatetime__failed__)
**function RunDeleteAll(Left, WillDeleteAll);**
**Left:** True if the check is for the Left/Source
**WillDeleteAll:** True if the profile is currently set to delete all
**Return value:** Return False to not delete all, else True to delete all
This function is called before any attempt is made to delete all the files and folders in either the source/left or destination/right.
**function RunDiffColumnHint(Col, IsFile, Filename);**
**Col:** The column number
**IsFile:** True if Filename refers to a file, else it's a folder
**Filename:** The name of the file/folder (not including the base path)
**Return value:** The hint string to display
This subroutine is called from the Differences window when a custom column hint is required. The first custom column is column zero (0). The script is only called for its custom columns and not for columns created by other scripts.
```
function RunDiffColumnHint(Col, IsFile, Filename);
begin
Result:=Filename;
end;
```
**function RunDiffColumnsCount;**
**Return value:** The number of custom columns, or zero if none are required
This function is called from the Differences window to ask the script how many custom columns it wants created in the Differences window. Note that this value is cached so the function is only called once (when the Differences window appears).
```
fnction RunDiffColumnsCount;
begin
Result:=2;
end;
```
**function RunDiffColumnSort(Col, IsFile1, IsFile2, Filename1, Filename2);**
**Col:** The column the display is being sorted on
**IsFile1:** True if Filename1 is a file, otherwise it's a folder
**IsFile2:** True if Filename2 is a file, otherwise it's a folder
**Filename1:** The name of a file/folder
**Filename2:** The name of a file/folder
**Return value:** An integer (<0 if file 1 should go before file 2, 0=same filename, > 0 if file 1 should go after file 2)
This function is called from the Differences window when a custom column is being sorted. The first custom column is column zero. The script is only called for its custom columns and not for columns created by other scripts.
Note that sorting can be extremely slow if there are hundreds of thousands of items to sort.
See also [RunDiffColumnsCount](RuntimeScripts.md#function_rundiffcolumnscount_)
**function RunDiffColumnText(Col, IsFile, Filename);**
**Col:** The column number
**IsFile:** True if Filename refers to a file, else it's a folder
**Filename:** The name of the file/folder (not including the base path)
**Return value:** The columns text
This subroutine is called from the Differences window when text for a custom column is required. The first custom column is column zero (0). The script is only called for its custom columns and not for columns created by other scripts.
```
function RunDiffColumnText(Col, IsFile, Filename);
begin
If (Col = 0) Then
Result:='Custom Column 1: ' + Filename
Else
Result:='Custom Column 2: ' + Filename;
end;
```
See also [RunDiffColumnsCount](RuntimeScripts.md#function_rundiffcolumnscount_)
**function RunDiffColumnTitle(Col; var Width);**
**Col:** The column number
**Width:** Set it to the width the column should be (in pixels)
**Return value:** The columns title
This subroutine is called from the Differences window when the title for a custom column is required. The first custom column is column zero (0). The script is only called for its custom columns and not for columns created by other scripts.
```
function RunDiffColumnTitle(Col, Width);
begin
if (Col = 0) then begin
Result:='Custom Column 1';
Width:=100;
end else begin
Result:='Custom Column 2';
Width:=150;
end;
end;
```
**function RunDisabledCheck(var NoLog);**
**NoLog:** Set this to TRUE if a log should not be created
**Return value:** A reason why the script should not continue running
This function is called very early on in the profile run and gives the script a chance to stop the profile from running. If the script does not want the profile to run it should return the reason, otherwise it should return an empty string if the profile should continue.
To stop a log file from being produced then set NoLog to True. For example, you may expect certain conditions, e.g. the network being unavailable, and so do not want a log file to be produced.
NOTE: The error message from the profile run indicates the profile is disabled. However, it is not. It is just that run that was disabled (aborted).
```
function RunDisabledCheck(var NoLog);
begin
NoLog:=FALSE;
if SBRunning.Restore Then
Result:='You cannot restore your files'
else
Result:='';
end;
```
**function RunEmailLogAttachFilename(Cnt);**
**Cnt:** On the first call this is zero, and then incremented on each call
**Return value:** The filename of the file to attach. The file must exist and be readable.
This function is called when the log file is about to be emailed. It gives the script an opportunity to add custom file attachments to the email.
Note that [RunEmailLogAttachToAdd](RuntimeScripts.md#function_runemaillogattachtoadd_) is called first, and then RunEmailLogAttachFilename() is called the appropriate number of times.
IMPORTANT: This function is called in the context of the main user interface thread. This means, for example, that the script global variables will not be as expected.
See [RunEmailLogAttachToAdd](RuntimeScripts.md#function_runemaillogattachtoadd_) for an example.
**function RunEmailLogAttachToAdd;**
**Return value:** The number of files to attach
This function is called when the log file is about to be emailed. It gives the script an opportunity to add custom file attachments to the email.
Note that RunEmailLogAttachToAdd is called first, and then [RunEmailLogAttachFilename](RuntimeScripts.md#function_runloglocationinfoinfo_left__cnt__) is called the appropriate number of times.
IMPORTANT: This function is called in the context of the main user interface thread. This means, for example, that the script global variables will not be as expected. Also, SyncBack will retry sending an email if it thinks the email cannot be sent if the attachments are too large. This means this function will not be called if it tries resending without attachments.
```
function RunEmailLogAttachToAdd;
begin
Result:=2;
end;
function RunEmailLogAttachFilename(Cnt);
begin
If (Cnt = 0) Then
Result:='c:\path\filename1.txt'
Else
Result:='c:\path\filename2.txt';
end;
```
**function RunLogLocationInfoCaption(Left, Cnt);**
**Left:** True is this call is for information on the left/source
**Cnt:** On the first call this is zero, and then incremented on each call
**Return value:** The caption string to use
This function is called when the log file is being created. It gives the script an opportunity to add custom information to the log file about the left/source and/or right/destination locations.
Note that [RunLogLocationInfoToAdd](RuntimeScripts.md#function_runloglocationinfotoadd_left__) is called first, and then RunLogLocationInfoCaption() is called the appropriate number of times.
See [RunLogLocationInfoToAdd](RuntimeScripts.md#function_runloglocationinfotoadd_left__) for an example.
**function RunLogLocationInfoInfo(Left, Cnt);**
**Left:** True is this call is for information on the left/source
**Cnt:** On the first call this is zero, and then incremented on each call
**Return value:** The information string to use
This function is called when the log file is being created. It gives the script an opportunity to add custom information to the log file about the left/source and/or right/destination locations.
Note that [RunLogLocationInfoToAdd](RuntimeScripts.md#function_runloglocationinfotoadd_left__) is called first, and then RunLogLocationInfoInfo is called the appropriate number of times.
See [RunLogLocationInfoToAdd](RuntimeScripts.md#function_runloglocationinfotoadd_left__) for an example.
**function RunLogLocationInfoToAdd(Left);**
**Left:** True if this call is for information on the left/source
**Return value:** The number of caption/info calls to make
This function is called when the log file is being created. It gives the script an opportunity to add custom information to the log file about the left/source and/or right/destination locations.
Note that RunLogLocationInfoToAdd is called first, and then [RunLogLocationInfoInfo](RuntimeScripts.md#function_runloglocationinfoinfo_left__cnt__) is called the appropriate number of times.
```
function RunLogLocationInfoToAdd(Left);
begin
if Left then
Result:=2
else
Result:=0;
end;
function RunLogLocationInfoCaption(Left, Cnt);
begin
if Left then begin
if (Cnt = 0) then
Result:='Caption 1'
else
Result:='Caption 2';
end else
Resul:='';
end;
function RunLogLocationInfoInfo(Left, Cnt);
begin
if Left then begin
if (Cnt = 0) then
Resul:='Info 1'
else
Resul:='Info 2';
end else
Resul:='';
end;
```
**function RunPreCopyCheck;**
**Return value:** A reason why the script should not continue running
This function is called after the files and folders have been compared, and after the Differences window is displayed (if it is to be displayed). It is called before any files are copied, moved, deleted, or renamed, and gives the script a chance to abort the profile, e.g. the script may decide there is not enough free space to copy everything and so abort. If the script does not want the profile to run it should return the reason, otherwise it should return an empty string if the profile should continue.
```
function RunPreCopyCheck;
begin
if NotEnoughDiskSpace Then
Result:='There is not enough disk space'
else
Result:='';
end;
```
**function RunRunAfterBefore(Filename);**
**Filename:** The full filename and command line parameters of program to be called in Run After
**Return value:** The filename and command line parameters of program to be called in Run After
This function is called before the Run After program is called. It is passed the full and expanded filename (and any command line arguments) that are going to be used, which could be an empty string. This function can decide not to run the program (by returning an empty string) or it could change the string to have a different program be called. If it wants the same program to be called it should return what was passed in Filename.
See also [RunRunAfterAfter](RuntimeScripts.md#procedure_runrunafterafter_filename__returnvalue__returnerrmsg__timedout__) and [RunRunBeforeBefore](RuntimeScripts.md#function_runrunbeforebefore_filename__)
**function RunRunBeforeBefore(Filename);**
**Filename:** The full filename and command line parameters of program to be called in Run Before
**Return value:** The filename and command line parameters of program to be called in Run Before
This function is called before the Run Before program is called. It is passed the full and expanded filename (and any command line arguments) that are going to be used, which could be an empty string. This function can decide not to run the program (by returning an empty string) or it could change the string to have a different program be called. If it wants the same program to be called it should return what was passed in Filename. If an empty string is returned then nothing is run and [RunRunBeforeAfter](RuntimeScripts.md#procedure_runrunbeforeafter_filename__returnvalue__returnerrmsg__timedout__) will not be called.
See also [RunRunBeforeAfter](RuntimeScripts.md#procedure_runrunbeforeafter_filename__returnvalue__returnerrmsg__timedout__) and [RunRunAfterBefore](RuntimeScripts.md#function_runrunafterbefore_filename__)
**function RunShowDiffWindow(WillShow);**
**WillShow:** Is the Differences window going to be displayed?
**Return value:** True if the Differences window should be displayed
Should the Differences window be displayed? Note that this function is not called if the profile run is unattended. In such cases the Differences window is never displayed.
**procedure InitialiseVars(Checking);**
**Checking:** Passed as True if the variables are being checked to see if they exist
This subroutine is called when the variables are initialised. Checking is passed as FALSE. Note that you need to be careful as many things haven't been initialised or created when this is called, e.g. no locations. It is called very early during the profile run (it is called just after [RunDisabledCheck](RuntimeScripts.md#function_rundisabledcheck_var_nolog__) is called).
If you are setting variables then it is recommended you also make your script a Configuration script. This is so the users can see which variables the script sets, and also they can use the variables, e.g. in the source or destination paths.
In the example below the variable MyScriptVar is set to a dummy value if it's a call to check if the variable is valid.
```
//
// Called very early when a profile is run (Checking is False)
// Also called in profile config when asking what variables the script sets (Checking is True)
//
procedure InitialiseVars(Checking);
begin
if Checking then begin
// Profile is being saved
SBVariables.SetVar('MyScriptVar', '?');
end else begin
// Profile is being run
// Do nothing
end;
end;
```
**procedure RunAfterConfig;**
This function is called very early on in the profile run and gives the script a chance to do any early initialisation work. It is called before any attempt is made to connect to the left/source or destination/right. It is called after [RunBeforeConfig](RuntimeScripts.md#procedure_runbeforeconfig_) and at this point the left/source folder is known, for example.
**procedure RunAfterCopyFile(ToLeft, Filename, Failed);**
**ToLeft:** True if the file was copied from the right/destination
**Filename:** The name of the file (not including the base path)
**Failed:** True if the copy failed
This function is called after a file has been copied. If Failed is True then either the copy failed or the user has aborted. Note that Failed being False does not necessarily mean the file was actually copied, i.e. it does not guarantee a file was created because the location may not actually copy the file, e.g. it may actually simply send it to a printer. What a script location does when it copies a file is beyond SyncBack's control.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunBeforeCopyFileEx](RuntimeScripts.md#function_runbeforecopyfileex_toleft__filename__var_todircreated__var_fromfilelocked__var_tofilelocked__var_donecopy__var_integrityhash__var_integritytype__) and [RunBeforeCopyFile](RuntimeScripts.md#function_runbeforecopyfile_toleft__filename__var_todircreated__var_fromfilelocked__var_tofilelocked__var_donecopy__)
**procedure RunAfterDeleteFile(Left, Filename, Failed);**
**Left:** True if the left/source file was deleted
**Filename:** The name of the file (not including the base path)
**Failed:** True if the delete failed
This function is called after a file has been deleted. If Failed is True then either the delete failed or the user has aborted. Note that Failed being False does not necessarily mean the file was actually deleted, e.g. it may not have existed.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunBeforeDeleteFile](RuntimeScripts.md#function_runbeforedeletefile_left__filename__var_filelocked__var_donedelete__)
**procedure RunAfterEmailLog(ErrMsg);**
**ErrMsg:** An error message (if the log could not be sent via email)
This subroutine is called after the log is emailed. If there was a problem sending the email then ErrMsg contains an error message.
Note this subroutine is not called if the profile is not configured to send the log via email.
IMPORTANT: This function is called in the context of the main user interface thread. This means, for example, that the script global variables will not be as expected. Also, SyncBack will retry sending an email if it thinks the email cannot be sent if the attachments are too large. This means this function may be called twice.
**procedure RunAfterFileCompare(Filename, Diff, WhyIgnored; var Action);**
**Filename:** The name of the file (not including the base path)
**Diff:** The differences between the files
**WhyIgnored:** The reason why the file is being ignored (if it is)
**Action:** The [action](ScriptConstants.md#actions) that has been decided upon based on the profiles settings
This function is called after a file is compared. The script can change the [Action](ScriptConstants.md#actions) to something else, or leave it as-is. Note that it is not called for files that are considered identical. Also, the action can only be changed to a valid action. For example, you cannot use CACTION_DELBOTH unless the file is in the source and destination.
See also [RunBeforeFileCompare](RuntimeScripts.md#procedure_runbeforefilecompare_filename__var_skip__)
**procedure RunAfterFolderCompare(Filename; var Action);**
**Filename:** The name of the folder (not including the base path)
**Action:** The [action](ScriptConstants.md#actions) that has been decided upon based on the profiles settings
This function is called after a folder (directory) is compared. The script can change the [Action](ScriptConstants.md#actions) to something else, or leave it as-is.
See also [RunBeforeFolderCompare](RuntimeScripts.md#procedure_runbeforefoldercompare_filename__var_skip__)
**procedure RunAfterRenameFile(Left, FromFilename, ToFilename, Failed);**
**Left:** True if the left/source file was renamed
**FromFilename:** The old name of the file (not including the base path)
**ToFilename:** The new name of the file (not including the base path)
**Failed:** True if the rename failed
This function is called after a file has been renamed. If Failed is True then either the rename failed or the user has aborted. Note that Failed being False does not necessarily mean the file was actually renamed, i.e. it does not guarantee a file was renamed because the location may not actually rename the file. What a script location does when it renames a file is beyond SyncBack's control.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunBeforeRenameFile](RuntimeScripts.md#function_runbeforerenamefile_left__fromfilename__tofilename__var_todircreated__var_filelocked__var_donerename__)
**procedure RunAfterSetAttrs(Left, Filename, useAttrs, Failed);**
**Left:** True if the left/source files attributes were changed
**Filename:** The name of the file (not including the base path)
**useAttrs:** The attributes that were used
**Failed:** True if the change failed
This function is called after a files filesystem attributes have been changed. It is called only when the action was [CACTION_USE_SRC_DETAILS](ScriptConstants.md#actions) or [CACTION_USE_DEST_DETAILS](ScriptConstants.md#actions), and is not called when a file is copied and its attributes are changed, for example. If Failed is True then either the change failed or the user has aborted. Note that Failed being False does not necessarily mean the files attributes were actually changed.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunBeforeSetAttrs](RuntimeScripts.md#function_runbeforesetattrs_left__filename__useattrs__var_doneset__)
**procedure RunAfterSetDateTimes(Left, Filename, ModDateTime, CreateDateTime, Failed);**
**Left:** True if the left/source files date & time was changed
**Filename:** The name of the file (not including the base path)
**ModDateTime:** The last modification date & time it was changed to (local timezone). Ignore if <= 1.0.
**CreateDateTime:** The creation date & time it was changed to (local timezone). Ignore if <= 1.0.
**Failed:** True if the change failed
This function is called after a files last modification date & time and/or creation date & time has been changed.
It is called only when the action was [CACTION_USE_SRC_DETAILS](ScriptConstants.md#actions) or [CACTION_USE_DEST_DETAILS](ScriptConstants.md#actions), and is not called when a file is copied and its date & time is changed, for example.
If Failed is True then either the change failed or the user has aborted. Note that Failed being False does not necessarily mean the date & time of the file was actually changed.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunBeforeSetDateTimes](RuntimeScripts.md#function_runbeforesetdatetimes_left__filename__moddatetime__createdatetime__var_donemodset__var_donecreateset__)
**procedure RunAfterSetModDateTime(Left, Filename, useDateTime, Failed);**
**Left:** True if the left/source files date & time was changed
**Filename:** The name of the file (not including the base path)
**useDateTime:** The date & time it was changed to (local timezone)
**Failed:** True if the change failed
Note that this is a legacy function. You should now use [RunAfterSetDateTimes](RuntimeScripts.md#procedure_runaftersetdatetimes_left__filename__moddatetime__createdatetime__failed__)
This function is called after a files last modification date & time has been changed. It is called only when the action was [CACTION_USE_SRC_DETAILS](ScriptConstants.md#actions) or [CACTION_USE_DEST_DETAILS](ScriptConstants.md#actions), and is not called when a file is copied and its date & time is changed, for example. If Failed is True then either the change failed or the user has aborted. Note that Failed being False does not necessarily mean the date & time of the file was actually changed.
This function is not called if the run is a [simulation](SBRunning.md#property_simulated).
See also [RunBeforeSetModDateTime](RuntimeScripts.md#function_runbeforesetmoddatetime_left__filename__usedatetime__var_doneset__)
**procedure RunBeforeConfig;**
This function is called very early on in the profile run and gives the script a chance to do any early initialisation work. It is called before any attempt is made to connect to the left/source or destination/right. It is called after [RunDisabledCheck](RuntimeScripts.md#function_rundisabledcheck_var_nolog__) and before the profile is prepared. Note that very little is initialised at this point, e.g. there is no left/source folder.
See also [RunAfterConfig](RuntimeScripts.md#procedure_runafterconfig_)
**procedure RunBeforeFileCompare(Filename; var Skip);**
**Filename:** The filename of the file (not including the base path)
**Skip:** Set to True to ignore/skip the file
This subroutine is called before a file is compared for differences. Note that the hash values will be probably empty except for: Fast Backup profiles which may have the destination hash value, and when using compression as the hash value is retrieved from the Zip file.
**procedure RunBeforeFolderCompare(Filename; var Skip);**
**Filename:** The name of the folder (not including the base path)
**Skip:** Set to True to skip this folder
This function is called before a folder (directory) is compared. It gives the script an opportunity to skip a folder (it's action will be set to [CACTION_SKIP](ScriptConstants.md#actions))
See also [RunAfterFolderCompare](RuntimeScripts.md#procedure_runafterfoldercompare_filename__var_action__)
**procedure RunBeforeScanning;**
This function is called just before scanning of the files and folders is about to start.
**procedure RunDiffClosed(Aborted);**
**Aborted:** True if the user decided to abort the profile
This subroutine is called from the Differences window when it is closed. The routine is called before the tree is cleared. It is called even if the user aborted or the tree was empty.
See also [RunDiffOpened](RuntimeScripts.md#procedure_rundiffopened_)
**procedure RunDiffColumnClicked(Col, IsFile, Filename);**
**Col:** The column number
**IsFile:** True if Filename refers to a file, else it's a folder
**Filename:** The name of the file/folder (not including the base path)
This subroutine is called from the Differences window when a custom column is clicked. The first custom column is column zero (0). The script is only called for its custom columns and not for columns created by other scripts.
See also [RunDiffKeyPress](RuntimeScripts.md#procedure_rundiffkeypress_key__shift__isfile__filename__)
**procedure RunDiffFocusChanged(IsFile, Filename);**
**IsFile:** True if Filename refers to a file, else it's a folder
**Filename:** The name of the file/folder (not including the base path)
This subroutine is called from the Differences window when the focused node changes.
**procedure RunDiffKeyPress(Key, Shift, IsFile, Filename);**
**Key:** The key that as pressed
**Shift:** The shift state
**IsFile:** True if Filename refers to a file, else it's a folder
**Filename:** The name of the file/folder (not including the base path)
This subroutine is called from the Differences window when a key is pressed. It is called for each selected row. It is not called if the Delete key is pressed (as that is handled by SyncBack itself).
The Key value refers to the virtual key codes.
The Shift state can be a selection of the following values:
0 = No shift state
ssShift = Shift key is pressed
ssAlt = Alt key is pressed
ssCtrl = Ctrl key is pressed
ssLeft = Left mouse button is pressed
ssRight = Right mouse button is pressed
ssMiddle = Middle mouse button is pressed
ssDouble = Mouse double-clicked
ssTouch = Holding a finger on the touch surface
ssPen = Pen is touching the surface of a tablet
ssCommand = CMD key is held down (only on Mac)
ssHorizontal = User is moving a finger horizontally on the touch surface or is rolling the mouse wheel to produce a horizontal displacement
See also [RunDiffColumnClicked](RuntimeScripts.md#procedure_rundiffcolumnclicked_col__isfile__filename__)
```
// This example says the filename if S is pressed
procedure RunDiffKeyPress(Key, ShiftState, IsFile, Filename);
begin
If (Key = 83) Then
SBSystem.Say(Filename);
end;
```
**procedure RunDiffOpened;**
This subroutine is called from the Differences window when it is opened and displayed. The routine is called after the tree has been loaded and sorted. Note that if the user aborts the loading of the Differences window, or the tree is empty and the profile is configured to close the Differences window automatically if empty, then this routine is not called.
See also [RunDiffClosed](RuntimeScripts.md#procedure_rundiffclosed_aborted__)
**procedure RunDoFullBackup(LeftDir, RightDir; var FullBackup);**
**LeftDir:** The base directory of the left/source
**RightDir:** The base directory of the right/destination
**FullBackup:** True if this is a full backup run. Change as required.
This function is called when a decision must be made on whether the profile run should be a full backup or an incremental/differential backup.
Note that once a script has decided on wheter it is a full backup or not then no other scripts will be called to decide. This means the order of run-time scripts used in a profile is important.
See also [FullBackup](SBRunning.md#property_fullbackup)
**procedure RunFileCompareDiff(Filename, Diff, WhyIgnored; var Skip);**
**Filename:** The filename of the file (not including the base path)
**Diff:** The differences between the files
**WhyIgnored:** The reason why the file is being ignored (if it is)
**Skip:** Set to True to ignore/skip the file
This subroutine is called after a file has been compared for differences and the left/source and right/destination files are different.
**procedure RunFileCompareSame(Filename; var Diff);**
**Filename:** The filename of the file (not including the base path)
**Diff:** Set to the difference between the files, or CDIFF_IDENTICAL
This subroutine is called after a file has been compared for differences and the left/source and right/destination files are considered, based on the profile settings, to be identical. This can be used, for example, by a script to make further comparisons and change it to not be identical.
This function is deprecated and RunFileCompareSameEx should be used instead. If you have [RunFileCompareSameEx](RuntimeScripts.md#procedure_runfilecomparesameex_filename__whyignored__var_diff__) defined then that will be called instead.
**procedure RunFileCompareSameEx(Filename; WhyIgnored; var Diff);**
**Filename:** The filename of the file (not including the base path)
**WhyIgnored:** The reason the file was ignored (TIgnoreReason)
**Diff:** Set to the difference between the files, or CDIFF_IDENTICAL
This subroutine is called after a file has been compared for differences and the left/source and right/destination files are considered, based on the profile settings, to be identical. This can be used, for example, by a script to make further comparisons and change it to not be identical.
This function was added in SyncBackPro V12.
**procedure RunLogClosing(ProfileStatus);**
**ProfileStatus:** 0 = success, >=1 means profile failed, else unknown
This function is called when logging is ending and the log file is about to be closed.
See also [RunLogOpening](RuntimeScripts.md#procedure_runlogopening_logformat__filename__folder__appending__)
This script function was introduced in V12.
**procedure RunLogException(ExceptionReport);**
**ExceptionReport:** The exception report (which can be several kilobytes in length)
This function is called when SyncBack encounters an exception. As exception reports can be very large, and an exception can trigger cascades of exceptions (e.g. if out of memory) then only the first 10 exceptions are logged.
This script function was introduced in V12.
**procedure RunLogIgnoreReason(FileStatus, ListFilename, ActualFilename, Reason);**
**FileStatus:** See [TLogFileStatus](ScriptConstants.md#tlogfilestatus)
**ListFilename:** The list filename (may be blank). This is the relative filename.
**ActualFilename:** The actualy (full) filename.
**Reason:** The reason the file was ignored (see [IgnoredReason](ScriptConstants.md#ignoredreason))
This function is called when an entry is added to the log file in regards to a file being ignored.
See also [RunLogStatus](RuntimeScripts.md#procedure_runlogstatus_filestatus__listfilename__actualfilename__status__)
This script function was introduced in V12.
**procedure RunLogOpening(LogFormat, Filename, Folder, Appending);**
**LogFormat:** The format of the log file ([TLogFormat](ScriptConstants.md#tlogformat))
**Filename:** The expanded filename of the log file (note that if page
**Folder:** The expanded folder name where the log file will go
**Appending:** TRUE is appending
This function is called when logging begins. It is called even if no log files are being created.
See also [RunLogClosing](RuntimeScripts.md#procedure_runlogclosing_profilestatus__) and also variables such as %LOGERRORSCNT%
This script function was introduced in V12.
numbers are used then the page number variable %PAGE% is not expanded)
**procedure RunLogStatus(FileStatus, ListFilename, ActualFilename, Status);**
**FileStatus:** See [TLogFileStatus](ScriptConstants.md#tlogfilestatus)
**ListFilename:** The list filename (may be blank). This is the relative filename.
**ActualFilename:** The actualy (full) filename.
**Status:** The success, error or warning message.
This function is called when an entry is added to the log file.
See also [RunLogIgnoreReason](RuntimeScripts.md#procedure_runlogignorereason_filestatus__listfilename__actualfilename__reason__)
This script function was introduced in V12.
**procedure RunProfileResult(ProfileResult, ErrMsg);**
**ProfileResult:** The [result](ScriptConstants.md#results) of the profile run
**ErrMsg:** If a fatal error occurred, this is the error message
This function is called when the result of the profile run is known and has been saved. It is usually done before the profile finishes. For example:
```
procedure RunProfileResult(ProfileResult, ErrMsg);
begin
SBRunning.DebugOut(ProfileResult, ErrMsg, 1);
end;
```
**procedure RunRunAfterAfter(Filename, ReturnValue, ReturnErrMsg, TimedOut);**
**Filename:** The full filename and command line parameters of program called in Run After
**ReturnValue:** The numeric return value of the program
**ReturnErrMsg:** If the program could not be run then this is the error message
**TimedOut:** If the program timed out then this is TRUE
This function is called after the Run After program has been called. It is passed the full and expanded filename (and any command line arguments) that were used. If there was a problem running the program then ReturnErrMsg will contain an error message. RetVal will contain the numeric return value from the program, but note that this value should be ignored if the program failed to run, if TimedOut is TRUE, or if the profile was not configured to wait for the program to finish. TimedOut is TRUE if the program took too long to run.
See also [RunRunBeforeAfter](RuntimeScripts.md#procedure_runrunbeforeafter_filename__returnvalue__returnerrmsg__timedout__) and [RunRunAfterBefore](RuntimeScripts.md#function_runrunafterbefore_filename__)
**procedure RunRunBeforeAfter(Filename, ReturnValue, ReturnErrMsg, TimedOut);**
**Filename:** The full filename and command line parameters of program called in Run Before
**ReturnValue:** The numeric return value of the program
**ReturnErrMsg:** If the program could not be run then this is the error message
**TimedOut:** If the program timed out then this is TRUE
This function is called after the Run Before program has been called. It is passed the full and expanded filename (and any command line arguments) that were used. If there was a problem running the program then ReturnErrMsg will contain an error message. RetVal will contain the numeric return value from the program, but note that this value should be ignored if the program failed to run, if TimedOut is TRUE, or if the profile was not configured to wait for the program to finish. TimedOut is TRUE if the program took too long to run. If [RunRunBeforeBefore](RuntimeScripts.md#function_runrunbeforebefore_filename__) returned an empty string then this procedure is not called.
See also [RunRunBeforeBefore](RuntimeScripts.md#function_runrunbeforebefore_filename__) and [RunRunAfterAfter](RuntimeScripts.md#procedure_runrunafterafter_filename__returnvalue__returnerrmsg__timedout__)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SBLocation
These are functions that can be accessed from scripts via the **SBLocation** object. For example:
```
SBLocation.BaseDir
```
The **SBLocation** object is only accessible from [Location](LocationScripts.md) scripts.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**function AddDir(Name);**
**Name:** The name of the directory, without the path
**Return value:** Return FALSE if the script wants to abort the scan
This function should be called by the Script inside the [LocScanList](LocationScripts.md#function_locscanlist_fullpath__) whenever a new directory (folder) is found, i.e. the script must call this function for every directory in the directory being scanned.
It is recommended that you use the newer [AddDirEx2](SBLocation.md#function_adddirex2_name__attrs__moddatetime__createdatetime__ntfssec__) function instead of this function.
Name: The name should not include the path. It is just the name of the directory. It must be a unique name for that folder, i.e. two sub-directories in the same directory cannot have the same name. Note that you do not need to pass the special folders . or ..
**function AddDirEx(Name, Attrs);**
**Name:** The name of the directory, without the path
**Attrs:** The directories attributes
**Return value:** Return FALSE if the script wants to abort the scan
This function should be called by the Script inside the [LocScanList](LocationScripts.md#function_locscanlist_fullpath__) whenever a new directory (folder) is found, i.e. the script must call this function for every directory in the directory being scanned.
It is recommended that you use the newer [AddDirEx2](SBLocation.md#function_adddirex2_name__attrs__moddatetime__createdatetime__ntfssec__) function instead of this function.
Attrs: The filesystem attributes of the directory. If the attributes are unknown then pass -1. Note that these must be standard Windows filesystem attributes.
Name: The name should not include the path. It is just the name of the directory. It must be a unique name for that folder, i.e. two sub-directories in the same directory cannot have the same name. Note that you do not need to pass the special folders . or ..
**function AddDirEx2(Name, Attrs, ModDateTime, CreateDateTime, NTFSSec);**
**Name:** The name of the directory, without the path
**Attrs:** The directories attributes
**ModDateTime:** The last modification date & time of the directory, or 1.0 if unknown
**CreateDateTime:** The creation date & time of the directory, or 1.0 if unknown
**NTFSSec:** The NTFS security of the directory, or empty string if unknown
**Return value:** Return FALSE if the script wants to abort the scan
This function should be called by the Script inside the [LocScanList](LocationScripts.md#function_locscanlist_fullpath__) whenever a new directory (folder) is found, i.e. the script must call this function for every directory in the directory being scanned.
Name: The name should not include the path. It is just the name of the directory. It must be a unique name for that folder, i.e. two sub-directories in the same directory cannot have the same name. Note that you do not need to pass the special folders . or ..
Attrs: The filesystem attributes of the directory. If the attributes are unknown then pass -1. Note that these must be standard Windows filesystem attributes.
ModDateTime: The last modification date & time of the directory (in the local timezone). If the last modification date & time is unknown then pass 1.0.
CreateDateTime: The creation date & time of the directory (in the local timezone). If the creation date & time is unknown then pass 1.0.
NTFSSec: The NTFS security for the directory in string format. See the Win32 API function ConvertSecurityDescriptorToStringSecurityDescriptor. If the NTFS security is unknown or not applicable pass an empty string.
**function AddFile(Name, CRC32, FileSize, Attrs, ModDateTime);**
**Name:** The name of the file, without the path
**CRC32:** The CRC32 hash value of the file, or empty string if unknown
**FileSize:** The size of the file, in bytes, or -1 if unknown
**Attrs:** The filesystem attributes of the file, or -1 if unknown
**ModDateTime:** The last modification date & time of the file, or 1.0 if unknown
**Return value:** Return FALSE if the script wants to abort the scan
This function should be called by the Script inside the [LocScanList](LocationScripts.md#function_locscanlist_fullpath__) function whenever a new file is found, i.e. the script must call this function for every file in the folder being scanned.
It is recommended that you use the newer [AddFileEx](SBLocation.md#function_addfileex_name__crc32__filesize__attrs__moddatetime__createdatetime__ntfssec__) function instead of this function.
Name: The name should not include the path. It is just the name of the file. It must be a unique name for that folder, i.e. two files in the same folder cannot have the same name.
CRC32: Do not waste time calculating the CRC32 hash value. Only provide it if it is already known, e.g. it's a Zip file so you can get the hash value quickly, otherwise pass an empty string.
FileSize: The size of the file, in bytes. If the size is unknown then pass -1. If [IsIgnoringSize](SBLocation.md#property_isignoringsize) is returning True, and retrieving the file size would incur more processing time, then you can pass -1. When using VBScript this parameter is a string to avoid the 32-bit limit on integers used by VBScript. If you are using VBScript, then convert the number to a currency and then to a string, e.g. CFileSize = CStr(CCur(FileItem.Size))
Attrs: The filesystem attributes of the file. If the attributes are unknown then pass -1. Note that these must be standard Windows filesystem attributes.
ModDateTime: The last modification date & time of the file (in the local timezone). If the last modification date & time is unknown then pass 1.0. Also, if [IsIgnoringDateTime](SBLocation.md#property_isignoringdatetime) is returning True, and retrieving the date & time would incur more processing time, then you can pass 1.0
**function AddFileEx(Name, CRC32, FileSize, Attrs, ModDateTime, CreateDateTime, NTFSSec);**
**Name:** The name of the file, without the path
**CRC32:** The CRC32 hash value of the file, or empty string if unknown
**FileSize:** The size of the file, in bytes, or -1 if unknown
**Attrs:** The filesystem attributes of the file, or -1 if unknown
**ModDateTime:** The last modification date & time of the file, or 1.0 if unknown
**CreateDateTime:** The creation date & time of the file, or 1.0 if unknown
**NTFSSec:** The NTFS security of the file, or empty string if unknown
**Return value:** Return FALSE if the script wants to abort the scan
This function should be called by the Script inside the [LocScanList](LocationScripts.md#function_locscanlist_fullpath__) function whenever a new file is found, i.e. the script must call this function for every file in the folder being scanned.
Name: The name should not include the path. It is just the name of the file. It must be a unique name for that folder, i.e. two files in the same folder cannot have the same name.
CRC32: Do not waste time calculating the CRC32 hash value. Only provide it if it is already known, e.g. it's a Zip file so you can get the hash value quickly, otherwise pass an empty string.
FileSize: The size of the file, in bytes. If the size is unknown then pass -1. If [IsIgnoringSize](SBLocation.md#property_isignoringsize) is returning True, and retrieving the file size would incur more processing time, then you can pass -1. When using VBScript this parameter is a string to avoid the 32-bit limit on integers used by VBScript. If you are using VBScript, then convert the number to a currency and then to a string, e.g. CFileSize = CStr(CCur(FileItem.Size))
Attrs: The filesystem attributes of the file. If the attributes are unknown then pass -1. Note that these must be standard Windows filesystem attributes.
ModDateTime: The last modification date & time of the file (in the local timezone). If the last modification date & time is unknown then pass 1.0. Also, if [IsIgnoringDateTime](SBLocation.md#property_isignoringdatetime) is returning True, and retrieving the date & time would incur more processing time, then you can pass 1.0
CreateDateTime: The creation date & time of the file (in the local timezone). If the creation date & time is unknown then pass 1.0.
NTFSSec: The NTFS security for the file in string format. See the Win32 API function ConvertSecurityDescriptorToStringSecurityDescriptor. If the NTFS security is unknown or not applicable pass an empty string.
**Property Abort**
Returns TRUE if the profile is being aborted. Set it to TRUE to abort the profile. Note that the abort may not be immediate, and an abort cannot be aborted (i.e. once True you cannot change it to False).
**Property BaseDir**
Returns the base directory of the location.
This is a read-only property.
**Property IsIgnoringDateTime**
Returns True if this location can ignore file last modification date & times. Note that this should only be used in the [LocScanList](LocationScripts.md#function_locscanlist_fullpath__) script function otherwise the return value is always False. This can be used to optimize the location, e.g. if it takes time to get a files last modification date & time, and IsIgnoringDateTime is returning True, then the script should not waste time trying to retrieve it (in the [LocScanList](LocationScripts.md#function_locscanlist_fullpath__) script function).
This is a read-only property.
**Property IsIgnoringSize**
Returns True if this location can ignore file sizes. Note that this should only be used in the [LocScanList](LocationScripts.md#function_locscanlist_fullpath__) script function otherwise the return value is always False. This can be used to optimize the location, e.g. if it takes time to get a files size, and IsIgnoringSize is returning True, then the script should not waste time trying to retrieve it (in the [LocScanList](LocationScripts.md#function_locscanlist_fullpath__) script function).
This is a read-only property.
**Property IsLeft**
Returns True if this location is the left/source location, otherwise it is the right/destination location.
This is a read-only property.
**Property VersionsType**
Returns an integer value that states what is being done with versions folders:
EVTAsNormal = They are being treated as any other directory (usually because neither location if using versioning)
EVTSkip = Versions directories and being skipped and assumed not to exist (usually because this location doesn't use versioning, but the other one does)
EVTCollectSub = File versions are being read from the versions directories, i.e. the location uses versioning
EVTCollectRoot = File versions are being read from a sub-folder of the base folder
Note that this information is for reference only as SyncBack will manage all aspects of versioning for the script.
This is a read-only property.
**Property VersionSubDir**
Returns the name of the versions sub-folder, e.g. $SBV$. Note that this information is for reference only as SyncBack will manage all aspects of versioning for the script.
This is a read-only property.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SBProfile
These are functions that can be accessed from scripts via the **SBProfile** object. For example:
```
SBProfile.Name
```
The **SBProfile** object is only accessible from [Profile Configuration](ProfileConfigurationScripts.md) scripts.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**function GetCheckbox(Tag);**
**Tag:** The tag ID of the checkbox control
**Return value:** TRUE if the checkbox is ticked
This function returns the state of a checkbox control (created with [AddCheckbox](SBProfile.md#procedure_addcheckbox_caption__tag__)). To change the state of a checkbox you can use [SetCheckbox](SBProfile.md#function_setcheckbox_value__tag__).
**function GetComboBoxIndex(Tag);**
**Tag:** The tag ID of the combobox control
**Return value:** The index of the selected item (zero is the first item, -1 if no item is selected)
This function returns the index of the currently selected item in a combobox control (created with [AddComboBox](SBProfile.md#procedure_addcombobox_listonly__tag__)). Note that if the control can be edited then the index can be -1, e.g. the user has entered their own text instead of selecting an item. In that case you can get the text entered by using [GetComboBoxText](SBProfile.md#function_getcomboboxtext_tag__).
To change the state of a checkbox you can use [SetComboBoxItem](SBProfile.md#function_setcomboboxitem_itemindex__tag__) or [SetComboBoxText](SBProfile.md#function_setcomboboxtext_itemtext__tag__).
**function GetComboBoxText(Tag);**
**Tag:** The tag ID of the combobox control
**Return value:** The text in the combobox control
This function returns the text entered into a combobox control (created with [AddComboBox](SBProfile.md#procedure_addcombobox_listonly__tag__)).
To change the state of a checkbox you can use [SetComboBoxItem](SBProfile.md#function_setcomboboxitem_itemindex__tag__) or [SetComboBoxText](SBProfile.md#function_setcomboboxtext_itemtext__tag__).
**function GetEdit(Tag);**
**Tag:** The tag ID of the edit control
**Return value:** The text in the edit control
This function returns the text in an edit control (created with [AddEdit](SBProfile.md#procedure_addedit_caption__maxlen__numbersonly__password__tag__)). To change the text in an edit control you can use [SetEdit](SBProfile.md#function_setedit_value__tag__).
**function GetRadioGroup(Tag);**
**Tag:** The tag ID of the radiogroup control
**Return value:** The index of the selected item (zero is the first item, -1 if no item is selected)
This function returns the index of the currently selected item in a radiogroup control (created with [AddRadioGroup](SBProfile.md#procedure_addradiogroup_caption__tag__)).
To change the state of a checkbox you can use [SetRadioGroup](SBProfile.md#function_setradiogroup_itemindex__tag__).
**function SetButton(Caption, Tag);**
**Value:** The text set the button control to
**Tag:** The tag ID of the button control
This sub routine sets the text of a button control (created with [AddButton](SBProfile.md#procedure_addbutton_caption__tag__)).
NOTE: This function is not available when using the old Windows scripting.
**function SetCheckbox(Value, Tag);**
**Value:** Pass TRUE to tick the checkbox
**Tag:** The tag ID of the edit control
This sub routine sets the state of a checkbox control (created with [AddCheckbox](SBProfile.md#procedure_addcheckbox_caption__tag__)). To get the state of a checkbox control you can use [GetCheckbox](SBProfile.md#function_getcheckbox_tag__).
**function SetComboBoxItem(ItemIndex, Tag);**
**ItemIndex:** The item index to use (0 is the first item, -1 means nothing selected)
**Tag:** The tag ID of the combobox control
This sub routine sets the selected item index of a combobox control (created with [AddComboBox](SBProfile.md#procedure_addcombobox_listonly__tag__)).
To get the current index of a checkbox control you can use [GetComboBoxIndex](SBProfile.md#function_getcomboboxindex_tag__).
**function SetComboBoxText(ItemText, Tag);**
**ItemText:** The text to set the combobox control to use
**Tag:** The tag ID of the combobox control
This sub routine sets the text of a combobox control (created with [AddComboBox](SBProfile.md#procedure_addcombobox_listonly__tag__)).
To get the text of a checkbox control you can use [GetComboBoxText](SBProfile.md#function_getcomboboxtext_tag__).
**function SetEdit(Value, Tag);**
**Value:** The text to put into the edit control
**Tag:** The tag ID of the edit control
This sub routine sets the text in an edit control (created with [AddEdit](SBProfile.md#procedure_addedit_caption__maxlen__numbersonly__password__tag__)). To get the text in an edit control you can use [GetEdit](SBProfile.md#function_getedit_tag__).
**function SetLabel(Caption, Tag);**
**Value:** The text set the label control to
**Tag:** The tag ID of the label control
This sub routine sets the text of a label control (created with [AddLabel](SBProfile.md#procedure_addlabel_caption__tag__)).
**function SetRadioGroup(ItemIndex, Tag);**
**ItemIndex:** The item index to use (0 is the first item, -1 means nothing selected)
**Tag:** The tag ID of the radiogroup control
This sub routine sets the selected item index of a radiogroup control (created with [AddRadioGroup](SBProfile.md#procedure_addradiogroup_caption__tag__)).
To get the current index of a radiogroup control you can use [GetRadioGroup](SBProfile.md#function_getradiogroup_tag__).
**procedure AddButton(Caption, Tag);**
**Caption:** Pass the caption text to use for the button control
**Tag:** Pass the unique tag ID for this control
Adds a button control to the profile setup window.
This function should only be called from [ConfigSetupDisplay](ProfileConfigurationScripts.md#procedure_configsetupdisplay_).
NOTE: This function is not available when using the old Windows scripting.
**procedure AddCheckbox(Caption, Tag);**
**Caption:** Pass the caption text to use for the control
**Tag:** Pass the unique tag ID for this control
Adds a checkbox control to the profile setup window.
This function should only be called from [ConfigSetupDisplay](ProfileConfigurationScripts.md#procedure_configsetupdisplay_).
**procedure AddComboBox(ListOnly, Tag);**
**ListOnly:** If the combobox text cannot be edited then pass TRUE
**Tag:** Pass the unique tag ID for this control
Adds a combobox control to the profile setup window. To add items to the combobox use [AddComboBoxItem](SBProfile.md#procedure_addcomboboxitem_value__tag__).
This function should only be called from [ConfigSetupDisplay](ProfileConfigurationScripts.md#procedure_configsetupdisplay_).
**procedure AddComboBoxItem(Value, Tag);**
**Value:** The text to add to the combobox
**Tag:** The tag ID of the combobox to add the item to
Adds an item to a combobox control.
This function should only be called from [ConfigSetupDisplay](ProfileConfigurationScripts.md#procedure_configsetupdisplay_).
**procedure AddEdit(Caption, MaxLen, NumbersOnly, Password, Tag);**
**Caption:** Pass the caption text to use for the edit control
**MaxLen:** The maximum length of text that can be entered into the edit control
**NumbersOnly:** Pass as TRUE if the edit control is for numbers only (no negative signs or decimal points)
**Password:** Pass as TRUE if the edit control is for passwords
**Tag:** Pass the unique tag ID for this control
Adds an edit control to the profile setup window.
This function should only be called from [ConfigSetupDisplay](ProfileConfigurationScripts.md#procedure_configsetupdisplay_).
**procedure AddLabel(Caption, Tag);**
**Caption:** Pass the caption text to use for the label
**Tag:** Pass the unique tag ID for this label
Adds a label to the profile setup window.
This function should only be called from [ConfigSetupDisplay](ProfileConfigurationScripts.md#procedure_configsetupdisplay_).
**procedure AddRadioGroup(Caption, Tag);**
**Caption:** The caption to use for the control
**Tag:** Pass the unique tag ID for this control
Adds a radio group control to the profile setup window. To add items to the combobox use [AddRadioGroupItem](SBProfile.md#procedure_addradiogroupitem_caption__tag__).
This function should only be called from [ConfigSetupDisplay](ProfileConfigurationScripts.md#procedure_configsetupdisplay_).
**procedure AddRadioGroupItem(Caption, Tag);**
**Caption:** The caption text to use for the new radio item
**Tag:** The tag ID of the radio group to add the item to
Adds an item to a radio group control.
This function should only be called from [ConfigSetupDisplay](ProfileConfigurationScripts.md#procedure_configsetupdisplay_).
**procedure EnableControl(Enable, Tag);**
**Value:** Pass TRUE to enable the control, and FALSE to disable it
**Tag:** The tag ID of the control to enabled or disable
Enables or disables a control. For example, to disable or enable another control based of a checkbox being checked or not:
```
SBProfile.EnableControl(SBProfile.GetCheckbox(1), 2);
```
**Property Group**
Returns the TRUE if this is a group profile.
This property is read-only.
**Property Name**
Returns the name of the profile.
This property is read-only.
**Property UsesScript**
Returns the TRUE if this profile is using this script. For example, you may have a script that is both a configuration and run-time script. Although the script may be enabled as a configuration script, the profile that is currently being edited may not be using the profile as a run-time script.
This property is read-only.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SBProfiles
These are functions that can be accessed from scripts via the **SBProfiles** object. For example:
```
SBProfiles.IsValidProfileName('Example Name')
```
The **SBProfiles** object is accessible from all scripts and was introduced in SyncBackPro V11.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**function CopyingFromDestination(ProfileName);**
**ProfileName:** The name of the profile
**Return value:** TRUE if the profile is configured to copy from the destination
This function returns TRUE if the profile is copying from the destination, e.g. it is a backup from FTP.
**function DisableProfile(ProfileName,Reason);**
**ProfileName:** The profile to disable
**Reason:** The reason the profile has been disabled
**Return value:** TRUE if the profile name is disabled
This function disables a profile.
NOTE: This function was introduced in V12.
**function EnableProfile(ProfileName,Reason);**
**ProfileName:** The profile to enable
**Return value:** TRUE if the profile name is enabled
This function enabled a profile.
NOTE: This function was introduced in V12.
**function GetProfileType(ProfileName, var Description);**
**ProfileName:** The name of the profile
**Description:** Description is set to a description of the profile type
**Return value:** The type of the profile (EExactProfileTypes)
This function returns the type, and description, of a profile using the profiles name. To get a list of profiles use SBSystem.ProfileCount and SBSystem.GetProfileName
**function GetUserDefinedFolder(var Restricted);**
**Restricted:** Restricted is set to TRUE if only the user defined folder should be used
**Return value:** The user defined folder, or empty string if one is not being used
This function returns the user-defined folder to store profiles, if there is one. If the settings state that only the user defined folder should be used then Restricted is returned as TRUE.
**function IsValidProfileName(ProfileName);**
**ProfileName:** The name to test
**Return value:** TRUE if the profile name is valid
This function returns TRUE if a profile name is valid (legal) and can be used.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SBRunning
These are functions that can be accessed from scripts via the **SBRunning** object. For example:
```
SBLocation.Warning('Filename', 'Warning message');
```
The **SBRunning** object is only accessible from [Runtime](RuntimeScripts.md) scripts.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**function FolderHasFiles(Name);**
**Name:** The name of the folder (not including the base folder)
**Return value:** Always returns FALSE
This function is no longer used and will always return FALSE.
**function GetCurrentFileVer(Filename, Left);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to get the details of the left/source file
**Return value:** The current file version, or -2 if it isn't set to use a different version
This function returns the version of the file that is going to be restored, or -2 if it isn't set to use restore a version.
See the function [GetFileVerCount](SBRunning.md#function_getfilevercount_filename__left__) to get the number of versions a file has.
Note that the filenames do not include the base folder.
**function GetFileAction(Filename);**
**Name:** The name of the file (not including the base folder)
**Return value:** The [action](ScriptConstants.md#actions) to be performed
This function returns the action that will be performed for a particular file. Note that the filename should not include the base folder. If the file does not exist then 0 ([CACTION_ERROR](ScriptConstants.md#actions)) is returned.
For folders see [GetFolderAction](SBRunning.md#function_getfolderaction_name__)
**function GetFileAttrs(Filename, Left);**
**Filename:** The filename (not including the base folder)
**Left:** If True then return the attributes of the left/source file
**Return value:** The files attributes
This function returns a files filesystem attributes. Note that the filename should not include the base folder. If the file does not exist then -2 is returned. If the file has no file attributes, then -1 is returned.
To set a files attributes use [SetFileAttrs](SBRunning.md#function_setfileattrs_filename__left__newattrs__)
See also [GetFileDetailsEx](SBRunning.md#function_getfiledetailsex_filename__left__var_storedname__var_size__var_attrs__var_hash__var_moddatetime__var_createdatetime__var_ntfssec___var_exists__)
**function GetFileCreateDateTime(Filename, Left);**
**Filename:** The filename (not including the base folder)
**Left:** If True then return the create date & time of the left/source file
**Return value:** The files creation date & time
This function returns the creation date & time of a file (in the local timezone). Note that the filename should not include the base folder. If the file does not exist then 0.9 is returned. If the file has no date & time then 1.0 is returned.
To set a files createion date and time use [SetFileCreateDateTime](SBRunning.md#function_setfilecreatedatetime_filename__left__newattrs__)
See also [GetFileDetailsEx](SBRunning.md#function_getfiledetailsex_filename__left__var_storedname__var_size__var_attrs__var_hash__var_moddatetime__var_createdatetime__var_ntfssec___var_exists__)
**function GetFileDateTime(Filename, Left);**
**Filename:** The filename (not including the base folder)
**Left:** If True then return the date & time of the left/source file
**Return value:** The files last modification date & time
This function returns the last modification date & time of a file (in the local timezone). Note that the filename should not include the base folder. If the file does not exist then 0.9 is returned. If the file has no date & time then 1.0 is returned.
To set a files modification date and time use [SetFileDateTime](SBRunning.md#function_setfiledatetime_filename__left__newattrs__)
See also [GetFileDetailsEx](SBRunning.md#function_getfiledetailsex_filename__left__var_storedname__var_size__var_attrs__var_hash__var_moddatetime__var_createdatetime__var_ntfssec___var_exists__)
**function GetFileDetails(Filename, Left; var StoredName; var Size; var Attrs; var Hash; var ModDateTime; var Exists);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to get the details of the left/source file
**StoredName:** Deprecated, will always return an empty string
**Size:** The size of the file in bytes (note this is a string if using VBScript)
**Attr:** The filesystem attributes of the file
**Hash:** The CRC32 hash value of the file (as a string)
**ModDateTime:** The last modification date & time of the file (local timezone)
**Exists:** Returned as True if the file exists on either the left/source or right/destination
**Return value:** False if the file does not exist on either the left/source or right/destination
This function returns all the details of a file in a single call. It is more efficient to use this function if more than a single piece of information on a file is required. Note that the filename should not include the base folder.
It is recommended that you use the newer [GetFileDetailsEx](SBRunning.md#function_getfiledetailsex_filename__left__var_storedname__var_size__var_attrs__var_hash__var_moddatetime__var_createdatetime__var_ntfssec___var_exists__) function instead of this function.
If the file does not exist at all on either the left/source or right/destination then False is returned and Exists is set to False. However, if you request the details of the file on the left/source and the file only exists on the right/destination, for example, then False is returned but Exists is set to True. If Exists is True then the file does exist on the left/source or right/destination (or both).
For example:
```
DoesNotExist:=SBRunning.GetFileDetails(Filename, TRUE, StoredName, Size, Attrs, Hash, ModDateTime, Exists);
```
**function GetFileDetailsEx(Filename, Left; var StoredName; var Size; var Attrs; var Hash; var ModDateTime; var CreateDateTime; var NTFSSec,; var Exists);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to get the details of the left/source file
**StoredName:** Deprecated, will always return an empty string
**Size:** The size of the file in bytes (note this is a string if using VBScript)
**Attr:** The filesystem attributes of the file
**Hash:** The CRC32 hash value of the file (as a string)
**ModDateTime:** The last modification date & time of the file (local timezone)
**CreateDateTime:** The creation date & time of the file (local timezone)
**NTFSSec:** The NTFS security of the file (string format)
**Exists:** Returned as True if the file exists on either the left/source or right/destination
**Return value:** False if the file does not exist on either the left/source or right/destination
This function returns all the details of a file in a single call. It is more efficient to use this function if more than a single piece of information on a file is required. Note that the filename should not include the base folder.
If the file does not exist at all on either the left/source or right/destination then False is returned and Exists is set to False. However, if you request the details of the file on the left/source and the file only exists on the right/destination, for example, then False is returned but Exists is set to True. If Exists is True then the file does exist on the left/source or right/destination (or both).
For example:
```
DoesNotExist:=SBRunning.GetFileDetailsEx(Filename, True, StoredName, Size, Attrs, Hash, ModDateTime, CreateDateTime, NTFSSec, Exists);
```
**function GetFileDiff(Filename);**
**Filename:** The filename (not including the base folder)
**Return value:** The [difference](ScriptConstants.md#differences) between the files
This function returns the differences between a file in the left/source and/or right/destination. Note that the filename should not include the base folder. If the file does not exist then 0 ([CDIFF_IDENTICAL](ScriptConstants.md#differences)) is returned.
For folders see [GetFolderDiff](SBRunning.md#function_getfolderdiff_name__)
**function GetFileHash(Filename, Left);**
**Filename:** The filename (not including the base folder)
**Left:** If True then return the hash value of the left/source file
**Return value:** The files CRC32 hash value (as a string)
This function returns the calculated CRC32 hash value (in string format) of a file. This function does not calculate the hash value, it merely returns the hash value that has already been calculated. Note that the filename should not include the base folder. If the file does not exist, or has no CRC32 hash value, then an empty string is returned.
To set a files hash value use [SetFileHash](SBRunning.md#function_setfilehash_filename__left__newhash__)
See also [GetFileDetailsEx](SBRunning.md#function_getfiledetailsex_filename__left__var_storedname__var_size__var_attrs__var_hash__var_moddatetime__var_createdatetime__var_ntfssec___var_exists__), [MD5](SBSystem.md#function_md5_filename__), and [CRC32](SBSystem.md#function_crc32_filename__)
**function GetFilename(Row);**
**Row:** The row number of the file to retrieve
**Return value:** The filename or an empty string on failure
This function returns the name of a file based on its row number. Row numbers start at zero and end at [FileCount](SBRunning.md#property_filecount) - 1 (as it is zero based).
The filename can be used with functions such as [GetFileDetailsEx](SBRunning.md#function_getfiledetailsex_filename__left__var_storedname__var_size__var_attrs__var_hash__var_moddatetime__var_createdatetime__var_ntfssec___var_exists__).
**function GetFileNTFSSecurity(Filename, Left);**
**Filename:** The filename (not including the base folder)
**Left:** If True then return the NTFS security of the left/source file
**Return value:** The files NTFS security (as a string)
This function returns the NTFS security (in string format) of a file. Note that the filename should not include the base folder. If the file does not exist, or has no NTFS security, then an empty string is returned.
To set a files NTFS security use [SetFileNTFSSecurity](SBRunning.md#function_setfilentfssecurity_filename__left__newntfssecurity__)
See also [GetFileDetailsEx](SBRunning.md#function_getfiledetailsex_filename__left__var_storedname__var_size__var_attrs__var_hash__var_moddatetime__var_createdatetime__var_ntfssec___var_exists__)
**function GetFileSize(Filename, Left);**
**Filename:** The filename (not including the base folder)
**Left:** If True then return the size of the left/source file
**Return value:** The files size in bytes
This function returns the size of a file (in bytes). Note that the filename should not include the base folder. If the file does not exist then -2 is returned. If the file size is unknown then -1 is returned. In VBScript this function returns a string to avoid the 32-bit integer limit in VBScript.
To set a files size use [SetFileSize](SBRunning.md#function_setfilesize_filename__left__newsize__)
See also [GetFileDetailsEx](SBRunning.md#function_getfiledetailsex_filename__left__var_storedname__var_size__var_attrs__var_hash__var_moddatetime__var_createdatetime__var_ntfssec___var_exists__)
**function GetFileVerCount(Filename, Left);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to get the details of the left/source file
**Return value:** The number of versions a file has, or zero if it has no versions
This function returns the number of versions a file has, or zero if it has no versions. Note that the result includes delta hash files, which aren't technically versions.
See the function [GetCurrentFileVer](SBRunning.md#function_getcurrentfilever_filename__left__) to get the version number which will be restored.
Note that the filenames do not include the base folder.
**function GetFolderAction(Name);**
**Name:** The name of the folder (not including the base folder)
**Return value:** The [action](ScriptConstants.md#actions) to be performed
This function returns the action that will be performed for a particular folder. Note that the folder name should not include the base folder. If the folder does not exist then 0 ([CACTION_ERROR](ScriptConstants.md#actions)) is returned.
For files see [GetFileAction](SBRunning.md#function_getfileaction_filename__)
**function GetFolderAttrs(Filename, Left);**
**Name:** The folder (not including the base folder)
**Left:** If True then return the attributes of the left/source folder
**Return value:** The folders attributes
This function returns a folders filesystem attributes. Note that the path should not include the base folder. If the folder does not exist then -2 is returned. If the folder has no attributes, then -1 is returned.
To set a files attributes use [SetFolderAttrs](SBRunning.md#function_setfolderattrs_name__left__newattrs__)
See also [GetFolderDetailsEx](SBRunning.md#function_getfolderdetailsex_foldername__left__var_storedname__var_exists__)
**function GetFolderCreateDateTime(Name, Left);**
**Name:** The folder (not including the base folder)
**Left:** If True then return the create date & time of the left/source folder
**Return value:** The folders creation date & time
This function returns the creation date & time of a folder (in the local timezone). Note that the path should not include the base folder. If the folder does not exist then 0.9 is returned. If the folder has no date & time then 1.0 is returned.
To set a folders createion date and time use [SetFolderCreateDateTime](SBRunning.md#function_setfoldercreatedatetime_name__left__newdate__)
See also [GetFolderDetailsEx](SBRunning.md#function_getfolderdetailsex_foldername__left__var_storedname__var_exists__)
**function GetFolderDateTime(Name, Left);**
**Name:** The folder (not including the base folder)
**Left:** If True then return the date & time of the left/source folder
**Return value:** The folders last modification date & time
This function returns the last modification date & time of a folder (in the local timezone). Note that the path should not include the base folder. If the folder does not exist then 0.9 is returned. If the folder has no date & time then 1.0 is returned.
To set a folders modification date and time use [SetFolderDateTime](SBRunning.md#function_setfolderdatetime_name__left__newdate__)
See also [GetFolderDetailsEx](SBRunning.md#function_getfolderdetailsex_foldername__left__var_storedname__var_exists__)
**function GetFolderDetails(Foldername, Left; var StoredName; var Exists);**
**Foldername:** The folder name (not including the base folder)
**Left:** Pass True to get the details of the left/source folder
**StoredName:** Deprecated, will always return an empty string
**Exists:** Returned as True if the folder exists on either the left/source or right/destination
**Return value:** False if the folder does not exist on either the left/source or right/destination
This function returns all the details of a folder in a single call. It is more efficient to use this function if more than a single piece of information on a folder is required. Note that the folder name should not include the base folder.
It is recommended that you use the newer [GetFolderDetailsEx](SBRunning.md#function_getfolderdetailsex_foldername__left__var_storedname__var_exists__) function instead of this function.
If the folder does not exist at all on either the left/source or right/destination then False is returned and Exists is set to False. However, if you request the details of the folder on the left/source and the folder only exists on the right/destination, for example, then False is returned but Exists is set to True. If Exists is True then the folder does exist on the left/source or right/destination (or both).
For example:
```
DoesNotExist:=SBRunning.GetFolderDetails(Foldername, True, StoredName, Exists);
```
**function GetFolderDetailsEx(Foldername, Left; var StoredName; var Exists);**
**Foldername:** The folder name (not including the base folder)
**Left:** Pass True to get the details of the left/source folder
**StoredName:** Deprecated, will always return an empty string
**Attr:** The filesystem attributes of the folder
**ModDateTime:** The last modification date & time of the folder (local timezone)
**CreateDateTime:** The creation date & time of the folder (local timezone)
**NTFSSec:** The NTFS security of the folder (string format)
**Exists:** Returned as True if the folder exists on either the left/source or right/destination
**Return value:** False if the folder does not exist on either the left/source or right/destination
This function returns all the details of a folder in a single call. It is more efficient to use this function if more than a single piece of information on a folder is required. Note that the folder name should not include the base folder.
If the folder does not exist at all on either the left/source or right/destination then False is returned and Exists is set to False. However, if you request the details of the folder on the left/source and the folder only exists on the right/destination, for example, then False is returned but Exists is set to True. If Exists is True then the folder does exist on the left/source or right/destination (or both).
For example:
```
DoesNotExist:=SBRunning.GetFolderDetailsEx(Foldername, True, StoredName, Attr, ModDateTime, CreateDateTime, NTFSSec, Exists);
```
**function GetFolderDiff(Name);**
**Name:** The name of the folder (not including the base folder)
**Return value:** The [difference](ScriptConstants.md#differences) between the folders
This function returns the differences between a folder in the left/source and/or right/destination. Note that the folder name should not include the base folder. If the folder does not exist then 0 ([CDIFF_IDENTICAL](ScriptConstants.md#differences)) is returned.
For files see [GetFileDiff](SBRunning.md#function_getfilediff_filename__)
**function GetFoldername(Row);**
**Row:** The row number of the folder to retrieve
**Return value:** The name or an empty string on failure
This function returns the name of a folder based on its row number. Row numbers start at zero and end at [FolderCount](SBRunning.md#property_foldercount) - 1 (as it is zero based).
The filename can be used with functions such as [GetFolderDetails](SBRunning.md#function_getfolderdetails_foldername__left__var_storedname__var_exists__).
**function GetFolderNTFSSecurity(Filename, Left);**
**Filename:** The folder path (not including the base folder)
**Left:** If True then return the NTFS security of the left/source folder
**Return value:** The folders NTFS security (as a string)
This function returns the NTFS security (in string format) of a folder. Note that the path should not include the base folder. If the folder does not exist, or has no NTFS security, then an empty string is returned.
To set a folders NTFS security use [SetFolderNTFSSecurity](SBRunning.md#function_setfolderntfssecurity_name__left__newsecurity__)
See also [GetFolderDetailsEx](SBRunning.md#function_getfolderdetailsex_foldername__left__var_storedname__var_exists__)
**function GetMovedName(Filename);**
**Filename:** The filename (not including the base folder)
**Return value:** The file it has been moved from or to
This function returns the name a file has been moved from or to. For example, if SyncBack detects that file \folder\file.txt has been moved to \somewhere\else.txt then calling GetMovedName('\folder\file.txt') will return '\somewhere\else.txt' and calling GetMovedName('\somewhere\else.txt') will return '\folder\file.txt'
Note that the filenames do not include the base folder.
If the file has not been moved, or does not exist, then an empty string is returned.
**function GetRuntimeValue(ValueToGet);**
**ValueToGet:** The runtime value to returm
**Return value:** The value as a signed 32-bit integer
Returns a runtime value for the current profile. For more details see the description of the [GetRuntimeValueStr](SBRunning.md#function_getruntimevaluestr_valuetoget__) function.
Note that this function returns 32-bit values, so if the value is 64-bit you should instead use the [GetRuntimeValueStr](SBRunning.md#function_getruntimevaluestr_valuetoget__) function to return it as a string.
**function GetRuntimeValueStr(ValueToGet);**
**ValueToGet:** The runtime value to returm
**Return value:** The value as a string
Returns a runtime value for the current profile. This is useful to retrieve constantly updating information about the current profile, e.g. how many bytes it has copied so far. Sometimes this information is also available using variables, but often the variables aren't updated until certain stages have completed.
In VBScript, the value is returned as a string to get around 64-bit limitations in VBScript. Some of the values are 32-bit integers so they can safely be retrieved using the [GetRuntimeValue](SBRunning.md#function_getruntimevalue_valuetoget__) function instead.
ValueToGet can be one of the following:
The following counters are updated during the scanning stage. A file or folder with the same name on both the source/left and destination/right is counted as one file or folder and not two. These are signed 32-bit integers.
0: The number of files scanned.
62: The number of directories scanned.
The following counters are updated during the comparison stage (what the differences are). A file or folder with the same name on both the source/left and destination/right is counted as one file or folder and not two. These are signed 32-bit integers.
1: The number of files that have been changed
2: The number of files whose contents have changed (hash values are different)
3: The number of files that are only in the destination/right
4: The number of files that are only in the source/left
63: The number of files that are in the source/left and destination/right
5: The number of files whose modification date & time have changed
6: The number of files whose size has changed
7: The number of files whose attributes have changed
8: The number of files whose name is same but the case has changed
9: The number of directories that have been changed
10: The number of directories that are only in destination/right
11: The number of directories that are only in source/left
12: The number of files that are identical files or only have versions
64: The number of files whose creation date & time have changed
65: The number of files whose NTFS file security have changed
68: The number of files whose last access date & time have changed
71: The number of files whose hard links changed
74: The number of files whose symbolic link changed
The following are comparison counters that indicate what is left to be done. They are set during the comparison stage and decremented as the profile runs. These are signed 32-bit integers.
13: The number of files to skip
14: The number of files to be prompted on
15: The number of files to delete from source/left
16: The number of files to delete from destination/right
17: The number of files to copy from source/left
18: The number of files to copy from destination/right
19: The number of files to move from source/left
20: The number of files to move from destination/right
21: The number of files in the source/left to have date & time, attributes, and/or case changed
22: The number of files in the destination/right to have date & time, attributes, and/or case changed
23: The number of files to restore old versions of in source/left
24: The number of files to restore old versions of in destination/right
25: The number of files to be renamed on the source/left
26: The number of files to be renamed on the destination/right
The following are comparison counters that indicate what is left to be done. They are set during the comparison stage and decremented as the profile runs. These are signed 64-bit integers.
27: The total number of bytes to be copied to the source/left. This includes files to be moved to the source/left.
28: The total number of bytes to be copied to the destination/right. This includes files to be moved to the destination/right.
29: The total number of bytes to delete from the source/left. This includes files to be moved to the destination/right.
30: The total number of bytes to delete from the destination/right. This includes files to be moved to the source/left.
The following are results counters that indicate what has been done so far. They are incremented while the profile is running. These are signed 32-bit integers.
31: The number of files skipped so far
32: The number of files and folders prompted on so far
33: The number of files and folders renamed on the source/left so far
34: The number of files and folders renamed on the destination/right so far
35: The number of files deleted from the source/left so far
36: The number of files deleted from the destination/right so far
37: The number of files copied from the source/left so far
38: The number of files copied from the destination/right so far
39: The number of files moved from the source/left so far
40: The number of files moved from the destination/right so far
41: The number of files on the source/left that so far have had their last modification date and time updated
42: The number of files on the destination/right that so far have had their last modification date and time updated
43: The number of files on the source/left that so far have had their attributes updated
44: The number of files on the destination/right that so far have had their attributes updated
45: The number of files on the source/left that so far have old versions restored
46: The number of files on the destination/right that so far have old versions restored
66: The number of files on the source/left that so far have had their security updated
67: The number of files on the destination/right that so far have had their security updated
69: The number of files on the source/left that so far have been versioned
70: The number of files on the destination/right that so far have been versioned
72: The number of hard links created on the source/left so far
73: The number of hard links created on the destination/right so far
75: The number of symbolic links created on the source/left so far
76: The number of symbolic links created on the destination/right so far
77: The number of files downloaded using HTTP instead of FTP
The following are bytes counters that indicate what has been done so far. They are incremented while the profile is running. These are signed 64-bit integers.
47: The total number of bytes copied to the source/left so far. This includes files being moved to the source/left.
48: The total number of bytes copied to the destination/right so far. This includes files being moved to the destination/right.
49: The total number of bytes deleted from the source/left so far. This includes files being moved from the source/left.
50: The total number of bytes deleted from the destination/right so far. This includes files being moved from the destination/right.
51: The total number of bytes replaced (overwritten) on the source/left so far.
52: The total number of bytes replaced (overwritten) on the destination/right so far.
The following are error counters that indicate the number of errors so far. They are incremented while the profile is running. These are signed 32-bit integers.
53: The total number of compression errors so far
54: The total number of files that have failed to be copied, deleted, or moved so far
55: The total number of files that cannot have their hash value calculated so far
56: The total number of non-critical errors so far (Deprecated: use 61 instead, for warnings)
61: The total number of warnings so far
The following are various values that are 64-bit signed integers.
57: The total number of bytes free initially on the source/left. This is set at the beginning of the profile and not updated. If the bytes free cannot be retrieved then -1 is returned.
58: The total number of bytes free initially on the destination/right. This is set at the beginning of the profile and not updated. If the bytes free cannot be retrieved then -1 is returned.
59: The number of files that will be updated. This is not changed once set.
60: The number of kilo-bytes that will be updated. This is not changed once set.
**function GetStoredFileName(Filename, Left);**
**Filename:** The filename (not including the base folder)
**Left:** If True then return the stored name of the left/source file
**Return value:** The files stored filename
This function is deprecated and will always return the folders name.
This function returns the stored (actual) filename of a file. Note that the filename should not include the base folder. If the file does not exist then an empty string is returned. If it doesn't have a stored name then it's normal filename is returned.
See the function [GetStoredFolderName](SBRunning.md#function_getstoredfilename_filename__left__) for information on what a stored name is.
See also [GetFileDetailsEx](SBRunning.md#function_getfiledetailsex_filename__left__var_storedname__var_size__var_attrs__var_hash__var_moddatetime__var_createdatetime__var_ntfssec___var_exists__)
**function GetStoredFolderName(Filename, Left);**
**Filename:** The folder name (not including the base folder)
**Left:** If True then return the stored name of the left/source folder
**Return value:** The folders stored filename
This function is deprecated and will always return the folders name.
This function returns the stored (actual) name of a folder. Note that the filename should not include the base folder. If the folder does not exist then an empty string is returned. If it doesn't have a stored name then it's normal name is returned.
A folder may have a different name on one side, e.g. the right/destination name may be different from the left/source name.
For example:
```
GetStoredFolderName('\Folder\A long folder name\', FALSE);
```
may return "\FOLDER\ALONGFOL"
To get the stored name of a file use [GetStoredFileName](SBRunning.md#function_getstoredfilename_filename__left__)
**function GetVersionDetails(Filename, Left, VersionNumber; var VersionFilename; var Size; var Attrs; var ModDateTime; var WhenVersioned);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to get the details of the left/source file version
**VersionFilename:** The filename for the version of the file
**Size:** The size of the file in bytes (note this is a string if using VBScript)
**Attr:** The filesystem attributes of the file
**ModDateTime:** The last modification date & time of the file (local timezone)
**WhenVersioned:** When the version was created (local timezone)
**Return value:** False if the file version does not exist
This function is deprecated. Use [GetVersionDetailsEx](SBRunning.md#function_getversiondetailsex_filename__left__versionnumber__var_versionfilename__var_size__var_attrs__var_moddatetime__var_createdatetime__var_whenversioned__var_versiontype__) instead.
This function returns all the details of for a specific version of a file. Note that the filename should not include the base folder. Version numbers are zero based, with zero being the oldest version. Passing -1 as the version number will get you the newest version.
If the file or version does not exist then False is returned.
For example:
```
DoesNotExist:=SBRunning.GetVersionDetails(Filename, TRUE, 0, VersionName, Size, Attrs, ModDateTime, WhenVersioned);
```
See also [GetFileVerCount](SBRunning.md#function_getfilevercount_filename__left__) and [GetCurrentFileVer](SBRunning.md#function_getcurrentfilever_filename__left__)
**function GetVersionDetailsEx(Filename, Left, VersionNumber; var VersionFilename; var Size; var Attrs; var ModDateTime; var CreateDateTime; var WhenVersioned; var VersionType);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to get the details of the left/source file version
**VersionFilename:** The filename for the version of the file
**Size:** The size of the file in bytes (note this is a string if using VBScript)
**Attr:** The filesystem attributes of the file
**ModDateTime:** The last modification date & time of the file (local timezone)
**CreateDateTime:** The file creation date & time (local timezone)
**WhenVersioned:** When the version was created (local timezone)
**VersionType:** The type of version file. It could be a hash file, for example. See ([TVerStoreType](ScriptConstants.md#tverstoretype)).
**Return value:** False if the file version does not exist
This function returns all the details of for a specific version of a file. Note that the filename should not include the base folder. Version numbers are zero based, with zero being the oldest version. Passing -1 as the version number will get you the newest version.
If the file or version does not exist then False is returned.
For example:
```
DoesNotExist:=SBRunning.GetVersionDetailsEx(Filename, TRUE, 0, VersionName, Size, Attrs, ModDateTime, CreateDateTime, WhenVersioned, VersionType);
```
See also [GetFileVerCount](SBRunning.md#function_getfilevercount_filename__left__) and [GetCurrentFileVer](SBRunning.md#function_getcurrentfilever_filename__left__)
**function LeftAttribsToStr(Attrs);**
**Attrs:** The attributes of the file or folder
**Return value:** The string representation of the attributes
Returns a string representation of the attributes of a file or folder. This use the location itself. For example, FTP attributes are not the same as Windows attributes.
See also [RightAttribsToStr](SBRunning.md#function_rightattribstostr_attrs__)
**function LeftFileExists(Filename);**
**Filename:** The filename to check for
**Return value:** True if the file exists in the left/source
Returns True if the file exists in the left/source. Note that the filename should not include the base folder.
See also [LeftFolderExists](SBRunning.md#function_leftfolderexists_name__) and [RightFileExists](SBRunning.md#function_rightfileexists_filename__)
**function LeftFolderExists(Name);**
**Name:** The name of the folder to check for
**Return value:** True if the folder exists in the left/source
Returns True if the folder exists in the left/source. Note that the name should not include the base folder.
See also [RightFolderExists](SBRunning.md#function_rightfolderexists_name__) and [LeftFileExists](SBRunning.md#function_leftfileexists_filename__)
**function RightAttribsToStr(Attrs);**
**Attrs:** The attributes of the file or folder
**Return value:** The string representation of the attributes
Returns a string representation of the attributes of a file or folder. This use the location itself. For example, FTP attributes are not the same as Windows attributes.
See also [LeftAttribsToStr](SBRunning.md#function_leftattribstostr_attrs__)
**function RightFileExists(Filename);**
**Filename:** The filename to check for
**Return value:** True if the file exists in the right/destination
Returns True if the file exists in the right/destination. Note that the filename should not include the base folder.
See also [RightFolderExists](SBRunning.md#function_rightfolderexists_name__) and [LeftFileExists](SBRunning.md#function_leftfileexists_filename__)
**function RightFolderExists(Name);**
**Name:** The name of the folder to check for
**Return value:** True if the folder exists in the right/destination
Returns True if the folder exists in the right/destination. Note that the name should not include the base folder.
See also [LeftFolderExists](SBRunning.md#function_leftfolderexists_name__) and [RightFileExists](SBRunning.md#function_rightfileexists_filename__)
**function SetFileAttrs(Filename, Left, NewAttrs);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to set the attributes of the left/source file
**NewAttrs:** The file attributes to set
**Return value:** The files attributes, or -1 on failure
This function sets the filesystem attributes of a file. Note that the filename should not include the base folder.
This function does not actually change the attributes of the file. It instead tells SyncBack what the attributes of the file are.
See also [GetFileAttrs](SBRunning.md#function_getfileattrs_filename__left__)
**function SetFileCreateDateTime(Filename, Left, NewAttrs);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to set the date & time of the left/source file
**NewDateTime:** The date & time to use (local timezone)
**Return value:** The date & time of the file, or 1.0 on failure
This function sets the creation date & time of a file. Note that the filename should not include the base folder.
This function does not actually change the creation date & time of the file. It instead tells SyncBack what the creation date & time of the file is.
See also [GetFileCreateDateTime](SBRunning.md#function_getfilecreatedatetime_filename__left__)
**function SetFileDateTime(Filename, Left, NewAttrs);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to set the date & time of the left/source file
**NewDateTime:** The date & time to use (local timezone)
**Return value:** The date & time of the file, or 1.0 on failure
This function sets the last modification date & time of a file. Note that the filename should not include the base folder.
This function does not actually change the last modification date & time of the file. It instead tells SyncBack what the last modification date & time of the file is.
See also [GetFileDateTime](SBRunning.md#function_getfiledatetime_filename__left__)
**function SetFileHash(Filename, Left, NewHash);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to set the hash value of the left/source file
**NewHash:** The CRC32 hash value of the file
**Return value:** The hash value of the file, or empty string on failure
This function sets the CRC32 hash value (string format) of a file. Note that the filename should not include the base folder.
This function does not actually change the hash value of the file. It instead tells SyncBack what the hash value of the file is. Note that the hash value is not used unless the profile is configured to use hashing for file comparisons.
See also [GetFileHash](SBRunning.md#function_getfilehash_filename__left__)
**function SetFileNTFSSecurity(Filename, Left, NewNTFSSecurity);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to set the security of the left/source file
**NewNTFSSecurity:** The NTFS security of the file
**Return value:** The NTFS security of the file, or empty string on failure
This function sets the NTFS security (string format) of a file. Note that the filename should not include the base folder.
This function does not actually change the security of the file. It instead tells SyncBack what the security of the file is.
See also [GetFileNTFSSecurity](SBRunning.md#function_getfilentfssecurity_filename__left__)
**function SetFileSize(Filename, Left, NewSize);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to set the size of the left/source file
**NewSize:** The size of the file
**Return value:** The size of the file, or -1 on failure
This function sets the size of a file. Note that the filename should not include the base folder. To avoid the 32-bit limit in VBScript the NewSize is a string, and so is the return value.
This function does not actually change the size of the file. It instead tells SyncBack what the size of the file is.
See also [GetFileSize](SBRunning.md#function_getfilesize_filename__left__)
**function SetFileVersion(Filename, Left, NewVersion);**
**Filename:** The filename (not including the base folder)
**Left:** Pass True to set the details of the left/source file
**NewVersion:** The version number to use
**Return value:** The current file version, -1 if an error occurred, or -2 if it isn't set to use a version
This function sets the current version of a file. Version numbers are zero based, with zero being the oldest version. Passing -1 as the version number will get you the newest version. Passing -2 as the version number will set it so no version is restored.
The only place you can change the version of a file is in the call to [RunPreCopyCheck](RuntimeScripts.md#function_runprecopycheck_). If SetFileVersion is called before or after that point then the results are undefined.
You cannot change the current version of a file if the file is to be deleted or replaced, for example. In this case the function will return -1. It will also fail if you try and change the version to a delta hash file.
Note that the filenames do not include the base folder.
See the functions [GetFileVerCount](SBRunning.md#function_getfilevercount_filename__left__) and [GetCurrentFileVer](SBRunning.md#function_getcurrentfilever_filename__left__)
**function SetFolderAttrs(Name, Left, NewAttrs);**
**Name:** The folder (not including the base folder)
**Left:** Pass True to set the attributes of the left/source folder
**NewAttrs:** The folder attributes to set
**Return value:** The folder attributes, or -1 on failure
This function sets the filesystem attributes of a folder. Note that the path should not include the base folder.
This function does not actually change the attributes of the folder. It instead tells SyncBack what the attributes of the folder are.
See also [GetFolderAttrs](SBRunning.md#function_getfolderattrs_filename__left__)
**function SetFolderCreateDateTime(Name, Left, NewDate);**
**Name:** The folder (not including the base folder)
**Left:** Pass True to set the date & time of the left/source folder
**NewDate:** The creation date & time to use (local timezone)
**Return value:** The creation date & time of the folder, or 1.0 on failure
This function sets the creation date & time of a folder. Note that the path should not include the base folder.
This function does not actually change the creation date & time of the folder. It instead tells SyncBack what the creation date & time of the folder is.
See also [GetFolderCreateDateTime](SBRunning.md#function_getfoldercreatedatetime_name__left__)
**function SetFolderDateTime(Name, Left, NewDate);**
**Name:** The folder (not including the base folder)
**Left:** Pass True to set the date & time of the left/source folder
**NewDate:** The modification date & time to use (local timezone)
**Return value:** The modification date & time of the folder, or 1.0 on failure
This function sets the modification date & time of a folder. Note that the path should not include the base folder.
This function does not actually change the modification date & time of the folder. It instead tells SyncBack what the modification date & time of the folder is.
See also [GetFolderCreateDateTime](SBRunning.md#function_getfoldercreatedatetime_name__left__)
**function SetFolderNTFSSecurity(Name, Left, NewSecurity);**
**Name:** The folder (not including the base folder)
**Left:** Pass True to set the security of the left/source folder
**NewSecurity:** The NTFS security of the folder
**Return value:** The NTFS security of the folder, or empty string on failure
This function sets the NTFS security (string format) of a folder. Note that the path should not include the base folder.
This function does not actually change the security of the folder. It instead tells SyncBack what the security of the folder is.
See also [GetFolderNTFSSecurity](SBRunning.md#function_getfolderntfssecurity_filename__left__)
**function Sleep(Seconds);**
**Seconds:** The number of seconds to sleep
**Return value:** True if the user has aborted the profile
Sleep for the specified number of seconds, but also checks to see if the profile has aborted while sleeping. If the user has aborted the profile run then the function returns True immediately, i.e. the sleep is aborted.
**procedure CriticalError(Filename, TheError, IncErrorCount);**
**Filename:** The filename of the file the error relates to
**TheError:** The error message
**IncErrorCount:** Pass True if the critical error count should be incremented
This subroutine records a critical error in the profiles log file. The error must be related to a particular file. Note that the filename should not include the base folder. For example, if the base folder is C:\My Files\, and the file is C:\My Files\Folder\Filename.txt, then the filename to pass should be \Folder\Filename.txt
A critical error means the profile has failed. The profile will continue running but once completed its last run status will be 'Failure'.
For example:
```
CriticalError('\folder\file.txt', 'Your wife says you cannot copy this file', TRUE);
```
See also [NotCriticalError](SBRunning.md#procedure_notcriticalerror_filename__theerror__) and [Warning](SBRunning.md#procedure_warning_filename__thewarning__)
**procedure DebugOut(Str1, Str2, Level);**
**Str1:** Typically this is a filename or refers to the object the error is about
**Str2:** Typically this is the error message
**Level:** The severity of the message
This subroutine records a message in the debug log. Note that nothing is recorded if debug output is not enabled. Level refers to the severity of the message (see below). The user can set the minimum level a message should be, e.g. they could filter out anything above level 5.
The debug levels are:
ELLError = 0
ELLWarning = 5
ELLInfo = 10
For example:
```
DebugOut('\folder\file.txt', 'Klingons off the starboard bow', ELLError);
```
To record a message in the Windows event log use [EventOut](SBRunning.md#procedure_eventout_msg__level__)
**procedure EventOut(Msg, Level);**
**Msg:** The message to record in the Windows event log
**Level:** The severity of the message
This subroutine records an event in the Windows Applications Event Log. Level refers to the severity of the message (1=error, 5=warning, 10=information). The even is only recorded if debug output is enabled.
The levels are:
ELLError = 0
ELLWarning = 5
ELLInfo = 10
For example:
```
EventOut('The toilet seat has not been left down', 1);
```
To record a message in the debug log for the profile use [DebugOut](SBRunning.md#procedure_debugout_str1__str2__level__)
**procedure Exception(ExceptionReport);**
**ExceptionReport:** The exception report
This subroutine records an exception report in the profiles log file. An exception report is typically a number of lines of text that detail where an unexpected error occurred in the program/script. This is usally done when something serious unexpectedly happens in the program, e.g. an attempt is made to read from a nil pointer.
To record a message in the debug log for the profile use [DebugOut](SBRunning.md#procedure_debugout_str1__str2__level__)
To record a message in the Windows event log use [EventOut](SBRunning.md#procedure_eventout_msg__level__)
**procedure NotCriticalError(Filename, TheError);**
**Filename:** The filename of the file the error relates to
**TheError:** The error message
This subroutine has been deprecated. Please use [Warning](SBRunning.md#procedure_warning_filename__thewarning__) instead.
See also [CriticalError](SBRunning.md#procedure_criticalerror_filename__theerror__incerrorcount__)
**procedure RebootRequired;**
This subroutine tells SyncBack that the computer should be rebooted aftet the profile has completed. For example, if a file can only be replaced on reboot then this subroutine should be called. Note that a reboot is not guaranteed to occur as the user may decide not to reboot.
**procedure SysLogMessage(Msg, Severity);**
**Msg:** The message to send to the SysLog server
**Severity:** The severity of the message (ranging from 0 to 7)
This subroutine sends a message to the SysLog server. Note that nothing is sent unless a SysLog server has been configured to be used. The severity is an integer value ranging from 0 (ESysLogEmergency) to 7 (ESysLogDebug).
The severity levels are:
ESysLogEmergency = The system is unusable
ESysLogAlert = Action must be taken immediately
ESysLogCritical = Critical conditions exist
ESysLogError = Error conditions exist
ESysLogWarning = Warning conditions exist
ESysLogNotice = Normal but significant condition
ESysLogInformational = Informative message
ESysLogDebug = Debug-level messages
For example:
```
SysLogMessage(Klingons off the starboard bow', ESysLogError);
```
To record a message in the Windows event log use [EventOut](SBRunning.md#procedure_eventout_msg__level__)
**procedure Warning(Filename, TheWarning);**
**Filename:** The filename of the file the warning relates to
**TheError:** The warning message
This subroutine records a warning message in the profiles log file. The warning must be related to a particular file. Note that the filename should not include the base folder. For example, if the base folder is C:\My Files\, and the file is C:\My Files\Folder\Filename.txt, then the filename to pass should be \Folder\Filename.txt
A warning does not mean the profile has failed.
For example:
```
Warning('\folder\file.txt', 'The file has your credit card number in it');
```
See also [CriticalError](SBRunning.md#procedure_criticalerror_filename__theerror__incerrorcount__)
**Property Abort**
Returns TRUE if the profile is being aborted. Set it to TRUE to abort the profile. Note that the abort may not be immediate, and an abort cannot be aborted (i.e. once True you cannot change it to False).
**Property DifferentialBackup**
Returns True if the profile is being run as a differential backup. If it is then that also implies it is a Fast Backup profile.
This property is read-only.
See also [FastBackupType](SBRunning.md#property_fastbackuptype) and [DynamicFastBackup](SBRunning.md#property_dynamicfastbackup)
**Property DynamicFastBackup**
Returns True if the profile is being run as a dynamnic fast backup backup.
This property is read-only.
See also [FastBackupType](SBRunning.md#property_fastbackuptype) and [DifferentialBackup](SBRunning.md#property_differentialbackup)
**Property FastBackupType**
Returns the type of [Fast Backup](SBRunning.md#property_fastbackuptype) the profile is being run as:
EFB_NONE = Not using Fast Backup
EFB_SYNCBACK = The original SyncBack Fast Backup method
EFB_ARCHIVE = Archive attribute Fast Backup
EFB_BACKUPEMAIL = Backup of email (not for POP3)
This property is read-only.
See also [DynamicFastBackup](SBRunning.md#property_dynamicfastbackup) and [DifferentialBackup](SBRunning.md#property_differentialbackup)
**Property FileCount**
Returns the number of files in the profile.
This property is read-only.
For the number of folders see [FolderCount](SBRunning.md#property_foldercount)
**Property FolderCount**
Returns the number of folders (directories) in the profile.
This property is read-only.
For the number of folders see [FileCount](SBRunning.md#property_filecount)
**Property FullBackup**
Returns TRUE if this is a full-backup profile run. The value can be set to TRUE or FALSE, but note that any change to this value will only be relevant for the next run of the profile. Because of this any change made will not be reflected in reading the value, i.e. if FullBackup returns FALSE and you set it to TRUE then it will still return FALSE. You can check the current value by using [GetProperty](SBVariables.md#function_getproperty_propname__propdefault__internal__), e.g. SBVariables.GetProperty("S_FULLBACKUP", "N", True)
The setting will be automatically reset to FALSE after the profile has run (if it was a re-scan). Because of this it is recommend that you set the value in a call to [RunProfileResult](RuntimeScripts.md#procedure_runprofileresult_profileresult__errmsg__) as this is called after any change the program makes to the value.
See also [FastBackupType](SBRunning.md#property_fastbackuptype)
**Property GroupName**
Returns the name of the group profile, or empty string if the profile is not being run as part of a group.
This property is read-only.
See also [VisualGroupName](SBRunning.md#property_visualgroupname)
**Property IntegrityCheck**
Returns True if the profile is being run in integrity check mode. Note that when run in integrity check mode it is also considered a simulated run.
This property is read-only.
See also [Simulated](SBRunning.md#property_simulated)
**Property LeftAbilities**
Returns the [abilities](ScriptConstants.md#abilities) of the source/left location.
This property is read-only.
See also [RightAbilities](SBRunning.md#property_groupname)
**Property LeftFolder**
Returns the left/source base folder, e.g. C:\My Files\To Backup\
This property is read-only.
See also [RightFolder](SBRunning.md#property_rightfolder) and [LeftName](SBRunning.md#property_leftname)
**Property LeftIsSource**
Returns TRUE if the source/left is the considered the source. Otherwise the destination/right is the source.
This property is read-only.
**Property LeftName**
Returns the name of the left/source, e.g. My Files To Backup
This property is read-only.
See also [RightName](SBRunning.md#property_rightname)
**Property LeftType**
Returns the [type](ScriptConstants.md#abilities) of the source/left location.
This property is read-only.
See also [RightType](SBRunning.md#property_groupname)
**Property Name**
Returns the name of the profile.
This property is read-only.
See also [GroupName](SBRunning.md#property_groupname) and [ProfileType](SBRunning.md#property_profiletype)
**Property ProfileType**
Returns the type of the profile.
This property is read-only.
See also [ProfileTypeDesc](SBRunning.md#property_profiletypedesc)
**Property ProfileTypeDesc**
Returns a description of the profile based on its type (see ProfileType).
This property is read-only.
**Property Restore**
Returns True if the profile is being run in restore mode.
This property is read-only.
See also [Simulated](SBRunning.md#property_simulated)
**Property RightAbilities**
Returns the [abilities](ScriptConstants.md#abilities) of the destination/right location.
This property is read-only.
See also [LeftAbilities](SBRunning.md#property_groupname)
**Property RightFolder**
Returns the right/destination base folder, e.g. C:\My Backup Files\
This property is read-only.
See also [LeftFolder](SBRunning.md#property_leftfolder) and [RightName](SBRunning.md#property_rightname)
**Property RightName**
Returns the name of the right/destination, e.g. My Backup Files
This property is read-only.
See also [LeftName](SBRunning.md#property_leftname)
**Property RightType**
Returns the [type](ScriptConstants.md#abilities) of the destination/right location.
This property is read-only.
See also [LeftType](SBRunning.md#property_groupname)
**Property Simulated**
Returns True if the profile is being run in simulation mode.
This property is read-only.
See also [Restore](SBRunning.md#property_restore)
**Property Unattended**
Returns True if the profile is being run unattended, i.e. the script should not prompt the user or expect any user interaction.
This property is read-only.
**Property VisualGroupName**
If the profile is being run as part of a group, or it is being run from the user interface from within a group, then this is the name of the group. Note that the property [GroupName](SBRunning.md#property_groupname) is returned as an empty string if the profile is not being run as part of a group, but VisualGroupName may still return a group name if the user has clicked on the profile in a group and then run it.
This property is read-only.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SBSystem
These are functions that can be accessed from scripts via the **SBSystem** object. For example:
```
SBSystem.Say('Hello');
```
The **SBSystem** object is accessible from any type of script.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**function BuildDateTime(Day, Mon, Year, Hour, Min, Sec, MSec);**
**Day:** Day of the month
**Mon:** Month of the year
**Year:** Year
**Hour:** Hour of the day (24-hour clock)
**Min:** Minute of the hour
**Sec:** Second of the minute
**MSec:** Milli-seconds of the second
**Return value:** A date & time value, or 1.0 if the parameters passed are invalid
This function builds a date & time that can be used with SyncBack, e.g. in the [AddFile](SBLocation.md#function_addfile_name__crc32__filesize__attrs__moddatetime__) function. Note that the date variable type in VBScript is already compatible with SyncBack.
For example, for 24th June 1971 15:31:02.123 you would call:
```
BuildDateTime(24, 6, 1971, 15, 31, 02, 123);
```
**function CheckNetworkDrive(UNCOrPath);**
**UNCOrPath:** UNC path or drive path to check
**Return value:** An error message on failure
This function checks to see if a network drive can be reached. A UNC path, e.g. \\server\share\folder\, or networked drive path, e.g. Z:\, can be passed. If it can be reached then an empty string is returned, otherwise an error message is returned.
Note that Windows will use your current credentials to check the connection, so it will succeed even if you do not have access to the share, but it will fail if you don't have valid credentials on the remote computer.
To check if a computer can be reached (via its hostname or IP address) use the function [Ping](SBSystem.md#function_ping_hostnameorip__)
**function CompareFilenames(Filename1, Filename2, CaseSensitive);**
**Filename1:** A Unicode filename to compare with Filename2
**Filename2:** A Unicode filename to compare with Filename1
**CaseSensitive:** TRUE if the comparison should be case sensitive
**Return value:** Returns zero if the strings are ordinally identical
This function compare two filenames for ordinal (not liguistic) equality. Digits in the strings are considered as numerical content rather than text. For performance reasons, if you are just testing for equality (or not) then use [SameFilenames](SBSystem.md#function_samefilenames_filename1__filename2__casesensitive__) instead.
* Returns zero if the strings are identical.
* Returns > 0 if the string pointed to by Filename1 has a greater value than that pointed to by Filename2.
* Returns < 0 if the string pointed to by Filename1 has a lesser value than that pointed to by Filename2.
See also [SameFilenames](SBSystem.md#function_samefilenames_filename1__filename2__casesensitive__)
**function CompressFile(Filename);**
**Filename:** The full filename of the file to compress
**Return value:** Returns error message on failure
This function compresses a file or folder using NTFS compression. If the file or folder is already compressed then no error is returned.
See also [DecompressFile](SBSystem.md#function_decompressfile_filename__)
**function COMRegister(Filename);**
**Filename:** Filename of the COM/OCX/ActiveX component to register
**Return value:** An error message on failure
This function registers an COM/OCX/ActiveX component (DLL or EXE). Note that typically the user must have Administrator privileges to register components. On success an empty string is returned, otherwise an error message is returned.
IMPORTANT: If SyncBack is configured not to register COM objects (see Global Settings) then it will not register the component and silently fail.
**function CRC32(Filename);**
**Filename:** The filename of the file to calculate the hash value of
**Return value:** CRC32 hash value of the file, or empty string on failure
This function returns the CRC32 hash value of a file in string format. Note that it may take a long time to calculate the hash values of large files, or files accessed via a slow connection.
See also [MD5](SBSystem.md#function_md5_filename__)
**function DateTimeToUnix(Str);**
**Return value:** Seconds since January 1, 1970, 00:00:00
This function returns the number of seconds since January 1, 1970, 00:00:00
Important: This function is only available when using Pascal or Basic scripting and is not available with VBScript etc.
**function DateTimeToUnixMS(Str);**
**Return value:** Milli-seconds since January 1, 1970, 00:00:00
This function returns the number of milli-seconds since January 1, 1970, 00:00:00
Important: This function is only available when using Pascal or Basic scripting and is not available with VBScript etc.
**function DecodeString(Str);**
**Str:** The string to decode
**Return value:** The decoded string
This function decodes a string that has been previously encoded with the [EncodeString](SBSystem.md#function_encodestring_str__) function.
**function DecompressFile(Filename);**
**Filename:** The full filename of the file to decompress
**Return value:** Returns error message on failure
This function decompresses an NTFS compressed file. If the file does not exist, or is not compressed, then no error message is returned. Note that it cannot decompress folders.
See also [CompressFile](SBSystem.md#function_compressfile_filename__)
**function DecryptFile(Filename);**
**Filename:** The full filename of the file to decrypt
**Return value:** Returns error message on failure
This function decrypts an NTFS encrypted file. If the file does not exist, or is not encrypted, then no error message is returned. Note that it cannot decrypt folders.
See also [EncryptFile](SBSystem.md#function_encryptfile_filename__)
**function DecryptString(Str);**
**Str:** The string to decrypt
**Return value:** The decrypted string
This function decrypts a string that has been previously encrypted with the [EncryptString](SBSystem.md#function_encryptstring_str__) function.
**function EncodeString(Str);**
**Str:** The string to encode
**Return value:** The encoded string
This function encodes a string so that it can safely be stored in INI files, the registry, etc. It is useful for when the string may contain characters that may be invalid for the storage medium.
See also [DecodeString](SBSystem.md#function_decodestring_str__)
**function EncryptFile(Filename);**
**Filename:** The full filename of the file to encrypt
**Return value:** Returns error message on failure
This function encrypts a file using NTFS encryption. If the file does not exist, or is already encrypted, then no error message is returned. If the file is compressed, EncryptFile will decompress the file before encrypting it. Note that it cannot encrypt folders.
See also [DecryptFile](SBSystem.md#function_decryptfile_filename__)
**function EncryptString(Str);**
**Str:** The string to encrypt
**Return value:** The encrypted string
This function encrypts a string so that it is no longer plain text. Note that the encrypted string is formatted as a list of numbers (seperated by spaces). This means it can safely be stored in INI files, the registry, etc. so there is no need to use the [EncodeString](SBSystem.md#function_encodestring_str__) function.
See also [DecryptString](SBSystem.md#function_decodestring_str__)
**function ExcludeTrailingBackslash(Filename);**
**Filename:** The filename to remove the trailing backslash from
**Return value:** The filename with any trailing backslash removed
This function removes a trailing backslash from a filename, if there is one.
Important: This function is only available when using Pascal or Basic scripting and is not available with VBScript etc.
```
SBSystem.ExcludeTrailingBackslash('C:\abc\def\'); // Returns C:\abc\def
SBSystem.ExcludeTrailingBackslash('C:\abc\def'); // Returns C:\abc\def
```
**function Exec(CmdLine, WaitSecs, var RetVal, var ErrMsg);**
**CmdLine:** The full program name and parameters
**WaitSecs:** The number of seconds to wait
**RetVal:** The integer return value of the program executed
**ErrMsg:** An error message if the program could not be executed
**Return value:** Returns True if the program was executed
This function executes a program and optionally waits for it to complete.
CmdLine can contain command line parameters. It must be a fully qualified filename, e.g. C:\abc\def param1 param2
If WaitSecs < 0 then it will wait forever the program to finish
If WaitSecs = 0 then it will not wait for the program to finish
If WaitSecs > 0 then it will wait that number of seconds for it to finish
You need to wrap double quotes around the program name (no need if it does not contain spaces) otherwise the return value will always be 1. Also, command line parameters should be wrapped in double quotes if they contain spaces. For example:
"D:\Documents and Settings\Mick\Desktop\deldest.bat" param1 "param 2"
and NOT:
D:\Documents and Settings\Mick\Desktop\deldest.bat param1 param 2
CmdLine can be prefixed with special parameters:
/min to minimize the window (and not make it active)
/max to maximize the window
/hide to hide the window
e.g. /min "D:\Documents and Settings\Mick\Desktop\deldest.bat" "param 1"
If you choose to wait for the program to terminate then its return value is returned in RetVal. Otherwise the value in RetVal is unknown and should be ignored.
On failure ErrMsg will be set to an error message.
If the program was executed then True is returned. False is returned if the program could not be executed, e.g. doesn't exist. Note that True does not mean the program did what you required. To verify that check RetVal.
For example:
```
RetVal:=0;
ErrMsg:='';
Executed:=SBSystem.Exec('C:\Windows\System32\Notepadx.exe', 0, RetVal, ErrMsg);
```
To view a web page use the function [OpenBrowser](SBSystem.md#function_openbrowser_url__), and to open a file use the function [OpenFile](SBSystem.md#function_openfile_filename__)
**function GetNTFSSecurity(Filename, SecRequired, var NTFSSec);**
**Filename:** The filename of the file to get the security details of
**SecRequired:** The NTFS security information required
**NTFSSec:** The NTFS security requested
**Return value:** An error message on failure
This function retrieves the NTFS security of a file in string format. To get the security of a folder the filename must include a trailing slash.
Note that you must have the required security privilelages to get the security for a file.
The SecRequired parameter specifies what security information you require:
OWNER_SECURITY_INFORMATION (1) Include the owner.
GROUP_SECURITY_INFORMATION (2) Include the primary group.
DACL_SECURITY_INFORMATION (4) Include the discretionary access control list (DACL).
SACL_SECURITY_INFORMATION (8) Include the system access control list (SACL).
LABEL_SECURITY_INFORMATION (16)
These values can be combined, e.g. OWNER_SECURITY_INFORMATION + GROUP_SECURITY_INFORMATION
**function GetProfileName(Idx);**
**Idx:** The profile name to retrieve (first profile is zero)
**Return value:** The name of the profile, or empty string if there is no such profile
This function retrieves the name of a profile. To get the number of profiles use the [ProfileCount](SBSystem.md#property_profilecount) property. Note that the first profile is zero (0), and the last is ProfileCount - 1
Note that you should call [ProfileCount](SBSystem.md#property_profilecount) to refresh the list.
**function GMTToLocal(GMTTime);**
**GMTTime:** A date & time in the GMT/UTC timezone
**Return value:** A local date & time
This function convert a GMT/UTC date & time to a local date & time. The function [LocalToGMT](SBSystem.md#function_localtogmt_gmttime__) will convert a local date & time to a GMT/UTC date & time.
**function IsFolder(Filename);**
**Filename:** The filename to check
**Return value:** True if Filename has a trailing backslash
This function checks if a string has a trailing backslash, and if so, returns True. Note that the function does not check if the file or folder actually exists.
For example:
```
SBSystem.IsFolder('c:\abc\def');
```
will return False, but
```
SBSystem.IsFolder('c:\abc\def\');
```
will return True.
**function ISO8601ToLocalDateTime(Str);**
**Str:** ISO 8601 format string
**Return value:** Local date and time
This function converts an ISO 8601 format string to a local date and time.
Important: This function is only available when using Pascal or Basic scripting and is not available with VBScript etc.
```
procedure Test;
var
s: String;
dt: TDateTime;
begin
s:=SBSystem.UTCDateTimeToISO8601(SBSystem.LocalToGMT(Now), FALSE);
dt:=SBSystem.ISO8601ToLocalDateTime(s);
ShowMessage(DateTimeToStr(dt));
end;
```
**function LanguageCode(DomainName, ToTranslate);**
**DomainName:** The translation [domain](SBSystem.md#procedure_addtranslationdomain_domainname__) to use (use default for SyncBack translations)
**ToTranslate:** The string to translate
**Return value:** The translated string, or ToTranslate if it cannot be translated
This function translates a string from English to the [current language](SBSystem.md#property_languagecode), assuming a translation is available. See also [AddTranslationDomain](SBSystem.md#procedure_addtranslationdomain_domainname__) to add translations.
**function LocalToGMT(GMTTime);**
**LocalTime:** A date & time in the local timezone
**Return value:** A GMT/UTC date & time
This function convert a local date & time to a GMT/UTC date & time. The function [GMTToLocal](SBSystem.md#function_gmttolocal_gmttime__) will convert a GMT/UTC date & time to a local date & time.
**function MD5(Filename);**
**Filename:** The filename of the file to calculate the hash value of
**Return value:** MD5 hash value of the file, or empty string on failure
This function returns the MD5 hash value of a file in string format. Note that it may take a long time to calculate the hash values of large files, or files accessed via a slow connection.
See also [SHA1](SBSystem.md#function_sha1_filename__)
**function OpenBrowser(URL);**
**URL:** The URL of the web page to open in a browser
**Return value:** True if the browser was opened to display the web page
This function opens the default web browser and directs it to go to the URL given. Note that it returns True only if the browser is opened, but it cannot know if the URL itself is valid or accessible.
For example:
```
SBSystem.OpenBrowser('http://www.2BrightSparks.com/');
```
To open a file use the function [OpenFile](SBSystem.md#function_openfile_filename__)
To check if a server can be reached use the function [Ping](SBSystem.md#function_ping_hostnameorip__)
**function OpenFile(Filename);**
**Filename:** The complete filename of the file to open
**Return value:** An error message of failure, else an empty string
This function opens a file, e.g. a text document, with the default program for that file type, e.g. Notepad. Note that it returns an empty string only if the appropriate program was opened, but it cannot know if the file itself was opened by the program.
For example:
```
SBSystem.OpenFile('c:\folder\file.txt');
```
On failure an error message is returned.
To open a web page use the function [OpenBrowser](SBSystem.md#function_openbrowser_url__)
**function Ping(HostnameOrIP);**
**HostnameOrIP:** An I.P. address or hostname
**Return value:** An error message on failure
This function 'pings' a server to see if it is accessible. Note that some servers do not respond to ping requests (e.g. at time of writing microsoft.com does not). If the server responds to the ping requests then an empty string is returned, otherwise an error message is returned.
For example:
```
SBSystem.Ping('google.com');
```
To check if a network drive is accessible use the function [CheckNetworkDrive](SBSystem.md#function_checknetworkdrive_uncorpath__)
**function SameFilenames(Filename1, Filename2, CaseSensitive);**
**Filename1:** A Unicode filename to compare with Filename2
**Filename2:** A Unicode filename to compare with Filename1
**CaseSensitive:** TRUE if the comparison should be case sensitive
**Return value:** Returns TRUE if the strings are ordinally identical
This function compare two filenames for ordinal (not liguistic) equality. Digits in the strings are considered as numerical content rather than text.
See also [CompareFilenames](SBSystem.md#function_comparefilenames_filename1__filename2__casesensitive__)
**function SBCmdLineParam(ParamIdx);**
**ParamIdx:** The command line parameter to retrieve (first param is zero)
**Return value:** The command line parameter, or empty string if there is no such parameter
This function retrieves the command line parameters passed to SyncBack. To get the number of parameters use the [SBCmdLineParamsCount](SBSystem.md#property_sbcmdlineparamscount) property. Note that the first parameter is zero (0), and the last is SBCmdLineParamsCount - 1
**function SBVersion(Filename, var Major, var Minor, var Release, var Build);**
**Filename:** The filename of an executable, or an empty string for SyncBack
**Major:** The major version number of the executable
**Minor:** The minor version number of the executable
**Release:** The release version number of the executable
**Build:** The build version number of the executable
**Return value:** If an empty filename was passed then the name SyncBack is using
This function gets the version information from an executable. If Filename is passed as an empty string then it will return the version information of SyncBack itself. Also, passing an empty string will return the application name of SyncBack. In some situations SyncBack may be branded under a different name. If a filename is passed then the filename itself (stripped of the path) is returned.
For example:
```
Major:=0;
Minor:=0;
Release:=0;
Build:=0;
AppName:=SBSystem.SBVersion(Filename, Major, Minor, Release, Build);
```
**function SetCreateDateTime(Filename, LocalDateTime);**
**Filename:** Complete filename of the file to change the creation date & time of
**LocalDateTime:** The local date & time to change the creation date & time to
**Return value:** An error message on failure
This function sets the creation date & time of a file to the one supplied. The filename must be a complete filename, and the date & time should be in the local timezone. It returns an error message on failure.
For example:
```
SBSystem.SetCreateDateTime('c:\folder\file.txt;, Now);
```
**function SetFileAttributes(Filename, Attribs);**
**Filename:** Complete filename of the file to change the attributes of
**Attribs:** The attributes to use
**Return value:** An error message on failure
This function sets the Windows file attributes of file. The filename must be a complete filename. It returns an error message on failure.
For example:
```
SBSystem.SetFileAttributes('c:\folder\file.txt', FILE_ATTRIBUTE_READONLY);
```
**function SetLastModDateTime(Filename, LocalDateTime);**
**Filename:** Complete filename of the file to change the modification date & time of
**LocalDateTime:** The local date & time to change the modification date & time to
**Return value:** An error message on failure
This function sets the last modification date & time of a file to the one supplied. The filename must be a complete filename, and the date & time should be in the local timezone. It returns an error message on failure.
For example:
```
SBSystem.SetLastModDateTime('c:\folder\file.txt', Now);
```
**function SetNTFSSecurity(Filename, SecRequired, NTFSSec);**
**Filename:** Complete filename of the file to change the NTFS security of
**SecRequired:** The security information to set
**NTFSSec:** The NTFS security in string format
**Return value:** An error message on failure
This function sets the NTFS security of a file to the one supplied. The filename must be a complete filename, and the NTFS security should be in string format. It returns an error message on failure.
Note that you must have the required security privilelages to set the security of a file.
To set the security of a folder the filename must include a trailing slash.
The SecRequired parameter specifies what security information you require:
OWNER_SECURITY_INFORMATION (1) Include the owner.
GROUP_SECURITY_INFORMATION (2) Include the primary group.
DACL_SECURITY_INFORMATION (4) Include the discretionary access control list (DACL).
SACL_SECURITY_INFORMATION (8) Include the system access control list (SACL).
LABEL_SECURITY_INFORMATION (16)
These values can be combined, e.g. OWNER_SECURITY_INFORMATION + GROUP_SECURITY_INFORMATION
For example:
```
SBSystem.SetNTFSSecurity('c:\folder\file.txt', OWNER_SECURITY_INFORMATION + GROUP_SECURITY_INFORMATION, NTFSSec);
```
**function SHA1(Filename);**
**Filename:** The filename of the file to calculate the hash value of
**Return value:** SHA1 hash value of the file, or empty string on failure
This function returns the SHA1 hash value of a file in string format. Note that it may take a long time to calculate the hash values of large files, or files accessed via a slow connection.
See also [SHA256](SBSystem.md#function_sha256_filename__)
**function SHA256(Filename);**
**Filename:** The filename of the file to calculate the hash value of
**Return value:** SHA256 hash value of the file, or empty string on failure
This function returns the SHA256 hash value of a file in string format. Note that it may take a long time to calculate the hash values of large files, or files accessed via a slow connection.
See also [CRC32](SBSystem.md#function_crc32_filename__)
**function SHA512(Filename);**
**Filename:** The filename of the file to calculate the hash value of
**Return value:** SHA512 hash value of the file, or empty string on failure
This function returns the SHA512 hash value of a file in string format. Note that it may take a long time to calculate the hash values of large files, or files accessed via a slow connection.
See also [SHA256](SBSystem.md#function_sha256_filename__)
**function ToDaysHoursMinsSecs(Seconds, SecondsString, MinutesString, HoursString, DaysString, NoSecsIfHours);**
**Seconds:** The number of seconds to convert
**SecondsString:** The string to use for seconds, e.g. 'secs.'
**MinutesString:** The string to use for minutes, e.g. 'mins.'
**HoursString:** The string to use for hours, e.g. 'hours'
**DaysString:** The string to use for days, e.g. 'days'
**NoSecsIfHours:** If passed as TRUE then if there is more than on hour then skip showing the remaining seconds
**Return value:** The string representation of the seconds
Given a number of seconds, this function returns it broken down into days, hours, minutes, etc.
Important: This function is only available when using Pascal or Basic scripting and is not available with VBScript etc.
```
SBSystem.ToDaysHoursMinsSecs(123456, 'secs', 'mins', 'hrs', 'days', TRUE); // Returns '1 days 10 hrs 17 mins'
SBSystem.ToDaysHoursMinsSecs(123456, 'secs', 'mins', 'hrs', 'days', TRUE); // Returns '1 days 10 hrs 17 mins 36 secs'
```
**function UpdateFileStatus(Status);**
**Status:** The file status message to display in the SyncBack main window
**Return value:** True if the profile is terminating
This function updates the current file status shown in the SyncBack main window. Note that SyncBack itself will display the appropriate status messages when files are being copied, deleted, etc. The current file status message is the message displayed below the current status messages.
For example:
```
SBSystem.UpdateFileStatus('Taking the stereo from your car...');
```
See also [UpdateStatus](SBSystem.md#function_updatestatus_status__)
**function UpdateStatus(Status);**
**Status:** The status message to display in the SyncBack main window
**Return value:** True if the profile is terminating
This function updates the current status shown in the SyncBack main window. Note that SyncBack itself will display the appropriate status messages when tasks are being performed, e.g. Scanning for changes. The status message is the message displayed above the current file status message.
For example:
```
SBSystem.UpdateStatus('Taking your dog for a walk...');
```
See also [UpdateFileStatus](SBSystem.md#function_updatefilestatus_status__)
**function UTCDateTimeToISO8601(UTCDateTime, DropMills);**
**UTCDateTime:** The UTC/GMT date & time
**DropMills:** If TRUE the milli-seconds are ignored
**Return value:** ISO 8601 format string
This function converts a UTC/GMT date & time into an ISO 8601 format string.
Important: This function is only available when using Pascal or Basic scripting and is not available with VBScript etc.
```
SBSystem.ShowMessage(SBSystem.UTCDateTimeToISO8601(Now, FALSE)); // 2022-09-16T11:42:14.406Z
```
**procedure AddTranslationDomain(DomainName);**
**DomainName:** The name of the translation domain
This function adds a custom translation domain so that a script can provide its own translations for strings. Strings are translated using [TranslateString](SBSystem.md#function_languagecode_domainname__totranslate__).
A domain is the name of a .MO translation file (without the .MO extension). The .MO file must be placed into the appropriate \locale\[language code]\LC_MESSAGES\ sub-folders of the SyncBack installation folder. There should be a .MO file for each language that strings can be translated into. MO files are created using the freeware POEdit program.
See the TranslationExample.vbs for an example.
**procedure BetweenDates(Date1, Date2, var days, var hours, var mins, var secs);**
**Date1:** The first date
**Date2:** The second date
**days:** Set to the number of days between the dates
**hours:** Set to the number of hours between the dates
**mins:** Set to the number of minutes between the dates
**secs:** Set to the number of seconds between the dates
This function calculates the time between two dates.
Important: This function is only available when using Pascal or Basic scripting and is not available with VBScript etc.
```
procedure Test;
var d1, d2: TDateTime;
d, h, m, s: Integer;
begin
d:=0;
h:=0;
m:=0;
s:=0;
d1:=EncodeDate(2022, 06, 24) + EncodeTime(9, 10, 11, 12);
d2:=EncodeDate(2021, 03, 12) + EncodeTime(22, 0, 15, 0);
SBSystem.BetweenDates(d1, d2, d, h, m, s);
// 468 days 11 hours 9 mins 56 seconds
SBSystem.ShowMessage(IntToStr(d) + ' days ' + IntToStr(h) + ' hours ' + IntToStr(m) + ' mins ' + IntToStr(s) + ' seconds');
end;
```
**procedure Say(ToSay);**
**ToSay:** What the computer should say, or the filename of a .WAV file
This subroutine uses the speech engine in Windows to have the computer say what you request. It can also be used to play .WAV files (by passing the filename). However, if used in a profile, and Azure Speech is used in that profile, then the voice set in the profile is used with Azure Speech.
For example:
```
SBSystem.Say('2 bright sparks rock my world');
```
**procedure SayBing(ToSay, Voice);**
**ToSay:** What the computer should say
**Voice:** Which voice to use ([TBingVoice](ScriptConstants.md#tbingvoice))
This subroutine uses the Azure Speech cloud service to have the computer say what you request.
For example:
```
SBSystem.SayBing('2 bright sparks rock my world', bv_EnglishBritainFemale);
```
**procedure ShowMessage(Message);**
**Message:** Message to display
This function is the same as the global ShowMessage method except it will not display the message if it is not acceptable to do so, e.g. there is no user interface, the profile is being run unattended, etc.
**procedure Sleep(Seconds);**
**Seconds:** The number of seconds to sleep
This function sleeps for the specified number of seconds. Note that you should not sleep for more than a few seconds in case the user wants to abort. The script (and profile or anything else) cannot abort while sleeping.
For example:
```
SBSystem.Sleep(2);
```
See also [SBRunning.Sleep](SBRunning.md#function_sleep_seconds__)
**Property LanguageCode**
This property returns the language code of the user interface, e.g. 'en' for English. See also [AddTranslationDomain](SBSystem.md#procedure_addtranslationdomain_domainname__) and [TranslateString](SBSystem.md#function_languagecode_domainname__totranslate__)
This is a read-only property.
**Property NoDesktop**
This property returns True if there is a desktop. It would return False, for example, if no user is currently interactively logged in, or if a different user is currently interactively logged in.
This is a read-only property.
**Property ProfileCount**
This property returns the number of profiles. To retrieve the names of the profiles use [GetProfileName](SBSystem.md#function_getprofilename_idx__)
This is a read-only property.
**Property SBCmdLineParamsCount**
This property returns the number of command line parameters passed to SyncBack. The parameters themselves can be retrieved using the [SBCmdLineParam](SBSystem.md#function_sbcmdlineparam_paramidx__) function.
This is a read-only property.
**Property SBFilename**
This property returns the complete filename of the SyncBack program.
This is a read-only property.
**Property ScriptFilename**
This property returns the complete filename of the script itself. This should not be stored as it may change, e.g. if imported onto another computer then the path may be different. To get just the path the script is in use [ScriptPath](SBSystem.md#property_scriptpath)
This is a read-only property.
**Property ScriptPath**
This property returns the path (directory) the script itself is in. This should not be stored as it may change, e.g. if imported onto another computer then the path may be different. To get the complete filename of the script use the function [ScriptFilename](SBSystem.md#property_scriptfilename)
This is a read-only property.
**Property UniqueID**
This property returns a universally unique 32 character long string.
This is a read-only property.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SBVariables
These are functions that can be accessed from scripts via the **SBVariables** object. For example:
```
SBSystem.SetProperty('MyVar', 'Value');
```
The **SBVariables** object is accessible from any type of script, but some functions will do nothing when used in some script types. For example, GetProperty won't work in a [Main Interface](MainInterfaceScripts.md) script because there is no current profile.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**function Count;**
**Return value:** The number of variables defined
This function returns the number of variables defined.
**function GetGlobalProperty(PropName, PropDefault, Internal);**
**PropName:** The name of the property
**PropDefault:** The value to return if the property does not exist
**Internal:** Pass True to retrieve properties that SyncBack uses, otherwise it's a property created by a script
**Return value:** The value of the property (as a string) or an empty string on error
This function retrieves a global property (setting) value. This is different from [GetProperty](SBVariables.md#function_getproperty_propname__propdefault__internal__) and [GetProfileProperty](SBVariables.md#function_getprofileproperty_profilename__propname__propdefault__internal__) because those are used with profiles (the property is profile specific).
Note that PropName must be a single property name.
To check if a property exists or not pass a default value that cannot be valid, e.g.
```
if (SBVariables.GetGlobalProperty('PropName', '!NOTEXIST!', FALSE) = '!NOTEXIST!') then begin
// Does not exist
end else begin
// Exists
end;
```
See also [SetGlobalProperty](SBVariables.md#function_setglobalproperty_propname__newpropvalue__)
Some internal properties are encrypted, so you must decrypt the result using the [SBSystem.DecryptString](SBSystem.md#function_decodestring_str__) function.
**function GetProfileProperty(ProfileName, PropName, PropDefault, Internal);**
**ProfileName:** The name of the profile to read the property from
**PropName:** The name of the property
**PropDefault:** The value to return if the property does not exist
**Internal:** Pass True to retrieve properties that SyncBack uses, otherwise it's a property created by a script
**Return value:** The value of the property (as a string) or an empty string on error
This function retrieves a profile property (setting) value from a specific profile. It works the same way as GetProfileProperty except you can specify the profile.
See also [SetProfileProperty](SBVariables.md#function_setprofileproperty_profilename__propname__newpropvalue__)
Some internal properties are encrypted, so you must decrypt the result using the [SBSystem.DecryptString](SBSystem.md#function_decodestring_str__) function.
**function GetProperty(PropName, PropDefault, Internal);**
**PropName:** The name of the property
**PropDefault:** The value to return if the property does not exist
**Internal:** Pass True to retrieve properties that SyncBack uses, otherwise it's a property created by a script
**Return value:** The value of the property (as a string) or an empty string on error
This function retrieves a profile property (setting) value. The difference between properties and variables is that properties are stored as part of the profiles settings, but variables are not. That means their value is kept between profile runs. Note that PropName must be a single property name.
To check if a property exists or not pass a default value that cannot be valid, e.g.
```
if (SBVariables.GetProperty('PropName', '!NOTEXIST!', False) = '!NOTEXIST!') then begin
// Does not exist
end else begin
// Exists
end;
```
See also [SetProperty](SBVariables.md#function_setproperty_propname__newpropvalue__)
Note that this function will do nothing if called from a Main Interface script. You must use the [GetProfileProperty](SBVariables.md#function_getprofileproperty_profilename__propname__propdefault__internal__) function.
Some internal properties are encrypted, so you must decrypt the result using the [SBSystem.DecryptString](SBSystem.md#function_decodestring_str__) function.
**function GetVar(VarName);**
**VarName:** A string containing variables
**Return value:** VarName with the variables expanded
This function retrieves a variable value. The difference between properties and variables is that properties are stored as part of the profiles settings, but variables are not. Also, variables like environment variables are set by the operating system or other programs.
```
VarValue1:=SBVariables.GetVar('%USERPROFILE%');
VarValue1:=SBVariables.GetVar('Username is %USERNAME% and profile is %USERPROFILE%');
```
See also [SetProperty](SBVariables.md#function_setproperty_propname__newpropvalue__), [GetVarName](SBVariables.md#function_getvarname_idx__var_value__), and [SetVar](SBVariables.md#function_setvar_varname__newvarvalue__)
**function GetVarName(Idx, var Value);**
**Idx:** The number of the variable to get the name of (0=first variable)
**Value:** Value is set to the value of the variable
**Return value:** The name of the variable, or empty string on failure
This function retrieves the name of a variable. The first variable is variable zero (0). [SBVariables.Count](SBVariables.md#function_count_) returns the number of variables defined.
For example:
```
VarName:=SBVariables.GetVarName(0, VarValue);
```
**function SetGlobalProperty(PropName, NewPropValue);**
**PropName:** The name of the property
**NewPropValue:** The new value of the property
**Return value:** The new value of the property (as a string) or an empty string on error
This function sets a global property (setting) value. This is different from [SetProperty](SBVariables.md#function_setproperty_propname__newpropvalue__) and [SetProfileProperty](SBVariables.md#function_setprofileproperty_profilename__propname__newpropvalue__) because those are used with profiles (the property is profile specific).
Note that PropName must be a single property name. See [GetGlobalProperty](SBVariables.md#function_getglobalproperty_propname__propdefault__internal__) for retrieving global property values.
If you want to store the value encrypted, see the [SBSystem.EncryptString](SBSystem.md#function_encryptstring_str__) function.
See [DeleteGlobalProperty](SBVariables.md#procedure_deleteglobalproperty_propname__) to delete global properties.
Note that you cannot change internal SyncBack properties.
**function SetProfileProperty(ProfileName, PropName, NewPropValue);**
**PropName:** The name of the profile to delete the property from
**PropName:** The name of the property
**NewPropValue:** The new value of the property
**Return value:** The new value of the property (as a string) or an empty string on error
This function sets a profile property (setting) value for a specific profile. It works the same way as [SetProperty](SBVariables.md#function_setproperty_propname__newpropvalue__) except a profile can be specified. See [GetProfileProperty](SBVariables.md#function_getprofileproperty_profilename__propname__propdefault__internal__) for retrieving property values from a specific profile and [DeleteProfileProperty](SBVariables.md#procedure_deleteprofileproperty_profilename__propname__) to delete properties from a speficic profile.
If you want to store the value encrypted, see the [SBSystem.EncryptString](SBSystem.md#function_encryptstring_str__) function.
Note that you cannot change internal SyncBack properties.
**function SetProperty(PropName, NewPropValue);**
**PropName:** The name of the property
**NewPropValue:** The new value of the property
**Return value:** The new value of the property (as a string) or an empty string on error
This function sets a profile property (setting) value. Note that PropName must be a single property name. See [GetProperty](SBVariables.md#function_getproperty_propname__propdefault__internal__) for retrieving property values.
See [DeleteProperty](SBVariables.md#procedure_deleteproperty_propname__) to delete properties, and [SetProfileProperty](SBVariables.md#function_setprofileproperty_profilename__propname__newpropvalue__) to set the property for a specific profile.
Note that you cannot change internal SyncBack properties.
If you want to store the value encrypted, see the [SBSystem.EncryptString](SBSystem.md#function_encryptstring_str__) function.
Note that this function will do nothing if called from a Main Interface script. You must use the [SetProfileProperty](SBVariables.md#function_setprofileproperty_profilename__propname__newpropvalue__) function.
**function SetVar(VarName, NewVarValue);**
**VarName:** The name of the variable to set
**NewVarValue:** The new value of the variable
**Return value:** The new value of the variable (string) or an empty string on failure
This function sets the value of a profile variable. Note that variables cannot be deleted.
```
SBVariables.SetVar('MyVariable', 'The value');
```
See also [GetVar](SBVariables.md#function_getvar_varname__)
**procedure DeleteGlobalProperty(PropName);**
**PropName:** The name of the property to delete
This subroutine deletes a global property (setting) value. This is different from [DeleteProperty](SBVariables.md#procedure_deleteproperty_propname__) and [DeleteProfileProperty](SBVariables.md#procedure_deleteprofileproperty_profilename__propname__) because those are used with profiles (the property is profile specific).
Note that PropName must be a single property name, and you cannot delete internal SyncBack properties.
**procedure DeleteProfileProperty(ProfileName, PropName);**
**ProfileName:** The name of the profile to delete the property from
**PropName:** The name of the property to delete
This subroutine deletes a profile property (setting) value from a specific profile. Note that PropName must be a single property name.
Note that you cannot delete internal SyncBack properties.
See also [DeleteProperty](SBVariables.md#procedure_deleteproperty_propname__)
**procedure DeleteProperty(PropName);**
**PropName:** The name of the property to delete
This subroutine deletes a profile property (setting) value. Note that PropName must be a single property name.
Note that you cannot delete internal SyncBack properties.
Note that this function will do nothing if called from a Main Interface script. You must use the [DeleteProfileProperty](SBVariables.md#procedure_deleteprofileproperty_profilename__propname__) function.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SBHistory
These are functions that can be accessed from scripts via the **SBHistory** object. They allow you to refer to a profile's history, e.g. when it was run, who ran it, what the result was, etc. The [SBHistory.ProfileName](SBHistory.md#property_profilename) property will already have been set for you unless you are using a Main Interface script, in which case you must set it yourself as appropriate. Once the profile name has been set you can get the number of history records available using [SBHistory.RecordCount](SBHistory.md#property_recordcount). The number of records available depends on how many times the profile has been run and the [maximum history](SimpleHistory.md) for that profile. Next you need to specify which history record you want to get the values of. You can do this by setting [SBHistory.RecordIndex](SBHistory.md#property_recordindex). By default it is set to zero, which is the index of the oldest history record. When you've set the profile name and record index you can then get the history information, e.g. [SBHistory.RunResult](SBHistory.md#property_runresult).
The **SBHistory** object is accessible from [Main Interface](MainInterfaceScripts.md), [Runtime](RuntimeScripts.md) and [Profile Configuration](ProfileConfigurationScripts.md) scripts.
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**procedure Refresh;**
This subroutine refreshes the profiles history. Note that the [RecordCount](SBHistory.md#property_recordcount) may have changed and the [RecordIndex](SBHistory.md#property_recordindex) is reset to zero.
**Property AbortReason**
If the profile was aborted then this read-only property returns the [reason](ScriptConstants.md#abortreason) why it was aborted. Ignore this value if the profile was not aborted. See [RunResult](SBHistory.md#property_runresult) for the profiles run result.
Returns -1 on error or if the profile name has not been set.
**Property BackupType**
This read-only property returns the [backup type](ScriptConstants.md#backuptype). If the profile is an [Intelligent Sync profile](SBHistory.md#property_profiletype), or was run as a [restore](SBHistory.md#property_isrestore), then ignore this value. If the profile is not a Fast Backup profile then it will also return that is was an incremental backup.
Returns -1 on error or if the profile name has not been set.
**Property CloudContainer**
This read-only property returns the name of the cloud bucket/container that was used. If the cloud was not used then an empty string is returned. For the type of cloud service used see [CloudType](SBHistory.md#property_cloudtype).
Returns an empty string on error or if the profile name has not been set.
**Property CloudType**
This read-only property returns the type of [cloud service](ScriptConstants.md#cloudtype) used. If the cloud was not used then it will return 0.
Returns -1 on error or if the profile name has not been set.
**Property ComputerName**
This read-only property returns the name of the computer used to run the profile. For the name of the user see [UserName](SBHistory.md#property_username).
Returns empty string on error or if the profile name has not been set.
**Property DestDir**
This read-only property returns the destination/right directory used for the profile. If the directory was overridden, e.g. via the command line, then you can check this using [IsDestOverride](SBHistory.md#property_isdestoverride).
Returns empty string on error or if the profile name has not been set.
**Property DestSerial**
This read-only property returns the destination drives volume serial number. There will not be a serial number if the profile used FTP, email, cloud, etc.
Returns empty string on error or if the profile name has not been set.
**Property EmailHostname**
This read-only property returns the hostname of the SMTP email server used to backup files to. If the profile is making a backup of emails then it is the POP3/IMAP4 email server. If the profile does not use an email server then an empty string is returned.
Returns empty string on error or if the profile name has not been set.
**Property ErrMsg**
If the profile failed because of a critical error then this read-only property contains the error message. See also [RunResult](SBHistory.md#property_runresult).
**Property FTPHostname**
This read-only property returns the hostname of the FTP server used to copy files to and from. If the profile did not use an FTP server then an empty string is returned.
Returns empty string on error or if the profile name has not been set.
**Property GroupName**
If the profile was run as part of a group then this read-only property returns the name of that group. See [GroupStartTime](SBHistory.md#property_groupstarttime) to get the date & time when the group was started.
Returns empty string on error or if the profile name has not been set.
**Property GroupStartTime**
This read-only property is the date & time when the profiles parent group was started. To get the name of the group see [GroupName](SBHistory.md#property_groupname).
Returns 1.0 on error or if the profile name has not been set. It also returns 1.0 if the profile was not run as part of a group.
See also [ProfileStartTime](SBHistory.md#property_profilestarttime)
**Property Is64Bit**
This read-only property returns TRUE if the version of Windows that ran the profile was 64-bit. To get the version of Windows use [WindowsVersion](SBHistory.md#property_windowsversion).
Returns FALSE on error or if the profile name has not been set.
**Property IsDestOverride**
If the destination/right folder was overridden, e.g. via the command line, then this read-only property will return TRUE.
Returns FALSE on error or if the profile name has not been set.
**Property IsRestore**
If the profile was run as a Restore then this property returns TRUE.
Returns FALSE on error or if the profile name has not been set.
**Property IsSourceOverride**
If the source/left folder was overridden, e.g. via the command line, then this read-only property will return TRUE.
Returns FALSE on error or if the profile name has not been set.
**Property ProfileName**
This property is used to set and return the name of the profile the history is for. If it has not been set then an empty string is returned. The profile name must be set before you can use any other function or properties in the SBHistory object.
Note that the profile name will have been set automatically unless it is a main interface script.
If you set the profile name to what it already is then nothing will happen.
The history data is cached, so to refresh it you must call [Refresh](SBHistory.md#procedure_refresh_)
**Property ProfileStartTime**
This read-only property is the date & time when the profile started running. It is different from [ThreadStartTime](SBHistory.md#property_threadstarttime) because the ProfileStartTime may never be set.
Returns 1.0 on error or if the profile name has not been set. It also returns 1.0 if the profile never started.
See also [GroupStartTime](SBHistory.md#property_groupstarttime)
**Property ProfileType**
This read-only property returns the [type of profile](ScriptConstants.md#exactprofiletypes).
Returns -1 on error or if the profile name has not been set.
**Property RecordCount**
This read-only property returns the number of history records there are for the profile. If the profile name has not yet been set (see [ProfileName](SBHistory.md#property_profilename)) then -1 is returned. If there is no profile history then 0 is returned.
Records are numbered from 0 (which is the oldest history record) upto RecordCount - 1 (which is the newest history record). Use the [RecordIndex](SBHistory.md#property_recordindex) property to change the current history record.
**Property RecordedInSBM**
This read-only property returns TRUE if the history has been recorded in the SyncBack Management Service.
Returns FALSE on error or if the profile name has not been set.
**Property RecordIndex**
This property is used to set and return the index number of the current history record for the profile.
When a profile name is set (see [ProfileName](SBHistory.md#property_profilename)) then current index is set to 0, i.e. the oldest history record for the profile. If the profile name has not been set, or there is no profile history, then -1 is returned.
A record index can range from 0 to [RecordCount](SBHistory.md#property_recordcount) - 1, i.e. the record list is zero based. If you attempt to set an invalid record index then it is ignored.
**Property RunResult**
This read-only property is the [result](ScriptConstants.md#results) of the profile run. See also [ErrMsg](SBHistory.md#property_errmsg) for any critical error message. If the profile was aborted then see [AbortReason](SBHistory.md#property_abortreason) for the reason it was aborted.
Returns -1 on error or if the profile name has not been set.
**Property SourceDir**
This read-only property returns the source/left directory used for the profile. If the directory was overridden, e.g. via the command line, then you can check this using [IsSourceOverride](SBHistory.md#property_issourceoverride).
Returns empty string on error or if the profile name has not been set.
**Property SourceSerial**
This read-only property returns the source drives volume serial number. There will not be a serial number if the profile used FTP, email, cloud, etc.
Returns empty string on error or if the profile name has not been set.
**Property ThreadStartTime**
This read-only property is the date & time when the profile was prepared so it would be ready to be run when needed. It is different from [ProfileStartTime](SBHistory.md#property_profilestarttime) because the ProfileStartTime may never be set. For example, if a profile is run as part of a group then the profile may never start because a previous profile in the group may be aborted. In that case the ProfileStartTime is not set, but the ThreadStartTime always is. So the ProfileStartTime is when the profile actually started running (if at all).
Returns 1.0 on error or if the profile name has not been set.
See also [GroupStartTime](SBHistory.md#property_groupstarttime).
**Property UserName**
This read-only property returns the users Windows login username. For the name of the computer see [ComputerName](SBHistory.md#property_computername).
Returns empty string on error or if the profile name has not been set.
**Property WindowsVersion**
This read-only property returns the [version of Windows](ScriptConstants.md#windows) used to run the profile. To see if the version of Windows was 64-bit see [Is64Bit](SBHistory.md#property_is64bit).
Returns -1 on error or if the profile name has not been set.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Constants
A number of constants are available.
**Abilities**
The following are location abilities. Note that some of these cannot be returned by LocAbilities:
CAN_WINDOWSFOLDERS = Does the location use Windows folders? Cannot be used by LocAbilities()
CAN_COPYDIRATTRS = Can the directory attributes and date & times be copied to a new directory? Cannot be used by LocAbilities()
CAN_COPYSECURITY = Can the file/folder NTFS security be copied? Cannot be used by LocAbilities()
CAN_USEBACKUPAPI = Can the BackupRead/BackupWrite API's be used? Cannot be used by LocAbilities()
CAN_USEMD5 = Can use MD5 hashing? This is used for verification and file integrity checking.
CAN_USEATTRIBUTES = Do files/folders have Windows attributes? See also CAN_NTFSATTRIBUTES
CAN_EXACTDATETIME = Are dates & times stored exactly (including milli-seconds)?
CAN_HASLASTACCESS = Can a file/folder last access date & times be stored? Introduced in SyncBackPro V10.
CAN_CHANGEDATETIME = Can file/folder date & times be changed?
CAN_SINGLEZIP = Are all the files stored in a single Zip file? Cannot be used by LocAbilities()
CAN_HAVEEMPTYPATH = Can the base path be empty?
CAN_STOREDONWINDOWS = Is the location on a Windows filesystem? e.g. a drive or UNC path. Cannot be used by LocAbilities()
CAN_VERSION = Does the location support versioning?
CAN_DIRECTACCESS = Are files stored on a Windows filesystem uncompressed etc? Cannot be used by LocAbilities()
CAN_NTFSATTRIBUTES = Files & folders have NTFS extended attributes?
CAN_WRITEONCE = Write-once, meaning cannot read from it only write to it, e.g. split zip
CAN_MOVE_FILES = Can files be moved/renamed?
CAN_USECRC32 = Can use CRC32 hashing?
CAN_MOVE_FOLDERS = Can folders be moved/renamed?
CAN_PREFERRED_FILECASE = It is better to use the case of files on this location
CAN_PREFERRED_FOLDERCASE = It is better to use the case of folders on this location
CAN_CANNOT_COPYTO = Files cannot be copied to this location, but can be deleted from it, e.g. backup of email
CAN_VIRTUALFOLDERS = Folders are virtual and not real so they should not be created, deleted, or renamed, e.g. cloud
CAN_RESUME_TRANSFER = Can the location resume a broken file transfer if the profile is run again?
CAN_CHANGE_FILEATTRS = Can file attributes be changed?
CAN_CHANGE_FOLDERATTRS = Can folder attributes be changed?
CAN_CHANGE_CACHEDSIZE = Can file size be changed? Cloud only. This is used with cloud caching. Cannot be used by LocAbilities()
CAN_CHANGE_CACHEDHASH = Can file hash be changed? Cloud only. This is used with cloud caching. Cannot be used by LocAbilities()
CAN_USESHA1 = Can use SHA1 hashing? This is used for verification and file integrity checking.
CAN_USESHA256 = Can use SHA256 hashing? This is used for verification and file integrity comparison.
CAN_USESHA512 = Can use SHA512 hashing? This is used for verification and file integrity comparison.
**AbortReason**
The following are the reasons why a profile was aborted:
EAR_User = User chose to stop this profile (0)
EAR_Timeup = Profile has run out of time (ELR_TimeLimit) (1)
EAR_ProgramClose = SyncBack is closing (2)
EAR_StopAllProfiles = User wants to stop all the profiles (3)
EAR_WindowsShutdown = Profiles are stopping because of Windows shutdown (4)
EAR_StoppingGroup = Stopping because it's part of a group that is being stopped (5)
EAR_Script = Aborted by a script (6)
EAR_TooManyDeletes = Too many files will be deleted (ELR_TooManyDeletes) (7)
EAR_BurnFailure = CD/DVD burn failure (ELR_BurnFailure). Removed in V9. (8)
EAR_AlreadyRunning = The profile was already running (9)
EAR_UserOther = User chose to stop this profile (from another process) (10)
EAR_TouchLicensing = Too many SyncBack Touch servers being used (ELR_TouchLicensing). Not possible since V10. (11)
EAR_TooManyUpdates = Too many files will be updated (ELR_TooManyUpdates) (12)
EAR_UserRemote = User chose to stop this profile using SyncBack Monitor (13)
EAR_UserRemoteOther = User chose to stop this profile using SyncBack Monitor (from another process) (14)
EAR_TooManyCopies = Too many files will be copied/deleted (ELR_TooManyCopies) (15)
EAR_Elevation = Not running in the correct elevation state (ELR_Elevation) (16)
EAR_TooManyErrors = Profile was aborted because too many errors occurred (ELR_TooManyErrors) (17)
**Actions**
The following are actions that can be performed on files and folders (note that many of these cannot be used with folders):
CACTION_ERROR = Skip the file - there was an error
CACTION_SKIP_ONCE_UPD = Do nothing, skip/ignore the file. Intelligent Sync data is updated.
CACTION_COPY_TOSOURCE = Copy from destination to the source
CACTION_COPY_TODEST = Copy from source to the destination
CACTION_DELSOURCE = Delete from source
CACTION_DELDEST = Delete from destination
CACTION_DELBOTH = Delete source & destination
CACTION_MISSING_PROMPT = A file is in source or destination, but not both, prompt the user
CACTION_DETAILS_PROMPT = Contents same, but attributes and/or date & time changed, prompt the user
CACTION_BOTH_PROMPT = The file has changed in both, prompt the user
CACTION_USE_SRC_DETAILS = Use the file attributes, security, filename case, and/or date & time from the source
CACTION_USE_DEST_DETAILS = Use the file attributes, security, filename case, and/or date & time from the destination
CACTION_MOVE_TOSOURCE = Move from destination to the source
CACTION_MOVE_TODEST = Move from source to the destination
CACTION_UNCHANGED = The file is actually unchanged (for Fast Backup only)
CACTION_RENAME_SOURCE = Rename the source file (for Intelligent Sync only when FILES HAVE BEEN RENAMED)
CACTION_RENAME_DEST = Rename the destination file (for Intelligent Sync only when FILES HAVE BEEN RENAMED)
CACTION_SKIP_ALWAYS = Same as CACTION_SKIP_ONCE_NOUPD except selections updated so file is unselected
CACTION_SKIP_ONCE_NOUPD = Do nothing, skip/ignore the file. Intelligent Sync/Cloud database is NOT updated.
**BackupType**
The following are profile backup types:
ERBT_Unknown = Unknown
ERBT_Full = Full
ERBT_Incremental = Incremental
ERBT_Differential = Differential
**CloudType**
The following are cloud service types:
ECT_S3 = Including Google Storage (S3 emulation)
ECT_Azure
ECT_GDrive = Google Drive
ECT_Box
ECT_SugarSync
ECT_Office365V1 = SharePoint and OneDrive for Business (legacy API for V7 and earlier)
ECT_Rackspace = Rackspace/Openstack
ECT_Backblaze = Backblaze B2
ECT_DropboxV2 = Dropbox V2
ECT_OneDriveV2 = OneDrive (personal)
ECT_OneDriveBiz_SharedKey = OneDrive (business) use ECT_OneDriveBiz_NewKey instead
ECT_SharePoint_SharedKey = SharePoint - use ECT_OneDriveBiz_NewKey instead
ECT_GoogleStorage = Google Storage (native API, not S3 emulation)
ECT_hubiC = Openstack with OAuth authentication (service no longer available)
ECT_WebDAV
ECT_Egnyte
ECT_ShareFile = Citrix ShareFile
ECT_pCloud = PCloud
ECT_OneDriveBiz_NewKey = OneDrive (business) - replacement for ECT_OneDriveBiz_SharedKey
ECT_SharePoint_NewKey = SharePoint - replacement for ECT_SharePoint_SharedKey
**DateTimeValues**
The following are date and time constants. These were introduced in V11.
HoursPerDay
MinsPerHour
SecsPerMin
MSecsPerSec
MinsPerDay
SecsPerDay
SecsPerHour
MSecsPerDay
DateDelta = Days between 1/1/0001 and 12/31/1899
UnixDateDelta = Days between TDateTime basis (12/31/1899) and Unix time_t basis (1/1/1970)
DaysPerWeek
WeeksPerFortnight
MonthsPerYear
YearsPerDecade
YearsPerCentury
YearsPerMillennium
**Differences**
The following are differences. Note that the values can be or'ed together if there is more than one difference:
CDIFF_IDENTICAL = Skipped because of settings or files are identical
CDIFF_SIZE = Different sizes, does not apply to directories
CDIFF_HASH = Different hash values, does not apply to directories
CDIFF_MODDATETIME = Different modification date & time
CDIFF_DESTONLY = In destination only
CDIFF_SRCONLY = In source only
CDIFF_ATTRIB = Different attributes
CDIFF_VERSION = Only the versions exist (will show in Differences window), does not apply to directories
CDIFF_CASE = File case is different
CDIFF_CREATEDATETIME = Different creation date & time
CDIFF_ACCESSDATETIME = Different last access date & time
CDIFF_NTFSSEC = Different NTFS security
CDIFF_IDENTICAL_CHANGE = Identical, but profile configured to change identical files (V11)
CDIFF_HARDLINK = Hard links different (V11)
CDIFF_SYMLINK = Symbolic links different (V11)
**ExactProfileTypes**
The following are exact profile types:
EPTError = Error
EPTUnknown = Unknown profile type
EPTCustom = Custom
EPTBackupFromSrc = Backup from source to destination
EPTBackupFromDest = Backup from destination to source
EPTOldSync = Basic Sync
EPTSync = Intelligent Sync
EPTGroup = Group (not queue)
EPTMirrorRight = Mirror from source to destination
EPTMirrorLeft = Mirror from destination to source
EPTGroupQ = Group (queue) (V11)
**FileAttributes**
The following are standard Windows file attributes:
FILE_ATTRIBUTE_READONLY
FILE_ATTRIBUTE_HIDDEN
FILE_ATTRIBUTE_SYSTEM
FILE_ATTRIBUTE_DIRECTORY
FILE_ATTRIBUTE_ARCHIVE
FILE_ATTRIBUTE_DEVICE
FILE_ATTRIBUTE_NORMAL
FILE_ATTRIBUTE_TEMPORARY
FILE_ATTRIBUTE_SPARSE_FILE
FILE_ATTRIBUTE_REPARSE_POINT
FILE_ATTRIBUTE_COMPRESSED
FILE_ATTRIBUTE_OFFLINE
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
FILE_ATTRIBUTE_ENCRYPTED
FILE_ATTRIBUTE_VIRTUAL
FILE_ATTRIBUTE_INTEGRITY_STREAM
FILE_ATTRIBUTE_NO_SCRUB_DATA
INVALID_FILE_ATTRIBUTES
**IgnoredReason**
The following are reasons why a file or folder is ignored:
EIRUnknown = Unknown
EIRNotSelected = Not selected in folder & file selection tree
EIRDoesNotExist = File/folder does not exist
EIRJunctionPoint = Is a junction point and settings say they are to be ignored
EIRNewFolder = A new folder and parent folder settings say new folders are to be ignored
EIRNewFile = A new file and parent folder settings say new files are to be ignored
EIRFiltered = Filtered out due to filter settings
EIRNotZipFile = File is not a Zip file (when multi-zip and a non-zip file is found)
EIRError = Skipped due to error
EIRNotModifiedWithin = Wasn't modified within the required time
EIRSizeOutOfBounds = File size is too small or too large
EIRIdentical = The source & destination files are considered the same (based on the profile settings)
EIRAdvancedSetting = Due to Decisions-Files, Decision-Folders settings. Many possible reasons, e.g. in destination but not source
EIRNotOldEnoughToDelete = Old file (only in source or dest) not deleted as it's not old enough
EIRCannotModifySource = Source cannot be modified, e.g. Fast Backup
EIROtherFileNewer = The destination file is newer so cannot be replaced
EIRCannotReplaceReadOnly = The destination file is read-only so cannot be replaced
EIRCannotDelReadOnly = The destination file is read-only so cannot be deleted
EIRCannotMoveCopyReadOnly = Source is read-only so cannot be copied
EIRCannotMoveCopyNotAttrib = Source file does not have archive attribute set so cannot be copied
EIRCannotMoveCopyHidden = Source file has hidden attribute set so cannot be copied
EIRCannotMoveCopySystem = Source file has system attribute set so cannot be copied
EIRDST = Not copied due to DST time difference
EIRSameSize = Files same size
EIRScript = Ignored by script
EIRCannotMoveCopyCloudOffline = Source file has cloud offline attribute set so cannot be copied
EIRCannotMoveCopyEncrypted = Source file has encrypted attribute set so cannot be copied
EIRCannotModifyDest = Destination cannot be modified
EIRSameTime = Files same date & time
EIRReplacingWithEmpty = Trying to replace a non-empty file with an empty file
EIRNotCreatedWithin = Wasn't created within the required time
EIRCannotMoveCopyTemp = Source file has temp attribute set so cannot be copied
EIRCannotMoveCopyRPFiles = Source file has reparse point attribute set so cannot be copied
EIRCannotMoveCopyNTFSOffline = Source file has NTFS offline attribute set so cannot be copied
EIRNotAccessedWithin = Wasn't accessed within the required time (V11)
EIRHiddenDirectory = Ignoring hidden directories (V11)
EIRSystemDirectory = Ignoring system directories (V11)
EIRAlreadyScanned = Is a junction point and the folder it points to has already been scanned (V11)
EIRWindowsJunctionPoint = Is a Windows backwards compatible junction point and settings say they are to be ignored (V11)
EIRPinned = Ignoring pinned files and directories (V11)
EIRUnpinned = Ignoring unpinned files and directories (V11)
EIRPlaceHolder = Ignoring placeholder directories (V11)
EIRSizeDiffTooSmall = File size difference is too small (V12)
**ProfileTypes**
The following are profile types:
ptInvalid = Invalid profile type
ptProfile = Normal profile
ptGroup = Group profile
**Results**
The following are profile run results:
ELR_None = No result (0)
ELR_UnknownProfile = Unknown profile (1)
ELR_AlreadyRunning = Profile is already running (2)
ELR_Imported = Profile has been imported and not run yet (3)
ELR_Running = Profile is running (4)
ELR_InternalError = Internal error (5)
ELR_SimAborted = Simulated run was aborted (6)
ELR_SimFailed = Simulated run failed (7)
ELR_SimSuccess = Simulated run was a success (8)
ELR_RestAborted = Restore was aborted (9)
ELR_RestFailed = Restore failed (10)
ELR_RestSuccess = Restore was a success (11)
ELR_Aborted = Run was aborted (12)
ELR_AbortedRemote = Run was aborted (remotely) (32)
ELR_Failed = Run failed (13)
ELR_Success = Run was a success (14)
ELR_NetFailed = Failed due to network connection (15)
ELR_ScanFailed = Failed because left or right could not be scanned (16)
ELR_CompFailed = Failed because the left and right could not be compared (17)
ELR_RunBeforeFailed = Run failed because Run Before program stopped profile (18)
ELR_Disabled = Run failed because profile is disabled (19)
ELR_SMARTFailed = Run failed because drive errors were found (20)
ELR_EmailFailed = Run failed because the log could not be emailed (21)
ELR_SnapshotFailed = Run failed because the Volume Shadow Copy service failed (22)
ELR_TimeLimit = Profile was aborted because it reached its run-time limit (23)
ELR_TooManyDeletes = Profile was aborted because too many files would be deleted (24)
ELR_TooManyUpdates = Profile was aborted because too many files would be updated (30)
ELR_TooManyCopies = Profile was aborted because too many files would be copied/moved (33)
ELR_TooManyErrors = Profile was aborted because too many errors occurred (35)
ELR_IntegrityCheckAborted = Integrity check run was aborted (27)
ELR_IntegrityCheckFailed = Integrity check run failed (28)
ELR_IntegrityCheckSuccess = Integrity check run was a success (29)
ELR_RansomwareProtection = Ransomware Protection (31)
ELR_Elevation = Incorrect elevation (34)
**TBingVoice**
The following are Bing voices:
bv_Local = Uses local Windows COM Speech
bv_ArabicEgyptFemale = ar-EG Female Hoda
bv_ArabicSaudiArabiaMale = ar-SA Male Naayf
bv_BulgarianBulgariaMale = bg-BG Male Ivan
bv_CatalanSpainFemale = ca-ES Female HerenaRUS
bv_DanishDenmarkFemale = da-DK Female HelleRUS
bv_GermanAustriaMale = de-AT Male Michael
bv_GermanSwitzerlandMale = de-CH Male Karsten
bv_GermanGermanyFemale = de-DE Female Hedda
bv_GermanGermanyFemale2 = de-DE Female HeddaRUS
bv_GermanGermanyMale = de-DE Male Stefan, Apollo
bv_GreekGreeceMale = el-GR Male Stefanos
bv_EnglishAustraliaFemale = en-AU Female Catherine
bv_EnglishAustraliaFemale2 = en-AU Female HayleyRUS
bv_EnglishCanadaFemale = en-CA Female Linda
bv_EnglishCanadaFemale2 = From V11, this is identical to bv_EnglishCanadaFemale
bv_EnglishBritainFemale = en-GB Female Susan, Apollo
bv_EnglishBritainFemale2 = en-GB Female HazelRUS
bv_EnglishBritainMale = en-GB Male George, Apollo
bv_EnglishIndiaFemale = en-IN Female Heera, Apollo
bv_EnglishIndiaFemale2 = From V11, this is identical to bv_EnglishIndiaFemale
bv_EnglishIndiaMale = en-IN Male Ravi, Apollo
bv_EnglishUnitedStatesFemale = en-US Female ZiraRUS
bv_EnglishUnitedStatesFemale2 = en-US Female JessaRUS
bv_EnglishUnitedStatesMale = en-US Male BenjaminRUS
bv_SpanishSpainFemale = es-ES Female Laura, Apollo
bv_SpanishSpainFemale2 = es-ES Female HelenaRUS
bv_SpanishSpainMale = es-ES Male Pablo, Apollo
bv_SpanishMexicoFemale = es-MX Female HildaRUS
bv_SpanishMexicoMale = es-MX Male Raul, Apollo
bv_FinnishFinlandFemale = fi-FI Female HeidiRUS
bv_FrenchCanadaFemale = fr-CA Female Caroline
bv_FrenchCanadaFemale2 = From V11, this is identical to bv_FrenchCanadaFemale
bv_FrenchSwitzerlandMale = fr-CH Male Guillaume
bv_FrenchFranceFemale = fr-FR Female Julie, Apollo
bv_FrenchFranceFemale2 = fr-FR Female HortenseRUS
bv_FrenchFranceMale = fr-FR Male Paul, Apollo
bv_HebrewIsraelMale = he-IL Male Asaf
bv_HindiIndiaFemale = hi-IN Female Kalpana, Apollo
bv_HindiIndiaFemale2 = hi-IN Female Kalpana
bv_HindiIndiaMale = hi-IN Male Hemant
bv_CroatianCroatiaMale = hr-HR Male Matej
bv_HungarianHungaryMale = hu-HU Male Szabolcs
bv_IndonesianIndonesiaMale = id-ID Male Andika
bv_ItalianItalyMale = it-IT Male Cosimo, Apollo
bv_JapaneseJapanFemale = ja-JP Female Ayumi, Apollo
bv_JapaneseJapanMale = ja-JP Male Ichiro, Apollo
bv_JapaneseJapanFemale2 = ja-JP Female HarukaRUS
bv_JapaneseJapanFemale3 = ja-JP Female LuciaRUS
bv_JapaneseJapanMale2 = ja-JP Male EkaterinaRUS
bv_KoreanKoreaFemale = ko-KR Female HeamiRUS
bv_MalayMalaysiaMale = ms-MY Male Rizwan
bv_NorwegianNorwayFemale = nb-NO Female HuldaRUS
bv_DutchNetherlandsFemale = nl-NL Female HannaRUS
bv_PolishPolandFemale = pl-PL Female PaulinaRUS
bv_PortugueseBrazilFemale = pt-BR Female HeloisaRUS
bv_PortugueseBrazilMale = pt-BR Male Daniel, Apollo
bv_PortuguesePortugalFemale = pt-PT Female HeliaRUS
bv_RomanianRomaniaMale = ro-RO Male Andrei
bv_RussianRussiaFemale = ru-RU Female Irina, Apollo
bv_RussianRussiaMale = ru-RU Male Pavel, Apollo
bv_SlovakSlovakiaMale = sk-SK Male Filip
bv_SlovenianSloveniaMale = sl-SI Male Lado
bv_SwedishSwedenFemale = sv-SE Female HedvigRUS
bv_TamilIndiaMale = ta-IN Male Valluvar
bv_ThaiThailandMale = th-TH Male Pattara
bv_TurkishTurkeyFemale = tr-TR Female SedaRUS
bv_VietnameseVietnamMale = vi-VN Male An
bv_ChineseChinaFemale = zh-CN Female HuihuiRUS
bv_ChineseChinaFemale2 = zh-CN Female Yaoyao, Apollo
bv_ChineseChinaMale = zh-CN Male Kangkang, Apollo
bv_ChineseHongKongFemale = zh-HK Female Tracy, Apollo
bv_ChineseHongKongFemale2 = zh-HK Female TracyRUS
bv_ChineseHongKongMale = zh-HK Male Danny, Apollo
bv_ChineseTaiwanFemale = zh-TW Female Yating, Apollo
bv_ChineseTaiwanFemale2 = zh-TW Female HanHanRUS
bv_ChineseTaiwanMale = zh-TW Male Zhiwei, Apollo
**TIntegrityType**
The following are file integrity types:
EIT_None = None
EIT_CRC32 = CRC32 hash value
EIT_MD5 = MD5 hash value
EIT_SHA1 = SHA1 hash value
EIT_ETAG = Cloud ETAG value
EIT_SHA256 = SHA256 hash value
EIT_SHA512 = SHA512 hash value
**TLogFileStatus**
The following are log status types (introduced in V12):
EFSUnknown = Do not use
EFSSkippedBoth = File was skipped & was in both
EFSSkippedSrcOnly = File was skipped & was in source only
EFSSkippedDestOnly = File was skipped & was in dest only
EFSDeleted = File was deleted
EFSCopied = File was copied
EFSAttribs = File attribs and/or date & time changed
EFSWarning = Warning
EFSError = Error
EFSCopiedReboot = File was copied, but a reboot is required
EFSIgnoredSrc = File was ignored during scan of source, e.g. filtered out
EFSIgnoredDest = File was ignored during scan of destination, e.g. not selected
EFSIgnoredComp = File/folder was ignored during comparison, e.g. read-only
EFSUnchanged = File was unchanged (Fast Backup only)
EFSException = An exception report
EFSVerRestored = A version was restored
EFSSkippedNeither = The file was in neither the source nor destination
EFSRenamed = File/folder was renamed
EFSRenamedReboot = File was renamed, but a reboot is required
EFSIntegrityFailed = File failed integrity check because hashes don't match
EFSIntegritySuccess = File passed integrity check
EFSIntegrityError = File failed integrity check because of an error
EFSSkippedIdentical = File was skipped, was in both and are considered identical
EFSRunOutput = Output from run before or after (V11)
**TLogFormat**
The following are log format types (introduced in V12):
ELF_HTML
ELF_Text
ELF_None
**TVerStoreType**
The following are file version types:
EVTOldUncompressed
EVTOldCompressed
EVTNewUncompressed
EVTNewCompressed
EVTUnknown
EVTNativeFormat
EVTDeltaBaseFile
EVTDeltaHashFile
EVTDeltaPatchFile
EVTDeltaCurHashFile
EVTDeltaCurPatchFile
**Windows**
The following are the versions of Windows:
wvUnknown = Unknown
wvWin2000 = Windows 2000 - 5.0 (build 2195) - not supported
wvWinXP = Windows XP - 5.1 (build 2600) - not supported
wvWin2003 = Windows 2003 - 5.2 (also 2003 R2, Home Server, and XP Pro x64) (build 3790) - not supported
wvVista = Windows Vista - 6.0 (build 6000..6002)
wvWindows2008 = Windows 2008 - 6.0 (build 6001..6002)
wvWindows7 = Windows 7 - 6.1 (build 7600..7601)
wvWindows2008R2 = Windows 2008 R2 - 6.1 (build 7600..7601)
wvWindows8 = Windows 8 - 6.2 (build 9200)
wvWindows2012 = Windows 2012 - 6.2 (build 9200)
wvWindows81 = Windows 8.1 - 6.3 (build 9600)
wvWindows2012R2 = Windows 2012 R2 - 6.3 (build 9600)
wvWindows10 = Windows 10 - 10.0 (build 10240...)
wvWindows2016 = Windows 2016 - 10.0 (build < 17763)
wvWindows2019 = Windows 2019 - 10.0 (build >=17763)
wvWindows11 = Windows 11 - 10.0 (build 22000...)
wvWindows2022 = Windows 2022 - 10.0 (build >=20348)
wvWindows2025 = Windows 2025 - 10.0 (build >=26100)
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Script Functions
A number of built-in scripting functions are available. See also [Script Classes](ScriptClasses.md).
**function CallWebhook(AUrl, AData);**
**AUrl:** The URL of the webhook
**AData:** The data to send to the webhook, which is typically in JSON format
**Return value:** Empty string on success else an error message
Call a webhook.
AUrl should be the full URL, e.g. https://www.example.xyz/abc?def=ghi
If AData is an empty string, then the call is a GET, else it is a POST
See also [CallWebhookEx](ScriptFunctions.md#function_callwebhookex_aurl__adata__var_aresponsetext__).
NOTE: Introduced in SyncBackPro V11.3.95.0
**function CallWebhookEx(AUrl, AData, var AResponseText);**
**AUrl:** The URL of the webhook
**AData:** The data to send to the webhook, which is typically in JSON format
**AResponseText:** Set to the response from the web server (on exception it is the error message)
**Return value:** The response code, e.g. 200, else -1 if an exception was raised
Call a webhook.
AUrl should be the full URL, e.g. https://www.example.xyz/abc?def=ghi
If AData is an empty string, then the call is a GET, else it is a POST
AResponseText is set to the response text.
See also [CallWebhook](ScriptFunctions.md#function_callwebhook_aurl__adata__).
NOTE: Introduced in SyncBackPro V11.3.95.0
**function Ceil(AValue);**
**AValue:** The value to round up
**Return value:** The smallest integer greater than or equal to AValue
Rounds a value up to the nearest integer.
For example, Ceil(3.1) returns 4, Ceil(-3.1) returns -3.
NOTE: Introduced in SyncBackPro V12
**function ChangeFileExt(AFilename, AExtension);**
**AFilename:** The original filename
**AExtension:** The new extension (including the dot)
**Return value:** The filename with the new extension
Changes the file extension of a filename.
For example, ChangeFileExt('MyFile.txt', '.bak') returns 'MyFile.bak'.
NOTE: Introduced in SyncBackPro V12
**function ContainsStr(AText, ASubText);**
**AText:** The string to search in
**ASubText:** The substring to search for
**Return value:** True if ASubText is found in AText (case-sensitive)
Returns True if the substring is found within the string. The comparison is case-sensitive.
NOTE: Introduced in SyncBackPro V12
**function ContainsText(AText, ASubText);**
**AText:** The string to search in
**ASubText:** The substring to search for
**Return value:** True if ASubText is found in AText (case-insensitive)
Returns True if the substring is found within the string. The comparison is case-insensitive.
NOTE: Introduced in SyncBackPro V12
**function CopyFile(FromFilename, ToFilename);**
**FromFilename:** The file to copy
**ToFilename:** The destination filename
**Return value:** On success 0 is returned, else a windows error code.
This function copies a file using SyncBack's internal copying routine (which gives progress feedback in the user interface).
See also [SysErrorMessage](ScriptFunctions.md#function_syserrormessage_winerrcode__).
**function CreateDir(ADirectory);**
**ADirectory:** The directory to create
**Return value:** True if the directory was created successfully
Creates a new directory. Returns True on success.
NOTE: Introduced in SyncBackPro V12
**function DateAdd(Interval, Number, ADate);**
**Interval:** The type of interval to add (e.g. "yyyy", "m", "d", "h", "n", "s")
**Number:** The number of intervals to add (can be negative)
**ADate:** The date to add to
**Return value:** The resulting date
VBScript compatible DateAdd function. Returns a date to which a specified time interval has been added.
The Interval parameter specifies the time interval:
"yyyy" = Year "q" = Quarter "m" = Month "y" = Day of year (same as "d") "d" = Day "w" = Weekday (same as "d") "ww" = Week "h" = Hour "n" = Minute "s" = Second
Number is the number of intervals to add. It can be negative to subtract. Date is the date to which the interval is added.
NOTE: Introduced in SyncBackPro V12
**function DateOf(ADateTime);**
**ADateTime:** The date and time to convert
**Return value:** A date without the time
Strips the time portion from a TDateTime value.
Call DateOf to convert a TDateTime value to a TDateTime value that includes only the date information (sets the time portion to 0, which means midnight).
Note: DateOf can yield an invalid result for TDateTime values that were manually calculated (using Arithmetics). In such a case, we recommend that you round the value (ex. DateOf(RoundTo(Value, -8))) prior to calling the DateOf routine.
NOTE: Introduced in SyncBackPro V11
**function DayOf(ADate);**
**ADate:** The date to get the day of
**Return value:** Day of the date
Returns the day of the month represented by a TDateTime value.
Call DayOf to obtain the day of the month represented by a specified TDateTime value. DayOf returns a value from 1 through 31.
NOTE: Introduced in SyncBackPro V11
**function DayOfTheWeek(ADate);**
**ADate:** The date
**Return value:** Day of week (1=Monday, 7=Sunday)
Returns the day of the week for a given date.
Returns a value from 1 to 7 where 1 is Monday and 7 is Sunday (ISO 8601).
NOTE: Introduced in SyncBackPro V12
**function DaysBetween(Now, Then);**
**Now:** Date and time 1
**Then:** Date and time 2
**Return value:** Returns the years between Now and Then
Returns the number of whole days between two specified TDateTime values.
Call DaysBetween to obtain the difference, in days, between two TDateTime values.
DaysBetween counts only whole days. Thus, DaysBetween reports the difference between Dec 31, 1999 11:59 P.M. and Jan 1, 2000 11:58 P.M. as 0, because the difference is one minute short of an entire day.
DaysBetween always returns a positive result and therefore the parameter values are interchangeable.
This function was introduced in SyncBackPro V10.2.59.0
**function DaysInAMonth(AYear, AMonth);**
**AYear:** The year
**AMonth:** The month of the year
**Return value:** The number of days in the specified month
Returns the number of days in a specified month of a specified year.
Call DaysInAMonth to obtain the number of days in the specified month of the specified year.
AYear is a year from 1 through 9999 (inclusive).
AMonth is a month from 1 through 12 (inclusive).
NOTE: Introduced in SyncBackPro V11
**function DaysInAYear(AYear);**
**AYear:** The year
**Return value:** The number of days in the specified year
Returns the number of days in a specified year.
Call DaysInAYear to obtain the number of days in the year specified by AYear. AYear is a year from 1 through 9999 (inclusive).
NOTE: Introduced in SyncBackPro V11
**function DaysInMonth(AValue);**
**AValue:** The date to check
**Return value:** The number of days in the specified month
Returns the number of days in the month of a specified TDateTime value.
Call DaysInMonth to obtain the number of days in the month of the TDateTime value specified by AValue.
NOTE: Introduced in SyncBackPro V11
**function DaysInYear(AValue);**
**AValue:** The date to check (with the year)
**Return value:** The number of days in the specified year
Returns the number of days in the year of a specified TDateTime value.
Call DaysInYear to obtain the number of days in the year of the TDateTime value specified by AValue.
NOTE: Introduced in SyncBackPro V11
**function DeleteFile(AFilename);**
**AFilename:** The file to delete
**Return value:** On success TRUE is returned
This function deletes a file. If the file does not exist TRUE is returned.
**function DirectoryExists(ADirectory);**
**ADirectory:** The directory path to check
**Return value:** True if the directory exists
Returns True if a directory exists.
NOTE: Introduced in SyncBackPro V12
**function DupeString(AText, ACount);**
**AText:** The string to duplicate
**ACount:** The number of copies
**Return value:** The duplicated string
Returns a string consisting of ACount copies of AText.
For example, DupeString('ab', 3) returns 'ababab'.
NOTE: Introduced in SyncBackPro V12
**function EndOfADay(AYear, AMonth, ADay);**
**AYear:** The year of the desired day
**AMonth:** The month of the desired day. AMonth can range from 1 through 12.
**ADay:** The day of the desired day. ADay can range from 1 through 28, 29, 30, or 31, depending on the values of AYear and AMonth.
**Return value:** End of the day
Returns a TDateTime that represents the last millisecond of a specified day.
EndOfADay returns the last expressible moment (11:59:59.999 P.M.) of a specified day.
If the parameters do not specify a valid date, EndOfADay raises an EConvertError exception.
See also [EndOfADay2](ScriptFunctions.md#function_endofaday2_ayear__adayofyear__).
NOTE: Introduced in SyncBackPro V11
**function EndOfADay2(AYear, ADayOfYear);**
**AYear:** The year of the desired day
**ADayOfYear:** The desired day as a day of the year, where 1 is January 1, 2 is January 2, 32 is February 1, and so on.
**Return value:** End of the day
Returns a TDateTime that represents the last millisecond of a specified day.
EndOfADay2 returns the last expressible moment (11:59:59.999 P.M.) of a specified day.
If the parameters do not specify a valid date, EndOfADay raises an EConvertError exception.
See also [EndOfADay](ScriptFunctions.md#function_endofaday_ayear__amonth__aday__).
NOTE: Introduced in SyncBackPro V11
**function EndOfAMonth(AYear, AMonth);**
**AYear:** The year of the desired month.
**AMonth:** The month. It can range from 1 through 12.
**Return value:** End of the month
Returns a TDateTime that represents the last millisecond of the last day of a specified month.
EndOfAMonth returns the last expressible moment (11:59:59.999 P.M.) of the last day of a specified month.
If the parameters do not specify a valid month, EndOfAMonth raises an EConvertError exception.
NOTE: Introduced in SyncBackPro V11
**function EndOfAWeek(AYear, AWeekOfYear, ADayOfWeek);**
**AYear:** The year of the desired day.
**AWeekOfYear:** The week of the year, where 1 is the first week in AYear that includes four or more days.
**ADayOfWeek:** The desired day in the specified week, where 1 is Monday, 2 is Tuesday, and so on.
**Return value:** End of the week
Returns a TDateTime object value that represents the last millisecond of a specified day of a specified week.
EndOfAWeek returns the last expressible moment (11:59:59.999 P.M.) of the specified day of the specified week.
If the parameters do not specify a valid date, EndOfAWeek raises an EConvertError exception.
Note: The definitions for AWeekOfYear and ADayOfWeek follow the ISO 8601 standard.
NOTE: Introduced in SyncBackPro V11
**function EndOfAYear(AYear);**
**AYear:** The year to get the end of
**Return value:** End of the year
Returns a TDateTime that represents the last millisecond of a specified year.
EndOfAYear returns the last expressible moment (December 31 at 11:59:59.999 P.M.) of the year specified by the AYear parameter.
NOTE: Introduced in SyncBackPro V11
**function EndOfTheDay(ADate);**
**ADate:** The date
**Return value:** End of the day
Returns a TDateTime that represents the last millisecond of the day identified by a specified TDateTime.
EndOfTheDay returns the last expressible moment of the same day as the TDateTime specified by ADate. That is, it replaces the time portion of ADate with 11:59:59.999 P.M. and returns the result.
NOTE: Introduced in SyncBackPro V11
**function EndOfTheMonth(ADate);**
**ADate:** The date to get the end of the month of
**Return value:** End of the month
Returns a TDateTime that represents the last millisecond of the last day of the month identified by a specified TDateTime.
EndOfTheMonth returns the last expressible moment of the same month as the TDateTime specified by ADate. That is, it replaces the time portion of AValue with 11:59:59.999 P.M., changes the day to the last day of the month, and returns the result.
NOTE: Introduced in SyncBackPro V11
**function EndOfTheWeek(ADate);**
**ADate:** The date
**Return value:** End of the week
Returns a TDateTime that represents the last millisecond of the last day of the week identified by a specified TDateTime.
EndOfTheWeek returns the last expressible moment of the same week as the TDateTime specified by ADate. That is, it replaces the time portion of ADate with 11:59:59.999 P.M., changes the day to the last day of the week, and returns the result.
Note: EndOfTheWeek defines the week of ADate according to the ISO 8601 standard. That is, the week starts on Monday and ends on Sunday.
NOTE: Introduced in SyncBackPro V11
**function EndOfTheYear(ADate);**
**ADate:** The date get the end of the year of
**Return value:** End of the year
Returns a TDateTime that represents the last millisecond of the last day of the year identified by a specified TDateTime.
EndOfTheYear returns the last expressible moment of the same year as the TDateTime specified by ADate. That is, it replaces the time portion of AValue with 11:59:59.999 P.M., changes the day to December 31, and returns the result.
NOTE: Introduced in SyncBackPro V11
**function EndsStr(ASubText, AText);**
**ASubText:** The string that AText must end with
**AText:** The string to check to see if it ends with ASubText
**Return value:** TRUE if AText ends with ASubText
EndsStr determines if string AText ends with substring ASubText using a case sensitive string comparison. Returns true if AText ends with ASubText.
For a case insensitive comparison, use the EndsText routine.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function EndsText(ASubText, AText);**
**ASubText:** The string that AText must end with
**AText:** The string to check to see if it ends with ASubText
**Return value:** TRUE if AText ends with ASubText
EndsText determines if string AText ends with substring ASubText using a case insensitive string comparison. Returns true if AText ends with ASubText.
For a case sensitive comparison, use the EndsStr routine.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function Escape(ToEscape);**
**ToEscape:** The string to escape
**Return value:** The escaped string
Equivalent to the VBScript Escape method (for escaping strings to they can be passed in a URL).
For an example, see SendResultViaTwitter.bas
**function ExcludeTrailingPathDelimiter(AFilename);**
**AFilename:** The filename to remove the trailing delimiter from
**Return value:** AFilename with trailing path delimiter removed
Returns a path name without a trailing delimiter.
ExcludeTrailingPathDelimiter returns AFilename, with the trailing path delimiter ('\') removed. If the last character in AFilename is not a delimiter, then AFilename is returned unchanged.
NOTE: Introduced in SyncBackPro V11.3.94.0
**function ExpandFileName(AFilename);**
**AFilename:** The filename (can be relative)
**Return value:** The fully qualified filename
Converts a relative filename to a fully qualified filename using the current directory.
NOTE: Introduced in SyncBackPro V12
**function ExtractFileDrive(AFilename);**
**AFilename:** The full path
**Return value:** The drive portion
Extracts the drive from a full filename.
For example, ExtractFileDrive('C:\Folder\MyFile.txt') returns 'C:'.
NOTE: Introduced in SyncBackPro V12
**function ExtractFileExt(AFilename);**
**AFilename:** The filename or full path
**Return value:** The file extension including the dot
Extracts the file extension (including the leading dot) from a filename.
For example, ExtractFileExt('MyFile.txt') returns '.txt'.
NOTE: Introduced in SyncBackPro V12
**function ExtractFileName(AFilename);**
**AFilename:** The full path
**Return value:** The filename portion
Extracts the filename (including extension) from a full path.
For example, ExtractFileName('C:\Folder\MyFile.txt') returns 'MyFile.txt'.
NOTE: Introduced in SyncBackPro V12
**function ExtractFilePath(AFilename);**
**AFilename:** The full path
**Return value:** The directory path including trailing backslash
Extracts the directory path from a full filename, including the trailing backslash.
For example, ExtractFilePath('C:\Folder\MyFile.txt') returns 'C:\Folder\'.
NOTE: Introduced in SyncBackPro V12
**function FileExists(Filename, IgnoreDirs);**
**Filename:** The file to check if exists
**IgnoreDirs:** If passed as TRUE, and the file is actually a directory, then FALSE is returned
**Return value:** TRUE if the file exists
Returns TRUE if file exists. This also returns TRUE if the folder exists, unless IgnoreDirs is TRUE. If the file is a symbolic link it only tests if the symbolic link exists and not the file the link points to.
See also [SysErrorMessage](ScriptFunctions.md#function_syserrormessage_winerrcode__).
NOTE: Introduced in SyncBackPro V11.3.108.0
**function FirstChar(AText);**
**AText:** The text to get the first character from
**Return value:** The first character of AText
FirstChar returns the first character in a string.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function Floor(AValue);**
**AValue:** The value to round down
**Return value:** The largest integer less than or equal to AValue
Rounds a value down to the nearest integer.
For example, Floor(3.9) returns 3, Floor(-3.9) returns -4.
NOTE: Introduced in SyncBackPro V12
**function GetObject(Pathname);**
**Pathname:** The class required
**Return value:** The class requested
Equivalent to the VBScript GetObject method, but with only one parameter.
For examples, see WaitForFinishEx.bas and CreateRestorePoint.bas
**function GetTempPath;**
**Return value:** The temporary files directory path
Returns the path of the temporary files directory.
NOTE: Introduced in SyncBackPro V12
**function HourOf(ADate);**
**ADate:** The date to get the hour of
**Return value:** Hour of the time
Returns the hour of the day represented by a TDateTime value.
Call HourOf to obtain the hour of the day represented by a specified TDateTime value. HourOf returns a value from 0 through 23.
NOTE: Introduced in SyncBackPro V11
**function HoursBetween(Now, Then);**
**Now:** Date and time 1
**Then:** Date and time 2
**Return value:** Returns the hours between Now and Then
Returns the number of whole hours between two specified TDateTime values.
Call HoursBetween to obtain the difference, in hours, between two TDateTime values. HoursBetween counts only entire hours. Thus, HoursBetween reports the difference between 9:00 A.M. and 9:59:59 A.M. as 0 because the difference is one second short of an entire hour.
HoursBetween always returns a positive result and therefore the parameter values are interchangeable.
This function was introduced in SyncBackPro V10.2.59.0
**function IncDay(ADate, NumberOfDays);**
**ADate:** The starting date
**NumberOfDays:** Number of days to add (can be negative)
**Return value:** The resulting date
Returns a date shifted by the specified number of days.
NOTE: Introduced in SyncBackPro V12
**function IncHour(ADate, NumberOfHours);**
**ADate:** The starting date/time
**NumberOfHours:** Number of hours to add (can be negative)
**Return value:** The resulting date/time
Returns a date/time shifted by the specified number of hours.
NOTE: Introduced in SyncBackPro V12
**function IncludeTrailingPathDelimiter(AFilename);**
**AFilename:** The filename to append the delimiter to
**Return value:** AFilename with appended path delimiter
IncludeTrailingPathDelimiter ensures that a path name ends with a trailing path delimiter ('\'). If AFilename already ends with a trailing delimiter character, it is returned unchanged; otherwise, AFilename is returned with an appended delimiter character.
NOTE: Introduced in SyncBackPro V11.3.94.0
**function IncMilliSecond(ADate, NumberOfMilliSeconds);**
**ADate:** The starting date/time
**NumberOfMilliSeconds:** Number of milliseconds to add (can be negative)
**Return value:** The resulting date/time
Returns a date/time shifted by the specified number of milliseconds.
NOTE: Introduced in SyncBackPro V12
**function IncMinute(ADate, NumberOfMinutes);**
**ADate:** The starting date/time
**NumberOfMinutes:** Number of minutes to add (can be negative)
**Return value:** The resulting date/time
Returns a date/time shifted by the specified number of minutes.
NOTE: Introduced in SyncBackPro V12
**function IncMonth(ADate, NumberOfMonths);**
**ADate:** The starting date
**NumberOfMonths:** Number of months to add (can be negative)
**Return value:** The resulting date
Returns a date shifted by the specified number of months.
NOTE: Introduced in SyncBackPro V12
**function IncSecond(ADate, NumberOfSeconds);**
**ADate:** The starting date/time
**NumberOfSeconds:** Number of seconds to add (can be negative)
**Return value:** The resulting date/time
Returns a date/time shifted by the specified number of seconds.
NOTE: Introduced in SyncBackPro V12
**function IncWeek(ADate, NumberOfWeeks);**
**ADate:** The starting date
**NumberOfWeeks:** Number of weeks to add (can be negative)
**Return value:** The resulting date
Returns a date shifted by the specified number of weeks.
NOTE: Introduced in SyncBackPro V12
**function IncYear(ADate, NumberOfYears);**
**ADate:** The starting date
**NumberOfYears:** Number of years to add (can be negative)
**Return value:** The resulting date
Returns a date shifted by the specified number of years.
NOTE: Introduced in SyncBackPro V12
**function IntToHex(AValue, ADigits);**
**AValue:** The integer value to convert
**ADigits:** The minimum number of hex digits
**Return value:** The hexadecimal string
Converts an integer to a hexadecimal string with the specified number of digits.
For example, IntToHex(255, 4) returns '00FF'.
NOTE: Introduced in SyncBackPro V12
**function IsAM(ATime);**
**ATime:** The to check
**Return value:** TRUE if the time is AM
Indicates whether the time portion of a specified TDateTime value occurs before noon.
IsAM returns True if the time portion of AValue occurs after 00:00 (midnight) and before or at 12:00 (noon).
NOTE: Introduced in SyncBackPro V11
**function IsInLeapYear(ADate);**
**ADate:** The date and time to check
**Return value:** TRUE if the date is in a leap year
Indicates whether a specified TDateTime value occurs in a leap year.
Call IsInLeapYear to determine whether the year of the date specified by ADateTime occurs in a leap year.
NOTE: Introduced in SyncBackPro V11
**function IsPM(ATime);**
**ATime:** The to check
**Return value:** TRUE if the time is PM
Indicates whether the time portion of a specified TDateTime value occurs in the afternoon.
IsPM returns True if the time portion of AValue occurs on or after 12:00 noon and before 00:00 midnight.
NOTE: Introduced in SyncBackPro V11
**function IsSameDay(ADate1, ADate2);**
**ADate1:** The date to check
**ADate2:** The date to compare to ADate1
**Return value:** True if the dates are the same day
Indicates whether a specified TDateTime value occurs on a the same day as a criterion date.
IsSameDay returns True if ADate1 occurs on the same day as ADate2. The time portions of ADate1 and ADate2 can differ.
IsSameDay returns False if the date portions of ADate1 and ADate2 differ.
NOTE: Introduced in SyncBackPro V11
**function IsToday(AValue);**
**AValue:** The date to check
**Return value:** True if the date is today
Indicates whether a specified TDateTime value occurs on the current date.
IsToday returns True if AValue occurs on the current day.
IsToday returns False if AValue represents a time on any other day.
NOTE: Introduced in SyncBackPro V11
**function IsValidDate(AYear, AMonth, ADay);**
**AYear:** The year
**AMonth:** The month of the year
**ADay:** The day of the month
**Return value:** TRUE if the date is valid
Indicates whether a specified year, month, and day represent a valid date.
IsValidDate returns True if:
- AYear falls in the range from 1 through 9999 inclusive. - AMonth falls in the range from 1 through 12 inclusive. - ADay falls in the range from 1 through the number of days in the specified month.
Otherwise, IsValidDate returns False.
NOTE: Introduced in SyncBackPro V11
**function IsValidDateDay(AYear, ADay);**
**AYear:** The year
**ADay:** The day of the year
**Return value:** TRUE if the year and day are valid
Indicates whether a specified year and day of the year represent a valid date.
IsValidDateDay returns True if:
- AYear falls in the range from 1 through 9999 inclusive. - ADay falls in the range from 1 through the number of days in the specified year.
Otherwise, IsValidDateDay returns False.
NOTE: Introduced in SyncBackPro V11
**function IsValidDateMonthWeek(AYear, AMonth, AWeekOfMonth, ADayOfWeek);**
**AYear:** The year
**AMonth:** The month of the year
**AWeekOfMonth:** The week of the month
**ADayOfWeek:** The day of the week
**Return value:** TRUE if it is valud
Indicates whether a specified year, month, week of the month, and day of the week represent a valid date.
IsValidDateMonthWeek returns True if:
- AYear falls in the range from 1 through 9999 inclusive. - AMonth falls in the range from 1 through 12 inclusive. - AWeekOfMonth falls in the range from 1 through the number of weeks in the specified month. - ADayOfWeek falls in the range from 1 through 7.
Otherwise, IsValidDateMonthWeek returns False.
NOTE: Introduced in SyncBackPro V11
**function IsValidDateTime(AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond);**
**AYear:** The year
**AMonth:** The month of the year
**ADay:** The day of the month
**AHour:** The hour of the day
**AMinute:** The minutor of the hour
**ASecond:** The second of the minute
**AMilliSecond:** The milli-second of the second
**Return value:** TRUE if the date and time is valid
Indicates whether a specified year, month, day, hour, minute, second, and millisecond represent a valid date and time.
IsValidDateTime returns True if:
- AYear falls in the range from 1 through 9999 inclusive. - AMonth falls in the range from 1 through 12 inclusive. - ADay falls in the range from 1 through the number of days in the specified month. - AHour falls in the range from 0 through 24, and if AHour is 24, then AMinute, ASecond, and AMilliSecond must all be 0. - AMinute falls in the range from 0 through 59 inclusive. - ASecond falls in the range from 0 through 59 inclusive. - AMilliSecond falls in the range from 0 through 999 inclusive.
Otherwise, IsValidDateTime returns False.
NOTE: Introduced in SyncBackPro V11
**function IsValidDateWeek(AYear, AWeekOfYear, ADayOfWeek);**
**AYear:** The year
**AWeekOfYear:** The week of the year
**ADayOfWeek:** The day of the week
**Return value:** TRUE if it is valud
Indicates whether a specified year, week of the year, and day of the week represent a valid date.
IsValidDateWeek returns true if:
- AYear falls in the range from 1 through 9999 inclusive. - AWeekOfYear falls in the range from 1 through the number of weeks in the specified year. - ADayOfWeek falls in the range from 1 through 7.
Otherwise, IsValidDateWeek returns False.
NOTE: Introduced in SyncBackPro V11
**function IsValidTime(AHour, AMinute, ASecond, AMilliSecond);**
**AHour:** The hour of the day
**AMinute:** The minutor of the hour
**ASecond:** The second of the minute
**AMilliSecond:** The milli-second of the second
**Return value:** TRUE if the time is valid
Indicates whether a specified hour, minute, second, and millisecond represent a valid date and time.
IsValidTime returns True if:
- AHour falls in the range from 0 through 24, and if AHour is 24, then AMinute, ASecond, and AMilliSecond must all be 0. - AMinute falls in the range from 0 through 59 inclusive. - ASecond falls in the range from 0 through 59 inclusive. - AMilliSecond falls in the range from 0 through 999 inclusive.
Otherwise, IsValidTime returns False.
NOTE: Introduced in SyncBackPro V11
**function LastChar(AText);**
**AText:** The text to get the last character from
**Return value:** The last character of AText
LastChar returns the last character in a string.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function LastDelimiter(ALastDelimiters, AString);**
**ALastDelimiters:** The delimiters to search AString for
**AString:** The string to search
**Return value:** The index of the last character that matches any delimiter
Returns the index of the last character that matches any character in a specified set of delimiters.
Call LastDelimiter to locate the last delimiter in a specified string.
ALastDelimiters is a string where each character is a valid delimiter.
AString is the string to search for delimiters.
Example:
```
MyIndex := LastDelimiter('\.:','c:\filename.ext');
```
NOTE: Introduced in SyncBackPro V11.2.26.0
**function LeftStr(AText, ACount);**
**AText:** The string to get the left (start) of
**ACount:** The number of characters
**Return value:** The left of the string
Returns the substring of a specified length that appears at the start of a string.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function Log10(AValue);**
**AValue:** The value (must be greater than 0)
**Return value:** The base-10 logarithm
Returns the base-10 logarithm of a value.
NOTE: Introduced in SyncBackPro V12
**function MatchesMask(AFilename, AMask);**
**AFilename:** The filename to check (can be any string, does not need to be a filename)
**AMask:** The mask
**Return value:** TRUE if the string matches the mask
Indicates whether a file name conforms to the format specified by a filter string.
Call MatchesMask to check the AFilename parameter using the AMask parameter to describe valid values. A valid mask consists of literal characters, sets, and wildcards.
Each literal character must match a single character in the string. The comparison to literal characters is case-insensitive.
Each set begins with an opening bracket ([) and ends with a closing bracket (]). Between the brackets are the elements of the set. Each element is a literal character or a range. Ranges are specified by an initial value, a dash (-), and a final value. Do not use spaces or commas to separate the elements of the set. A set must match a single character in the string. The character matches the set if it is the same as one of the literal characters in the set, or if it is in one of the ranges in the set. A character is in a range if it matches the initial value, the final value, or falls between the two values. All comparisons are case-insensitive. If the first character after the opening bracket of a set is an exclamation point (!), then the set matches any character that is not in the set.
Wildcards are asterisks (*) or question marks (?). An asterisk matches any number of characters. A question mark matches a single arbitrary character.
MatchesMask returns TRUE if the string matches the mask. MatchesMask returns FALSE if the string does not match the mask or MatchesMask raises an exception if the mask is syntactically invalid.
Note: The Filename parameter does not need to be a file name. MatchesMask can be used to check strings against any syntactically correct mask.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function Max(A, B);**
**A:** First value
**B:** Second value
**Return value:** The larger of the two values
Returns the larger of two values.
NOTE: Introduced in SyncBackPro V12
**function MidStr(AText, AStart, ACount);**
**AText:** The string to get the result from
**AStart:** The starting point in AText to get the characters from (first character is 1)
**ACount:** The number of characters to retrieve from AText
**Return value:** The string
Returns the substring of a specified length that appears at a specified position in a string.
MidStr returns a substring ACount characters at AText[AStart].
If AStart is larger than the length of AText, MidStr returns an empty string.
If ACount specifies more characters than are available, only the characters from AText[AStart] to the end of AText are returned.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function MilliSecondOf(ADate);**
**ADate:** The date to get the milli-second of
**Return value:** Milli-second of the time
Returns the millisecond of the second represented by a TDateTime value.
Call MilliSecondOf to obtain the millisecond of the second represented by a specified TDateTime value. MilliSecondOf returns a value from 0 through 999.
NOTE: Introduced in SyncBackPro V11
**function MilliSecondsBetween(Now, Then);**
**Now:** Date and time 1
**Then:** Date and time 2
**Return value:** Returns the milli-seconds between Now and Then
Returns the number of milliseconds between two specified TDateTime values.
Call MilliSecondsBetween to obtain the difference, in milliseconds, between two TDateTime values.
MilliSecondsBetween always returns a positive result and therefore the parameter values are interchangeable.
This function was introduced in SyncBackPro V10.2.59.0
**function Min(A, B);**
**A:** First value
**B:** Second value
**Return value:** The smaller of the two values
Returns the smaller of two values.
NOTE: Introduced in SyncBackPro V12
**function MinuteOf(ADate);**
**ADate:** The date to get the minute of
**Return value:** Minute of the time
Returns the minute of the hour represented by a TDateTime value.
Call MinuteOf to obtain the minute of the hour represented by a specified TDateTime value. MinuteOf returns a value from 0 through 59.
NOTE: Introduced in SyncBackPro V11
**function MinutesBetween(Now, Then);**
**Now:** Date and time 1
**Then:** Date and time 2
**Return value:** Returns the minutes between Now and Then
Returns the number of minutes between two specified TDateTime values.
Call MinutesBetween to obtain the difference, in minutes, between two TDateTime values. MinutesBetween counts only entire minutes. Thus, MinutesBetween reports the difference between 9:00:00 A.M. and 9:00:59:999 A.M. as 0, because the difference is one millisecond short of an entire minute.
MinutesBetween always returns a positive result and therefore the parameter values are interchangeable.
This function was introduced in SyncBackPro V10.2.59.0
**function MonthOf(ADate);**
**ADate:** The date to get the month of
**Return value:** Month of the date
Returns the month of the year represented by a TDateTime value.
Call MonthOf to obtain the month of the year represented by a specified TDateTime value. MonthOf returns a value from 1 through 12.
NOTE: Introduced in SyncBackPro V11
**function MonthsBetween(Now, Then);**
**Now:** Date and time 1
**Then:** Date and time 2
**Return value:** Returns the months between Now and Then
Returns the approximate number of months between two specified TDateTime values.
Call MonthsBetween to obtain the difference, in months, between two TDateTime values. Because months are not all the same length, MonthsBetween returns an approximation based on an assumption of 30.4375 days per month. Fractional months are not counted. Thus, for example, MonthsBetween reports the difference between February 1 and March 1 as 0.
MonthsBetween always returns a positive result and therefore the parameter values are interchangeable.
This function was introduced in SyncBackPro V10.2.59.0
**function MoveFile(FromFilename, ToFilename, CanCopy, var MoveOnReboot, FailIfExists);**
**FromFilename:** The file to rename
**ToFilename:** The new filename (where to move it to)
**CanCopy:** Allow copy and delete if cannot do move
**MoveOnReboot:** Allow move on reboot? If passed as TRUE, and is returned as FALSE, then no reboot is required.
**FailIfExists:** Fail if ToFilename already exists
**Return value:** On success 0 is returned, else a windows error code.
This function moves (renames) a file. The move uses SyncBack's internal moving routine (which gives progress feedback in the user interface).
See also [SysErrorMessage](ScriptFunctions.md#function_syserrormessage_winerrcode__).
NOTE: Introduced in SyncBackPro V11.3.108.0
**function PosEx(ASubStr, AString, AOffset);**
**ASubStr:** The string to search AString for
**AString:** The string to search
**AOffset:** The start point in AString to search (first characters is 1)
**Return value:** The index of the first occurrence of a substring within a string or zero if not found or AOffset is invalid
Returns the index of the first occurrence of a substring within a string.
PosEx returns the index of ASubStr in AString, beginning the search at AOffset.
If AOffset is 1, PosEx is equivalent to Pos.
If ASubStr is not found or AOffset is invalid (greater than the length of AString or less than 1), then the result is 0.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function Power(Base, Exponent);**
**Base:** The base value
**Exponent:** The exponent
**Return value:** Base raised to the power of Exponent
Raises Base to the specified exponent.
For example, Power(2, 10) returns 1024.
NOTE: Introduced in SyncBackPro V12
**function RandomRange(AFrom, ATo);**
**AFrom:** The minimum value (inclusive)
**ATo:** The maximum value (exclusive)
**Return value:** A random integer in the range
Returns a random integer within the specified range [AFrom, ATo).
The value returned is greater than or equal to AFrom and strictly less than ATo.
NOTE: Introduced in SyncBackPro V12
**function ReadStringFromFile(AFilename);**
**AFilename:** The filename of the file to read
**Return value:** The contents of the file
Returns the contents of a textual file as a string.
ReadStringFromFile reads the contents of a textual file and returns a string containing the text read from the file.
ReadStringFromFile first reads the preamble bytes from the beginning of the AFilename textual file. Then ReadStringFromFile skips the preamble bytes and reads the contents of the textual file beginning from this offset. ReadStringFromFile returns a string containing the text read from the file.
If the AFilename file does not contain a byte order mark for one of the standard encodings, the Default standard encoding is accepted and corresponding number of bytes is skipped.
ReadStringFromFile raises an exception if the file cannot be opened or the path is invalid.
A preamble is a sequence of bytes that specifies the encoding used. It is known as Byte Order Mark (BOM).
Use WriteStringToFile to write a string to a file.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function RemoveDir(ADirectory);**
**ADirectory:** The directory to remove (must be empty)
**Return value:** True if the directory was removed successfully
Removes an empty directory. Returns True on success.
NOTE: Introduced in SyncBackPro V12
**function RenameFile(AOldName, ANewName);**
**AOldName:** The current filename
**ANewName:** The new filename
**Return value:** True if the file was renamed successfully
Renames a file. Returns True on success.
NOTE: Introduced in SyncBackPro V12
**function ReplaceStr(AText, AFromText, AToText);**
**AText:** The original text to replace
**AFromText:** The text in AText to be replaced
**AToText:** The text to replace AFromText in AText with
**Return value:** The string with the replaced text
ReplaceStr replaces all instances of string AFromText to string AToText in the source string AText and returns this value as the result. The replacement is case sensitive.
For a case insensitive replacement, use the ReplaceText routine.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function ReplaceText(AText, AFromText, AToText);**
**AText:** The original text to replace
**AFromText:** The text in AText to be replaced
**AToText:** The text to replace AFromText in AText with
**Return value:** The string with the replaced text
ReplaceText replaces all instances of string AFromText to string AToText in the source string AText and returns this value as the result. The replacement is case insensitive.
For a case sensitive replacement, use the ReplaceStr routine.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function ReverseString(AText);**
**AText:** The string to reverse
**Return value:** The reversed string
Returns a reversed copy of the string.
For example, ReverseString('Hello') returns 'olleH'.
NOTE: Introduced in SyncBackPro V12
**function RightStr(AText, ACount);**
**AText:** The string to get the right (end) of
**ACount:** The number of characters
**Return value:** The end of the string
Returns the substring of a specified length that appears at the end of a string.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function RoundTo(AValue, ADigit);**
**AValue:** The value to round
**ADigit:** The power of ten to which you want AValue rounded. It can be any value in the range from -20 through 20.
**Return value:** The rounder value
Rounds a floating-point value to a specified digit or power of ten using "Banker's rounding".
Call RoundTo to round AValue to a specified power of ten.
RoundTo uses "Banker's Rounding" to determine how to round values that are exactly midway between the two values that have the desired number of significant digits. This method rounds to an even number in the case that AValue is not nearer to either value.
NOTE: Introduced in SyncBackPro V11
**function SecondOf(ADate);**
**ADate:** The date to get the second of
**Return value:** Second of the time
Returns the second of the minute represented by a TDateTime value.
Call SecondOf to obtain the second of the minute represented by a specified TDateTime value. SecondOf returns a value from 0 through 59.
NOTE: Introduced in SyncBackPro V11
**function SecondsBetween(Now, Then);**
**Now:** Date and time 1
**Then:** Date and time 2
**Return value:** Returns the seconds between Now and Then
Returns the number of seconds between two specified TDateTime values.
Call SecondsBetween to obtain the difference, in seconds, between two TDateTime values. SecondsBetween counts only entire seconds. Thus, SecondsBetween reports the difference between 9:00:00 A.M. and 9:00:00:999 A.M. as 0, because the difference is one millisecond short of an entire second.
SecondsBetween always returns a positive result and therefore the parameter values are interchangeable.
This function was introduced in SyncBackPro V10.2.59.0
**function StartOfADay(AYear, AMonth, ADay);**
**AYear:** The year of the desired day
**AMonth:** The month of the desired day. AMonth can range from 1 through 12.
**ADay:** The day of the desired day. ADay can range from 1 through 28, 29, 30, or 31, depending on the values of AYear and AMonth.
**Return value:** Start of the day
Returns a TDateTime that represents 12:00:00:00 A.M. on a specified day.
StartOfADay returns the first expressible moment (12:00:000 A.M.) of a specified day.
If the parameters do not specify a valid date, StartOfADay raises throws an EConvertError exception.
See also [StartOfADay2](ScriptFunctions.md#function_startofaday2_ayear__adayofyear__).
NOTE: Introduced in SyncBackPro V11
**function StartOfADay2(AYear, ADayOfYear);**
**AYear:** The year of the desired day
**ADayOfYear:** The desired day as a day of the year, where 1 is January 1, 2 is January 2, 32 is February 1, and so on.
**Return value:** Start of the day
Returns a TDateTime that represents 12:00:00:00 A.M. on a specified day.
StartOfADay2 returns the first expressible moment (12:00:000 A.M.) of a specified day.
If the parameters do not specify a valid date, StartOfADay raises throws an EConvertError exception.
See also [StartOfADay](ScriptFunctions.md#function_startofaday_ayear__amonth__aday__).
NOTE: Introduced in SyncBackPro V11
**function StartOfAMonth(AYear, AMonth);**
**AYear:** The year of the desired month.
**AMonth:** The month. It can range from 1 through 12.
**Return value:** Start of the month
Returns a TDateTime that represents 12:00:00:00 A.M. on the first day of a specified month.
StartOfAMonth returns the first expressible moment (12:00:000 A.M.) of the first day of a specified month.
If the parameters do not specify a valid month, StartOfAMonth raises an EConvertError exception.
NOTE: Introduced in SyncBackPro V11
**function StartOfAWeek(AYear, AWeekOfYear, ADayOfWeek);**
**AYear:** The year of the desired day.
**AWeekOfYear:** The week of the year, where 1 is the first week in AYear that includes four or more days.
**ADayOfWeek:** The desired day in the specified week, where 1 is Monday, 2 is Tuesday, and so on.
**Return value:** Start of the week
Returns a TDateTime that represents the first moment on a specified day of a specified week.
StartOfAWeek returns the first expressible moment (12:00:00.000 A.M.) of the specified day of the specified week.
If the parameters do not specify a valid date, StartOfAWeek raises an EConvertError exception.
Note: The definitions for AWeekOfYear and ADayOfWeek follow the ISO 8601 standard.
NOTE: Introduced in SyncBackPro V11
**function StartOfAYear(AYear);**
**AYear:** The year to get the start of
**Return value:** Start of the year
Returns a TDateTime that represents the first moment on the first day of a specified year.
StartOfAYear returns the first expressible moment (January 1 at 12:00:00.000 A.M.) of the year specified by the AYear parameter.
NOTE: Introduced in SyncBackPro V11
**function StartOfTheDay(ADate);**
**ADate:** The date
**Return value:** Start of the day
Returns a TDateTime that represents 12:00:00:00 A.M. on the day identified by a specified TDateTime.
StartOfTheDay returns the first expressible moment of the same day as the TDateTime specified by ADate. That is, it replaces the time portion of ADate with 0 and returns the result.
NOTE: Introduced in SyncBackPro V11
**function StartOfTheMonth(ADate);**
**ADate:** The date to get the start of the month of
**Return value:** Start of the month
Returns a TDateTime that represents 12:00:00:00 A.M. on the first day of the month identified by a specified TDateTime.
StartOfTheMonth returns the first expressible moment of the same month as the TDateTime specified by ADate. That is, it replaces the time portion of AValue with 0, changes the day to 1, and returns the result.
NOTE: Introduced in SyncBackPro V11
**function StartOfTheWeek(ADate);**
**ADate:** The date
**Return value:** Start of the week
Returns a TDateTime that represents 12:00:00:00 A.M. on the first day of the week identified by a specified TDateTime.
StartOfTheWeek returns the first expressible moment of the same week as the TDateTime specified by ADate. That is, it replaces the time portion of ADate with 0, changes the day to Monday, and returns the result.
Note: StartOfTheWeek defines the week of ADate according to the ISO 8601 standard. That is, the week starts on Monday and ends on Sunday.
NOTE: Introduced in SyncBackPro V11
**function StartOfTheYear(ADate);**
**ADate:** The date to get the start of the year of
**Return value:** Start of the year
Returns a TDateTime that represents 12:00:00:00 A.M. on the first day of the year identified by a specified TDateTime.
StartOfTheYear returns the first expressible moment of the same year as the TDateTime specified by ADate. That is, it replaces the time portion of AValue with 0, changes the day to January 1, and returns the result.
NOTE: Introduced in SyncBackPro V11
**function StartsStr(ASubText, AText);**
**ASubText:** The string that AText must start (begin) with
**AText:** The string to check to see if it starts with ASubText
**Return value:** TRUE if AText begins/starts with ASubText
StartsStr determines if the substring ASubText begins the string AText using a case sensitive algorithm. If ASubText matches the beginning of AText, the result is true, otherwise it is false.
For a case insensitive comparison, use the StartsText routine.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function StartsText(ASubText, AText);**
**ASubText:** The string that AText must start (begin) with
**AText:** The string to check to see if it starts with ASubText
**Return value:** TRUE if AText begins/starts with ASubText
StartsText determines if the substring ASubText begins the string AText using a case insensitive algorithm. If ASubText matches the beginning of AText, the result is true, otherwise it is false.
For a case sensitive comparison, use the StartsStr routine.
NOTE: Introduced in SyncBackPro V11.2.26.0
**function StringOfChar(ACh, ACount);**
**ACh:** The character to repeat (first character of the string is used)
**ACount:** The number of repetitions
**Return value:** The resulting string
Returns a string consisting of ACount copies of character ACh.
For example, StringOfChar('*', 10) returns '**'.
NOTE: Introduced in SyncBackPro V12
**function SysErrorMessage(WinErrCode);**
**WinErrCode:** The windows error code
**Return value:** Returns the Windows error message for the error code
Returns the Windows error message for the Windows error code.
**function TimeOf(ADateTime);**
**ADateTime:** The date and time to convert
**Return value:** A time without the date
Strips the date portion from a TDateTime value.
Call TimeOf to convert a TDateTime value to a TDateTime value that includes only the time information (sets the date portion to 0, which means 12/30/1899).
Note: TimeOf can yield an invalid result for TDateTime values that were manually calculated (using Arithmetics). In such a case, we recommend that you round the value (ex. TimeOf(RoundTo(Value, -8))) prior to calling the TimeOf routine.
NOTE: Introduced in SyncBackPro V11
**function Today;**
**Return value:** The current date (no time)
Returns a TDateTime value that represents the current date.
Today returns a TDateTime value with the date portion set to the current date and the time portion set to 0.
NOTE: Introduced in SyncBackPro V11
**function Tomorrow;**
**Return value:** Tomorrows date (no time)
Returns a TDateTime value that represents the following day.
Tomorrow returns a TDateTime value with the date portion set to the day following the current date and the time portion set to 0.
NOTE: Introduced in SyncBackPro V11
**function VarToInt64(ToConvert);**
**ToConvert:** The variable to convert to a 64-bit integer
**Return value:** A 64-bit integer, or 0 if the variable cannot be converted
This function converts values returned from scripting components to 64-bit integers. For example, use it with the Files property in FileSystemObject on the file size.
**function WeekOf(ADate);**
**ADate:** The date to get the week of
**Return value:** Week of the date
Returns the week of the year represented by a TDateTime value.
Call WeekOf to obtain the week of the year represented by a specified TDateTime value. WeekOf returns a value from 1 through 53.
WeekOf uses the ISO 8601 standard to define the week of the year. That is, a week is defined as running from Monday through Sunday, and the first week of the year is the one that includes the first Thursday of the year (the first week that includes four or more days in the year). This means that if the first calendar day of the year is a Friday, Saturday, or Sunday, then for the first three, two, or one days of the calendar year, WeekOf returns the last week of the previous year. Similarly, if the last calendar day of the year is a Monday, Tuesday, or Wednesday, then for the last one, two, or three days of the calendar year, WeekOf returns 1 (the first week of the next calendar year).
NOTE: Introduced in SyncBackPro V11
**function WeeksBetween(Now, Then);**
**Now:** Date and time 1
**Then:** Date and time 2
**Return value:** Returns the weeks between Now and Then
Returns the number of whole weeks between two specified TDateTime values.
Call WeeksBetween to obtain the difference, in weeks, between two TDateTime values. WeeksBetween counts only whole Weeks. Thus, WeeksBetween reports the difference between January 1 at 12:00 A.M. and Jan 6 at 11:58 P.M. as 0, because the difference is one minute short of an entire week.
WeeksBetween always returns a positive result and therefore the parameter values are interchangeable.
This function was introduced in SyncBackPro V10.2.59.0
**function WeeksInAYear(AYear);**
**AYear:** The year
**Return value:** The number of weeks in the specified year
Returns the number of weeks in a specified year.
Call WeeksInAYear to obtain the number of weeks in the year specified by AYear. AYear is a year from 1 through 9999 (inclusive).
Note: WeeksInAYear defines the first week of the year according to the ISO 8601 standard. That is, the first week of the year is the one that includes the first Thursday of the year (the first week that has four or more days in the year). This means that WeeksInAYear always returns either 52 or 53.
NOTE: Introduced in SyncBackPro V11
**function WeeksInYear(ADate);**
**ADate:** The date to check (with the year)
**Return value:** The number of weeks in the specified year
Returns the number of weeks in the year of a specified TDateTime value.
Call WeeksInYear to obtain the number of weeks in the year of the TDateTime value specified by AValue.
Note: WeeksInYear defines the first week of the year according to the ISO 8601 standard. That is, the first week of the year is the one that includes the first Thursday of the year (the first week that has four or more days in the year). This means that WeeksInYear always returns either 52 or 53.
NOTE: Introduced in SyncBackPro V11
**function YearOf(ADate);**
**ADate:** The date to get the year of
**Return value:** Year of the date
Returns the year represented by a TDateTime value.
Call YearOf to obtain the year represented by a specified TDateTime value. YearOf returns a value from 1 through 9999.
NOTE: Introduced in SyncBackPro V11
**function YearsBetween(Now, Then);**
**Now:** Date and time 1
**Then:** Date and time 2
**Return value:** Returns the years between Now and Then
Returns the approximate number of years between two specified TDateTime values.
Call YearsBetween to obtain the difference, in years, between two TDateTime values. Because years are not all the same length (e.g. leap years), YearsBetween returns an approximation based on an assumption of 365.25 days per year. Fractional years are not counted. Thus, for example, YearsBetween reports the difference between January 1 and December 31 as 0 on non-leap years and 1 on leap years.
YearsBetween always returns a positive result and therefore the parameter values are interchangeable.
This function was introduced in SyncBackPro V10.2.59.0
**function Yesterday;**
**Return value:** Yesterdays date (no time)
Returns a TDateTime value that represents the preceding day.
Yesterday returns a TDateTime value with the date portion set to the day before the current date and the time portion set to 0.
NOTE: Introduced in SyncBackPro V11
**procedure WriteStringToFile(AFilename, AText);**
**AFilename:** The filename of the file to write to
**AText:** The text to put into the file
Encodes the given Contents text and writes the obtained text into the AFilename text file.
WriteStringToFile first creates the AFilename file, then encodes the specified AText string using the UTF8 encoding, and then writes the encoded string into the created text file.
If the file specified by the AFilename parameter exists, it is overwritten; otherwise the file is created and filled with the given text.
WriteStringToFile raises an exception if the file cannot be accessed or the path is invalid.
Use ReadStringFromFile to read the contents of a file.
NOTE: Introduced in SyncBackPro V11.2.26.0
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Script Classes
A number of built-in scripting classes are available. See also [Script Functions](ScriptFunctions.md).
All the example code below is written in using the [Pascal](PascalScriptLanguage.md) scripting language.
**Class TEnumVariant**
TEnumVariant is a helper class for collections, e.g. FileSystemObject.Drives
Create the object by passing the collection. Then you call ForEach to get each item in the collection. For example:
```
//
// Return the list of drives
//
DrivesEnum:=TEnumVariant.Create(gFSO.Drives);
try
while DrivesEnum.ForEach(DiskDrive) do begin
If (DiskDrive.IsReady = TRUE) then
If not SBLocation.AddDir(DiskDrive.DriveLetter) then
Exit;
end;
finally
DrivesEnum.Free;
end;
```
See the AllDrives.pas example script for an example.
**Class TStringList**
This class is for storing lists of strings. For more information refer to the [Delphi help entry for TStringList](https://docwiki.embarcadero.com/Libraries/Alexandria/en/System.Classes.TStringList).
```
function Example: String;
var
s: TStringList; // IMPORTANT: Must define it as TStringList
idx: Integer;
begin
Result:='TESTING';
// s:=TStringList.Create;
s:=TStringList.Create(dupError);
s.CaseSensitive:=TRUE;
s.Sorted:=TRUE;
s.Duplicates:=dupError; // dupIgnore, dupAccept
s.Add('DEF');
s.Add('ABC');
s.Add('abc');
s.Delete(s.IndexOf('abc'));
idx:=0; // IMPORTANT: Must set it to an integer value before calling .Find
if s.Find('ABC', idx) then
//Result:=s.Strings[idx]
Result:=s[idx] // Does not work if just do var s;
else
Result:='Not found';
s.Free;
end;
```
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Scripting A.I.
SyncBackPro includes optional AI-assisted features that can help explain, debug, or optimize scripts. While these tools can be useful, they may occasionally produce incorrect, incomplete, or misleading information. This behaviour, often called AI hallucination, is a known limitation of all current AI technologies.
Please keep the following in mind:
- AI responses may contain errors or misunderstandings.
- Always review AI-generated or AI-modified scripts before using them.
- Do not rely on AI output as authoritative technical guidance.
- 2BrightSparks cannot provide technical support for issues arising from AI-generated responses or scripts.
- Our support team cannot verify or debug content produced by the AI assistant.
Use the AI tools as helpful suggestions only. You remain responsible for confirming that any script or configuration is correct and safe for your specific use case.
**Script Editor**
Within the script editor window you can access various A.I features:
- AI Chat: Lets you chat to AI about anything. See AI Chat below.
- AI Debug: If you have selected some code in your script, then choosing this will ask AI to try and find any bugs in that section of code. The AI Coder window will appear with the result.
- AI Explain: If you have selected some code in your script, then choosing this will ask AI to explain the code. The AI Coder window will appear with the result.
- AI Optimize: If you have selected some code in your script, then choosing this will ask AI to try and optimize the code. The AI Coder window will appear with the result.
- AI Settings: Lets you define which AI engine to use (see AI Settings below).
Each of the above modes (except AI Settings) also has a **Detailed** variant that provides the AI with the complete SyncBackPro scripting reference for more accurate responses. See Detailed Modes below for more information.
**AI Settings**
You can access the AI Settings via the AI Chat button or the pop-menu in the script editor.
- AI Engine: SyncBackPro supports three A.I. engines: **ChatGPT** (Open AI), **Claude** (Anthropic) and **Gemini** (Google).
- API Key: For SyncBackPro to access the AI Engine, you need to create an API Key. Refer to their documentation for details on how to do this.
- Model: If you are using **ChatGPT** then you will be able to choose the model. Typically, models have different balances of cost and time, e.g. ones that need to reason for a longer time may give more accurate responses but will typically be more expensive. Refer to their documentation for details on the models.
- Maximum Tokens: If you are using **ChatGPT** then you will be able to specify the maximum number of tokens that can be used. Artificial intelligence tokens are simply small pieces of text that an AI uses to read, understand, and generate language. They are the basic units the AI works with, much like letters and words are the basic units of reading and writing for people. A rough, easy rule of thumb: 1 token is about 4 characters of English text, 100 tokens is roughly 70 to 75 words. In short, AI tokens are the “bite-sized” pieces of text that artificial intelligence uses to think in language.
- Temperature: If you are using **ChatGPT** then you will be able to choose the temperature. Note that not all models support a temperature. If they do not, use 1.0. The AI temperature is a setting that controls how predictable or creative an artificial intelligence model is when it generates text. In simple terms low temperatures give accuracy, stability, and reliable facts. High temperatures give creativity, variety, and unexpected ideas. The “temperature” does not make the AI smarter or dumber; it simply adjusts how adventurous or conservative its word choices are.
- Low Temperature (e.g., 0.0 to 0.3): Predictable and Precise. The AI chooses the most likely, sensible answer almost every time.
- Medium Temperature (e.g., 0.4 to 0.7): Balanced and Natural. The AI mixes accuracy with some creativity.
- High Temperature (e.g., 0.8 to 1.2+): Creative and Unpredictable. The AI becomes more imaginative and less predictable.
**AI Chat**
To simply chat to AI, first make sure you have configured it using the AI Settings (see above). If you have, enter your question in **AI Prompt** and then click **Send**:
The response will be appended to any previous answers and SyncBackPro will automatically scroll to the end of the responses.
- Keep context: If enabled, it tells the AI to continue the same conversation instead of starting over, preserving short-term memory, consistency, and context.
**AI Coder**
The AI Coder page is shown when you highlight code in the editor and then choose a menu-item from the AI Assistant pop-up menu, e.g. AI Explain:
**Detailed Modes**
In addition to the standard AI modes described above, SyncBackPro also offers **Detailed** variants of each mode: AI Chat (Detailed), AI Create (Detailed), AI Debug (Detailed), AI Explain (Detailed), and AI Optimize (Detailed).
When a Detailed mode is used, SyncBackPro loads the SyncBackPro scripting reference documentation and includes it in the request sent to the AI engine. This gives the AI comprehensive knowledge of the scripting language, including all available functions, constants, objects, and their parameters. As a result, the AI can produce significantly more accurate and relevant responses compared to the standard modes.
**Availability**
The Detailed menu items will only appear in the AI Assistant menu if the scripting reference file **SYNCBACKPRO_SCRIPTING_REFERENCE.md** is present in the same folder as the SyncBackPro executable. If this file is missing, the Detailed options will not be shown. This file is included with the SyncBackPro installation.
**Cost Warning**
Because the scripting reference documentation is included with every request, Detailed modes use **significantly more tokens** than their standard counterparts. This applies to all AI engines (ChatGPT, Claude, and Gemini). Most AI providers charge based on the number of tokens used, so Detailed mode requests will be more expensive. A confirmation prompt is displayed before each Detailed mode request to remind you of the increased cost.
**When to Use Detailed Modes**
- Use the **standard modes** for general questions, quick explanations, or when cost is a concern.
- Use the **Detailed modes** when you need the AI to have accurate knowledge of specific SyncBackPro scripting functions, parameters, constants, or objects, for example when creating new scripts, debugging issues involving specific API calls, or when the standard mode gives inaccurate results.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Debugging
Debugging is only supported with Pascal and Basic scripting languages (introduced in SyncBackPro V8). Debugging is not supported with the old Windows scripting, e.g. VBScript.
There are two ways to debug Pascal and Basic scripts:
1. While editing a script, you can debug parts of the script.
2. You can debug a script when it is run in SyncBackPro or as part of a profile.
- Debugging scripts is an **experimental feature**. Debugging running scripts is highly complex and complicated further as numerous threads and COM objects are involved.
## Debugging in the Editor
While in the script editor, click the **Debug** button:
From the Debug menu, and the toolbar, you can choose the various debug options:
- **Run (F9)**: This will run the script. Note that SyncBackPro scripts do not have a "main" part (main block), meaning a default part that is run when the script is run. Using the drop-down arrow next to the **Run** (play) button, you can choose which function/procedure will be run. By default the **Description** function is selected, as all SyncBackPro scripts require that section:
These debug functions, e.g. breakpoints, will be familiar to any developer that has used a debugger. To evaluate variables you can hover the mouse over the variable, for example. You can also add watches (Ctrl-F5) or use **Evaluate**.
Lines that have a dot next to their line number are lines with executable code. You cannot set a breakpoint, for example, on lines that are not executed, e.g. lines that are comments.
Features are also available from the pop-up menu in the debug editor window.
Keep in mind that this kind of debugging (while editing) is not equivalent to when the script is actually run in SyncBackPro. You can do simulations, e.g. pass parameters to the functions, but this is mostly useful for basic syntax and logic checking, for example.
Any changes made in the debugger will be reflected back to the editor once the debugger window is closed. The breakpoint selections are also saved as these are used when you want to debug a script when it is actually run.
## Debugging Running Scripts
To debug a script when it is run you must first go to the Scripts window (via [burger menu](PreferencesMainMenu.md) **-> Scripts** in the main window) and select the script (or scripts) you wish to debug. To do this, right-click on the script and select **Debug** from the pop-up menu. Only Pascal and Basic scripts can be debugged, not VBScript (for example). A warning icon will appear next to the script to indicate debugging is enabled. Once you have enabled debugging, edit the script, go to the debugger and set the appropriate breakpoints. If you are enabling (or disabling) debugging for a main interface script then you will need to exit and restart SyncBackPro for it to come into effect.
When debugging a script (while it is running) the debug window will appear. Note that it may appear more than once for the same script as the script may be called from different windows. For example, with a location script it will call Connect before the file and folder selections window appears.
**Watches** cannot be used with runtime and location scripts while they are running as part of a profile. However, you can still use **evaluate**. Also, you may not have the option to close a debug window (you cannot if it is a runtime or location script that is being used by a running profile, for example). Once the profile has finished, or the script is no longer required, the debug windows are automatically closed.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Example Scripts
SyncBackPro comes with a number of example scripts. There are also some example scripts online:
https://www.2brightsparks.com/syncback/scripts/
If you've created a script that you think other people could use please visit the above page to submit it.
- **AllDrives**: This is a location script which gives access to all the drives on a computer. This means you could use it as your source or destination, set the base directory to \, and then choose files and folders from multiple drives.
- **ChangeIdentical**: This is a runtime script which changes the difference for a file so that if it is considered the same then it is instead changed to appear to only be on the source.
- **CompressCopy:** This is a runtime script which will NTFS compress the copies of files if the original file was also NTFS compressed. This should only be used in profiles that copy to and from NTFS partitions.
- **CreateRestorePoint**: This is a runtime script which creates a system restore point in Windows whenever the profile is run. Note that Windows Server does not support system restore points.
- **CustomFilter**: This is a runtime script which allows for custom filters that are applied after any [file and folder selections](SubDirectoriesandFiles.md) and [filters](FilterSettings.md) have been applied. Useful when you only want certain sub-folders, for example. Note that after installing it you must [configure your profiles](SetupScripts.md) to use the script.
- **DecryptCopy**: This is a runtime script which will remove the NTFS (EFS) encryption from the copy of files. For example, you may have a profile that does a backup from one NTFS partition to another, but you may not want the backup copies to be encrypted. This should only be used in profiles that copy to NTFS partitions. See also the **EncryptCopy** script.
- **DiffExport**: This is a runtime and configuration script which exports the differences between the files and folders. It is comma delimited so can be imported into other software, e.g. a spreadsheet.
- **DiffPrompt**: This is a runtime script which adds a voice prompt to the Differences window. Note that after installing it you must [configure your profiles](SetupScripts.md) to use the script.
- **DiffWindow**: This is a runtime script which adds extra columns to the Differences window. Note that after installing it you must [configure your profiles](SetupScripts.md) to use the script.
- **EncryptCopy**: This is a runtime script which will NTFS encrypt the copies of files. For example, you may have a profile that does a backup from one NTFS partition to another, and want the backup copies to be NTFS encrypted. This should only be used in profiles that copy to NTFS partitions. See also the **DecryptCopy** script.
- **ExtraInfo**: This is both a runtime and main interface script. It adds a column to the main interface that shows how many files were copied, deleted, etc. in the last profile run. Note that after installing it you must both enable it (as a main interface script) and also configure your profiles to use the script.
- **FileMustExist**: This is a runtime script. It stops a profile from running unless a specific file exists. That file can optionally be automatically deleted. Note that after installing it you must both enable it (as a profile configuration script) and also configure your profiles to use the script.
- **History**: This is a main interface script that adds a column to the main interface showing how much history information there is for a profile. The purpose of this example is to demonstrate how to reduce overhead.
- **IncVar**: This is a runtime script that shows how to create and use your own variables in a profile, and also how to set when a rescan for a Fast Backup profile should be performed. Note that you may want to use the [%AUTOINC%](SetupVariablesIncremental.md) variable instead. Edit the script before using it, or use the **IncVarEx** script instead.
- **IncVarEx**: This is the same as the **IncVar** script, except you can configure it from the profile setup window, so there is no need to edit the script file itself. Note that you may want to use the [%AUTOINC%](SetupVariablesIncremental.md) variable instead.
- **MOTD**: This is a main interface script that shows a "Message of the day". Edit the script before using it.
- **OncePerDay**: This is a runtime script that shows how to restrict a profile so that it can only be run at most once per day. You may want to use **OncePerDayEx** instead as it lets you see if the profile has already run today.
- **OncePerDayEx**: This is the same as the **OncePerDay** script, except you can also see if the profile has already run from the profile setup window.
- **OnlyYesterday**: This is a runtime script that ignores any files if the source file has not been modified yesterday. The script is not used if it is a Restore.
- **PreCopyExample**: This is a runtime and configuration script that stops a profile from running if a user defined number of files are being copied and/or moved. The script is not used if it is a Restore.
- **SBConstants**: This is simply a definition file defining all the constants.
- **SendResultViaSMS**: This is a runtime script the sends an SMS if a profile fails. Edit the script before using it or use the **SendResultViaSMSEx** script instead.
- **SendResultViaSMSEx**: This is the same as the **SendResultViaSMS** script, except you can configure it from the profile setup window, so there is no need to edit the script file itself.
- **SendResultViaTwitter**: This is a runtime script the sends a Twitter message after a profile run. Edit the script before using it, or use the **SendResultViaTwitterEx** script instead. Note: Twitter have since changed their authentication method so this script no longer works and is provided for reference only.
- **SendResultViaTwitterEx**: This is the same as the **SendResultViaTwitter** script, except you can configure it from the profile setup window, so there is no need to edit the script file itself. Note: Twitter have since changed their authentication method so this script no longer works and is provided for reference only.
- **StripZeros**: This is a runtime script that shows how to create and use your own variables in a profile. In this example two new variables are created: %NoZeroDay% and %NoZeroMonth%. They are the same as %DAY% and %MONTH% except the leading zero is not included.
- **WaitForFinish.**: This is a runtime script that stops a profile from starting until a program has finished (or isn't running). Edit the script before using it or use the **WaitForFinishEx** script instead.
- **WaitForFinishEx**: This is the same as the **WaitForFinish** script, except you can configure it from the profile setup window, so there is no need to edit the script file itself.
- **TranslateExample.vbs**: This script shows how you can internationalize the messages displayed by your script.
- **Versioning.vbs**: This is a main interface script that adds a column to the main interface showing if a profile is using versioning. The purpose of this example is to demonstrate how to add columns to the main user interface that show extra information about a profiles settings.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Converting VBScript to Basic
SyncBackPro V8 introduced a new scripting engine that supports both [Basic](BasicScriptLanguage.md) and [Pascal](PascalScriptLanguage.md). Although the new Basic scripting language is very similar to VBScript, it is not identical. Although 32-bit SyncBackPro still supports the old VBScript scripting, the 64-bit version of SyncBackPro cannot use VBScript scripting due to limitations in the 64-bit versions of Windows. Therefore if you want your Basic scripts to work in both the 32-bit and 64-bit versions of SyncBackPro then they need to be converted to the new Basic scripting language (or the new Pascal scripting language). Also, VBScript was deprecated by Microsoft in October 2023.
The [example scripts](ExampleScripts.md) that are distributed with SyncBackPro have already been converted to the new Basic scripting language.
SyncBackPro V12 introduced a command line utility called **VBSConvert.exe**, which can be used to help convert VBScript scripts to Basic or Pascal. See the file **VBSConvert.txt** for details. The converter is in the same directory as the SyncBackPro executable. Note that it is impossible to perfectly convert every script. Some scripts cannot be converted, e.g. they use VBScript features that are not implemented in Basic or Pascal.
Below are some tips on how to convert your VBScript scripts to the new Basic language scripts:
- Change the script filename extension from **.VBS** to **.BAS**
- In the header of the script change **SBLang=VBScript** to **SBLang=Basic**
- You cannot use **ForEach**. Instead you must use TEnumVariant.Create, e.g.:
FoldersEnum:=TEnumVariant.Create(Folder.SubFolders);
try
while FoldersEnum.ForEach(SubFol) do begin
If not SBLocation.AddDirEx2(SubFol.Name, SubFol.Attributes, SubFol.DateLastModified, SubFol.DateCreated, '') then
Exit;
end;
finally
FoldersEnum.Free;
end;
- You must use brackets with calls to sub-routines that have arguments (just as you must already do with functions).
- When declaring functions or sub-routines, and there are no arguments, then don't use brackets, e.g.
Sub RunAfterConfig() - This is wrong
Sub RunAfterConfig - This is correct
- When declaring functions or sub-routines, and there are variable arguments (non-constant), then prefix them with **var**, e.g.
Sub RunAfterConfig(constvar1, variablevar2) - This is wrong
Sub RunAfterConfig(constvar1, var variablevar2) - This is correct
- When calling functions or sub-routines that have no parameters, don't use empty brackets, e.g.:
RunAfterConfig() - This is wrong
RunAfterConfig - This is correct
- Variables do not need to be declared first but you must declare (or initialize) a variable if it is first set in the parameters on a call to a function or sub-routine.
- You cannot combine lines using an underscore (_) on the end of the line. Simply delete the underscores at the end of lines.
- You can't have:
DO
' Code
LOOP
You must end with LOOP WHILE 1=1, for example.
- Don't put comments after IF statements on the same line:
If SBProfile.GetCheckbox(3) Then ' THIS WILL CAUSE AN ERROR
If SBProfile.GetCheckbox(3) Then
' THIS IS OK
- For integer division (\) you must instead use normal division (/) and cast the result with Int():
X = 100 \ 33 ' THIS WILL NOT COMPILE
X = Int(100 / 33) ' THIS IS OK
**VBScript functions**
To help with compatibility with VBScript, the following functions are available in **Basic** scripts (refer to the [MSDN documentation](https://msdn.microsoft.com/en-us/library/d1wf56tt(v=vs.84).aspx) for the explanation of each function):
```
[Asc](https://www.w3schools.com/asp/func_asc.asp)
[Atn](https://www.w3schools.com/asp/func_atn.asp)
[CBool](https://www.w3schools.com/asp/func_cbool.asp)
[CByte](https://www.w3schools.com/asp/func_cbyte.asp)
[CCur](https://www.w3schools.com/asp/func_ccur.asp)
[CDate](https://www.w3schools.com/asp/func_cdate.asp)
[CDbl](https://www.w3schools.com/asp/func_cdbl.asp)
[Cint](https://www.w3schools.com/asp/func_cint.asp)
[CLng](https://www.w3schools.com/asp/func_clng.asp)
[CreateObject](https://www.w3schools.com/asp/func_createobject.asp)
[CSng](https://www.w3schools.com/asp/func_csng.asp)
[CStr](https://www.w3schools.com/asp/func_cstr.asp)
[DatePart](https://www.w3schools.com/asp/func_datepart.asp)
[DateSerial](https://www.w3schools.com/asp/func_dateserial.asp)
[DateValue](https://www.w3schools.com/asp/func_datevalue.asp)
[Day](https://www.w3schools.com/asp/func_day.asp)
[Fix](https://www.w3schools.com/asp/func_fix.asp)
[FormatCurrency](https://www.w3schools.com/asp/func_formatcurrency.asp)
[FormatDateTime](https://www.w3schools.com/asp/func_formatdatetime.asp)
[FormatNumber](https://www.w3schools.com/asp/func_formatnumber.asp)
[Hex](https://www.w3schools.com/asp/func_hex.asp)
[Hour](https://www.w3schools.com/asp/func_hour.asp)
[InputBox](https://msdn.microsoft.com/en-us/library/3yfdhzk5(v=vs.84).aspx)
[InStr](https://www.w3schools.com/asp/func_instr.asp)
[Int](https://www.w3schools.com/asp/func_int.asp)
[IsArray](https://www.w3schools.com/asp/func_isarray.asp)
[IsDate](https://www.w3schools.com/asp/func_isdate.asp)
[IsEmpty](https://www.w3schools.com/asp/func_isempty.asp)
[IsNull](https://www.w3schools.com/asp/func_isnull.asp)
[IsNumeric](https://www.w3schools.com/asp/func_isnumeric.asp)
[LBound](https://www.w3schools.com/asp/func_lbound.asp)
[LCase](https://www.w3schools.com/asp/func_lcase.asp)
[Left](https://www.w3schools.com/asp/func_left.asp)
[Len](https://www.w3schools.com/asp/func_len.asp)
[Log](https://www.w3schools.com/asp/func_log.asp)
[LTrim](https://www.w3schools.com/asp/func_ltrim.asp)
[Mid](https://www.w3schools.com/asp/func_mid.asp)
[Minute](https://www.w3schools.com/asp/func_minute.asp)
[Month](https://www.w3schools.com/asp/func_month.asp)
[MonthName](https://www.w3schools.com/asp/func_monthname.asp)
[MsgBox](https://msdn.microsoft.com/en-us/library/sfw6660x(v=vs.84).aspx) (use [SBSystem.ShowMessage](SBSystem.md) instead)
[Replace](https://www.w3schools.com/asp/func_replace.asp)
[Right](https://www.w3schools.com/asp/func_right.asp)
[Rnd](https://www.w3schools.com/asp/func_rnd.asp)
[RTrim](https://www.w3schools.com/asp/func_rtrim.asp)
[Second](https://www.w3schools.com/asp/func_second.asp)
[Sgn](https://www.w3schools.com/asp/func_sgn.asp)
[Space](https://www.w3schools.com/asp/func_space.asp)
[StrComp](https://www.w3schools.com/asp/func_strcomp.asp)
[String](https://www.w3schools.com/asp/func_string.asp)
[Timer](https://www.w3schools.com/asp/func_timer.asp)
[TimeSerial](https://www.w3schools.com/asp/func_timeserial.asp)
[TimeValue](https://www.w3schools.com/asp/func_timevalue.asp)
[UBound](https://www.w3schools.com/asp/func_ubound.asp)
[UCase](https://www.w3schools.com/asp/func_ucase.asp)
[Weekday](https://www.w3schools.com/asp/func_weekday.asp)
[WeekdayName](https://www.w3schools.com/asp/func_weekdayname.asp)
[Year](https://www.w3schools.com/asp/func_year.asp)
```
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Technical Support Wizard
If, after reviewing the help file and online support resources, you continue to experience difficulties using SyncBackPro, you may [submit a support ticket](https://help.2brightsparks.com/). When submitting a ticket for technical assistance please make sure you have done the following first:
- Take a look at the extensive Help file (within the program press F1 at any time for context sensitive help).
- Search our [Knowledge Base](http://help.2brightsparks.com/) to see if the question has already been asked and answered.
- Search the [forums](http://www.2brightsparks.com/bb/index.php) to see if someone else has asked the same question.
- You should also check to see if you are using the [latest version](https://help.2brightsparks.com/support/solutions/articles/43000335614) of the program, and if not, update your profile and test again.
- Check if a [BETA](https://www.2brightsparks.com/downloads-beta.html) version is available that contains a fix for your issue.
If you still need further support then include the following information at a minimum:
- Which operating system you are using, e.g. Windows 11 64-bit
- Which version of the software you are using, e.g. SyncBackPro V12.1.0.0
- Describe how to reproduce the problem. If we can reproduce the problem then it makes things much simpler.
- If your user interface is not in English then please change the language to English. This can be done via the [burger main menu](PreferencesMainMenu.md) . This will ensure the logs and error messages are in English, which helps us diagnose your issue as accurately as possible
- With SyncBackPro you can have it create a Support Zip file on your desktop containing the profile, its log files, and other information via **Support -> Technical Support Wizard** in the main window. You can then attach that Support Zip file to the support ticket. See the section below for details.
- If there are any error messages in the log file then copy and paste them into the support ticket. This is very important. Without knowing what the error is, we cannot help. If you use the Technical Support Wizard then there is generally no need to do this for information generated by SyncBackPro, as the information will normally be in the Support Zip file.
- If any error messages appear on screen (for example, Windows error messages), state what the error message was. Better still, [provide a screenshot](https://help.2brightsparks.com/support/solutions/articles/43000335707).
- If the problem is with an FTP server, then state which kind of FTP server you are using. Try using another FTP client program, with the same FTP settings to see if it is a network or FTP server problem. It will also reduce the time it takes to resolve the problem if you attach the debug file (see below).
- If the problem is with emailing, then state which kind of email server you are using. Try using another email client program with the same email settings to see if it is a network or email server problem. It will also reduce the time it takes to resolve the problem if you attach the debug file (see below).
Please remember that we can only work with the information you provide. If you provide little information then there is little we can do to resolve the problem.
## Technical Support Wizard
The **Technical Support Wizard** creates a special file that provides the essential information we require when you submit your ticket.
SyncBackPro is capable of outputting detailed debug information to a file. This debug information can then be used by technical support personnel to help them locate where the problems are:
- Run SyncBackPro
- If your user interface is not in **English** then please change the language to English. This can be done via the [burger main menu](PreferencesMainMenu.md) . This will ensure the logs and error messages are in English, which helps us diagnose your issue as accurately as possible.
- Select **Output debug information** from Preferences via the [burger main menu](PreferencesMainMenu.md) . When there is a tick/check mark next to Output Debug Information then debug information will be created.The status bar should change to reflect this mode, also with RAM & CPU statistics displayed. You can enable flushing by enabling the option **Flush the debug log**. Flushing ensures all debug output is written to the disk immediately and not cached.
- Run your profile or perform the task asked of you by technical support personnel. You must re-run the profile (etc) after setting Output Debug Info (it is the new run of the profile that generates the info as it runs - it is not 'retrospective')
- Once the profile has finished, or the task completed, immediately select **Support > Technical Support Wizard** from the main menu. Do not edit the profile or perform any other task as this may delete or invalidate the debug information:
- Select the profile from the drop-down list and click the **Create** button:
- Once the technical support file has been created (it may takes minutes) an informational window will open showing where the support zip file has been saved to:
- The Technical Support Wizard will create a special zip file that contains the settings, logs, debug information, etc. that relates to the selected profile. The Support Zip File created by the wizard may then be attached to a Support Ticket. Note that the Zip file produced is in a special format that is not readable by Windows File Explorer or many other Zip programs. You should not attempt to modify the Zip file or its contents otherwise it may become corrupted.
- Submit a support ticket and attach the Zip file created. Please do not extract/send just the debug log/s alone - there is important background information in the Support Zip (for example, your settings).
After providing the debug file you are advised to switch off debug output as it degrades performance. To do this simply run SyncBack and uncheck **Output debug information** from Preferences via the [burger main menu](PreferencesMainMenu.md) .
Do not enable the option **Maximum Compression** unless you are asked to by 2BrightSparks support staff or the Zip file being produced (without using this option) is very large. It is not available if there is not enough free memory. Even if it is available, it may still fail due to lack of free memory.
## Encrypt
When this option is enabled, the technical-support archive is encrypted on your computer before it is saved. The encrypted file has the extension **.sbe** (SyncBack Encrypted) in place of .zip.
Encrypted archives can only be opened by 2BrightSparks technical-support staff, who hold the matching private key. The encryption protects the contents of the archive, which may include your profile settings, log files, debug output, and the file paths from your backup profiles, as it travels through email systems, support-ticket software, and any other intermediate services between you and 2BrightSparks.
By default this option is not checked: encryption is opt-in. If you are confident that the archive does not contain sensitive information, you can submit the plain .zip file as before. The option is unavailable (greyed out) if the encryption certificate (support.cer) is missing from the SyncBackPro installation folder. On a normal installation this file is present and the option is available.
- Encryption is performed entirely on your own computer. No data is sent over the network during this step, the encrypted file is written to the same location as the unencrypted version would have been, and you submit it to 2BrightSparks in the same way.
- Encryption typically adds only a few hundred bytes to the file. The encrypted file is otherwise comparable in size to the unencrypted .zip.
- We recommend enabling this option for any submission that includes debug logs, profile settings, or log files, since those can contain file paths, computer names, or other information you may prefer to keep private.
- Only 2BrightSparks can decrypt the file. There is no recovery option on your side if you decide later that you want to inspect the encrypted archive's contents. If you need to keep a readable local copy, save an unencrypted version separately before submitting.
## Debug Logs
Debug logs are text files that are stored in the same folder as your profile settings. The folder in which profiles are stored is defined using [Global Settings](GlobalSettings.md).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# 32-bit vs 64-bit
There are two versions of SyncBackPro and SyncBackSE: the **64-bit** version and the **32-bit** version. Unless you are using an old, and now unsupported, version of Windows that is 32-bit, you should use the 64-bit version. Windows 11, and Windows Server, are 64-bit only.
There are important differences between them (explained below). If you are unsure which version to use, you should continue to use the 32-bit/64-bit version you are currently using.
- **Do not use both:** You should not have both the 32-bit and 64-bit versions installed at the same time on the same computer. Having both versions installed will cause issues.
- **Migrating:** To switch from one version to another you should export your profiles, uninstall the old version, install the new version and then import your profiles.
- **Windows:** The 32-bit version can be used on 32-bit and 64-bit versions of Windows. The 64-bit version can only be used on 64-bit versions of Windows. Refer to the [Microsoft documentation](https://support.microsoft.com/en-sg/help/827218/how-to-determine-whether-a-computer-is-running-a-32-bit-version-or-64-bit-version-of-the-windows-operating-system) to see which version of Windows you are using. Windows Server and Windows 11 are only 64-bit.
- **Compatibility**: The 32-bit version is compatible with older versions of SyncBack. This means, if you are upgrading from V7 or earlier, then there will be no issues. The 64-bit version of SyncBackPro cannot use **VBScript** scripting. You must [convert your VBS scripts](ConvertingVBSToBasic.md) to the new Basic scripting language.
- **File System**: When a 32-bit program is used on 64-bit versions of Windows, then Windows [interferes with file system calls](http://support.2brightsparks.com/knowledgebase/articles/215543-system32-copied-files-are-unexpected) to help with compatibility. This means that 32-bit versions of SyncBack will [see different files](https://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx) in some Windows system folders. If you are not copying system files, then this should not be a problem. If you are, then you should check your profiles [file and folder selections](SubDirectoriesandFiles.md) to make sure the correct files are being copied.
- **Environment Variables**: If you use Windows environment variables, e.g. for a profiles destination, then note that some Windows environment variables will have different values depending on if it's 32-bit or 64-bit Windows. Check the Windows documentation.
- **Scheduling**: The Windows Task Schedules, to run your profiles, are stored in a different folders in the task scheduler. This should not be a problem because SyncBack will import the schedule into the correct task scheduler folder.
- **Benefits**: The major benefit to using the 64-bit version is that it has access to all the memory on your system. This may be important to you when using some [cloud services](Cloud.md), e.g. Dropbox, and [high levels of compression](CompressionSettings.md).
- **Downloading**: See the [downloads page](https://www.2brightsparks.com/downloads.html) for links to the 32-bit and 64-bit versions of SyncBackPro and SyncBackSE.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Command Line Parameters
### A Definition of the Command Line
A Command Line is a space provided directly on the screen where users type specific commands. A CLI (command line interface) is a user interface to a computer's operating system or an application in which the user responds to a visual prompt by typing in a command on a specified line, receives a response back from the system, and then enters another command. The MS-DOS Prompt application in the Windows operating system is an example of the provision of a command line interface. Today, most users prefer the graphical user interface (GUI) offered by Windows or Macs.
### SyncBackPro Installer Command Line Parameters
Note that the SyncBackPro installer also accepts command line parameters. See the [Installing](Installing.md) section for more details. Below, the parameters for SyncBackPro itself are explained.
### SyncBackPro Command Line Parameters
SyncBackPro accepts a number of command line parameters. Some of these are used when SyncBackPro is called from the Windows Task Scheduler. Note that when SyncBackPro is run with command line parameters, by default it will run in **Unattended** mode and be minimized, which means that it will not prompt the user and will not be visible on screen.
**-r:** The profiles following this parameter are run in restore mode. By default profiles are run as backups/Synchronizations.
**-i:** The profiles following this parameter are run in interactive mode. By default profiles run from the command line are run unattended, i.e. no prompts are displayed. The opposite parameter is **-silent**
**-m:** Minimizes SyncBackPro. If you are running profiles then this is the default.
**-n:** The profiles following this parameter are run in normal mode, i.e. dialogs and windows are displayed on the screen. By default profiles run from the command line are run in minimized mode.
**-p:** The profiles following this parameter are run in parallel, i.e. they are all run at the same time. Normally the profiles are run in serial (one after the other).
**-vgn [groupname]:** The profiles following this parameter are run as part of the group (visual group). This is useful for when you have variables in a group and want to use them in the profile. The profile does not need to be part of the group and the group itself is not run. This is the same as running a profile that's in a group in the user interface.
**-s:** The profiles following this parameter are run in simulated mode, i.e. no files are actually copied or deleted.
**-silent:** The profiles following this parameter are run in unattended mode. By default profiles run from the command line are run unattended, i.e. no prompts are displayed. The opposite parameter is **-i**. The -silent parameter is useful when used in conjunction with the -export, -importprofile, -delete, and -log parameters.
**-hibernate:** Place the computer into hibernate mode (S4) (if the computer supports it).
**-standby:** Place the computer into a sleep state (if the computer supports it). What level of sleep state (S0 to S3) the device goes into is up to Windows and the level of hardware support.
**-shutdown:** Logoff, shutdown, and switch off the computer (if the computer supports it). SyncBackPro cannot guarantee that the computer will be shutdown. Windows does a shutdown asynchronously, meaning SyncBackPro can be told the computer will shutdown even though something could stop that shutdown, e.g. Windows itself, another application, a driver, a user, etc. If you do not have the access rights in Windows (e.g. you are not an administrator) then this command will fail.
**-shutdownforce:** Logoff, shutdown, and switch off the computer (if the computer supports it). Note that this will forcibly shutdown the computer, e.g. applications with unsaved data will be forcibly closed. SyncBackPro cannot guarantee that the computer will be shutdown. Windows does a shutdown asynchronously, meaning SyncBackPro can be told the computer will shutdown even though something could stop that shutdown, e.g. Windows itself, another application, a driver, a user, etc. If you do not have the access rights in Windows (e.g. you are not an administrator) then this command will fail.
**-shutdownhybrid:** This is the same as **-shutdown**, except on Windows 8 and newer systems it will perform a hybrid shutdown of the system. A hybrid shutdown prepares the system for a faster start-up.
**-logoff:** Logoff (logout) from the current Windows account. Keep in mind that it will logoff the user in the session it is run in. For example, a scheduled task will run in its own session if it's set to run if logged in or not. So the -logoff switch will not logoff the current user. If the scheduled task is set to run only if the user is logged in then it will logoff the current user.
**-monoff:** Switches off all attached display monitors. This is unlikely to work if the profile is run from a different session, e.g. run via the task scheduler.
**-reboot:** Reboot the computer (if the computer supports it). SyncBackPro cannot guarantee that the computer will be rebooted. Windows does a reboot asynchronously, meaning SyncBackPro can be told the computer will reboot even though something could stop the reboot, e.g. Windows itself, another application, a driver, a user, etc. If you do not have the access rights in Windows (e.g. you are not an administrator) then this command will fail.
**-rebootforce:** Reboot the computer (if the computer supports it). Note that this will forcibly reboot the computer, e.g. applications with unsaved data will be forcibly closed. SyncBackPro cannot guarantee that the computer will be rebooted. Windows does a reboot asynchronously, meaning SyncBackPro can be told the computer will reboot even though something could stop the reboot, e.g. Windows itself, another application, a driver, a user, etc. If you do not have the access rights in Windows (e.g. you are not an administrator) then this command will fail.
**-rebootifreq:** Reboot the computer (if the computer supports it) if a profile was run that required a reboot for a file to be replaced/deleted. If you do not have the access rights in Windows (e.g. you are not an administrator) then this command will fail.
**-full**: Perform a full backup, i.e. rescan the destination for changes. This is only for [Fast Backup](FastBackup.md) profiles.
**-countdown [*seconds*]:** When used this parameter will cause a small window appear with a countdown timer in it. For example, if you passed **-countdown 10** then a window will appear counting down from 10 seconds. Once it reaches zero then the profiles following it in the command line will be run. You can abort the countdown (and exit the program) and so abort running of the profiles by clicking the **Cancel** button. If the user aborts the countdown then the [exit code](CommandLineParameters.md#exitcode) -100 is returned. If you click **OK** then the countdown is cleared and the program continues (and so the profiles are run). A countdown is also useful if you want to shutdown the computer after the profiles have run, but also want to abort the shutdown just in case you are using the computer at the time, e.g. -countdown 10 -shutdown. If you use this command line parameter in a scheduled task then make sure the **-m** parameter is not also used. If the task is scheduled then you must enable the checkbox "**Run only when user is logged on**" for the scheduled task otherwise the countdown window will not appear (this is due to the Windows security).
**-countdownmsg [*message*] [*seconds*]:** This is the same as the **countdown** parameter, except you can define what message you want to appear in the countdown window. If the user aborts the countdown then the [exit code](CommandLineParameters.md#exitcode) -100 is returned. Remember to wrap the message is double-quotes, e.g. -countdownmsg "Shutdown in 10 seconds" 10 -shutdown
**-export [*profile name*] [*filename*]:** This parameter is used to export a profile, or export all profiles. For example: -export "My Profile" "C:\Profiles\My Profile.sps" will export the profile called **My Profile** to the file **C:\Profiles\My Profile.sps**. To export all profiles you must use an asterisk for the profile name and supply a directory instead of a filename, e.g. -export * "C:\My Profiles" will export all profiles to the directory C:\My Profiles. The filenames will be the same as the profile names (with the .SPS filename extension). If a profile fails to be exported then the [exit code](CommandLineParameters.md#exitcode) -102 is returned. To not be prompted use the -silent parameter before -export
**-compilescript [*script filename*]:** (Pro version only) This parameter allows you to compile a script to check it for errors. This does not import a script. Also, it accepts the filename of a script file, and not an exported script (.sbs). Wildcards are not allowed, only exact filenames. For example, -compilescript "C:\My Folder\example.pas", will compile the script and output any errors or warnings to "C:\My Folder\example.bas.compile.txt" folder. If no directory is given in the filename then the current directory is used. If it fails the [exit code](CommandLineParameters.md#exitcode) -115 is returned.
**-importprofile [*profile filename*]:** This parameter allows you to import many profiles by using wildcards. For example, -importprofile "C:\My Folder\*.sps", will import all the profiles from the "C:\My Folder\" folder. If no directory is given in the filename then the current directory is used. If it fails the [exit code](CommandLineParameters.md#exitcode) -101 is returned. To not be prompted use the -silent parameter before -importprofile
**-importscript [*script filename*]:** (Pro version only) This parameter allows you to import many scripts by using wildcards. For example, -importscript "C:\My Folder\*.sbs", will import all the scripts from the "C:\My Folder\" folder. If no directory is given in the filename then the current directory is used. For security reasons scripts are always imported interactively and with the users consent. See the [note](CommandLineParameters.md#importscripts) below for more details. If it fails the [exit code](CommandLineParameters.md#exitcode) -108 is returned.
**-source:** Set the source folder for all the following profiles to use. Variables can be used, but please see the important information at the end of the [Variables](Variables.md#importantnotes) section on how Windows expands environment variables. Also, if you are running a group then this source folder will be used with **all** the profiles in the group, and that may not be appropriate or desired. If you change the source folder then you should consider using the [-noselect](CommandLineParameters.md#noselect) and [-nofilter](CommandLineParameters.md#nofilter) command line parameters.
**-dest:** Set the destination folder for all the following profiles to use. Variables can be used, but please see the important information at the end of the [Variables](Variables.md#importantnotes) section on how Windows expands environment variables. Also, if you are running a group then this destination folder will be used with **all** the profiles in the group, and that may not be appropriate or desired. If you change the destination folder then you should consider using the [-noselect](CommandLineParameters.md#noselect) and [-nofilter](CommandLineParameters.md#nofilter) command line parameters.
**-noselect:** This parameter will switch off the [file & folder selections](SubDirectoriesandFiles.md) for the profiles being run. Aside from improving performance, it is also strongly advisable that the selections be switched off when the source or destination directories have been changed. See the [Restoring and Selections](RestoringSelections.md) section for more details.
**-nofilter:** This parameter will switch off the [file & folder filters](FilterSettings.md) for the profiles being run. Aside from improving performance, it is also advisable that the filters be switched off when the source or destination directories have been changed. See the [Restoring and Selections](RestoringSelections.md) section for more details.
**-nochanges:** This parameter will run the profile but not allow the file or folder actions to be changed, or versions to be restored, if the [Differences](TheDifferencesWindow.md) window is displayed (it will not be if unattended).
**-nosplash:** The splash screen will not be displayed.
**-delete [*profile name*]:** The named profile is deleted. If a profile fails to be deleted then the [exit code](CommandLineParameters.md#exitcode) -103 is returned. You may be prompted if the profile is password protected, for example. To not be prompted use the **-silent** parameter before -delete
**-donotexit:** By default SyncBack will automatically exit after performing the tasks given on the command line (that is unless the user interface is used while performing those tasks). To stop it exiting use this parameter.
**-password [*password*]:** When deleting or importing profiles, an existing profile may exist with that name and be password protected. Use this parameter to provide the password. The password parameter must come before the import filename or **–delete** parameter, e.g. –password “the password” –delete “profile name”.
**-priority [*priority*]:** The profiles following this on the command line will be run at this priority. 1 (Idle) is the lowest priority, and 7 (Time Critical) is the highest. The default is 4 (Normal). Note that this is the priority of the thread that runs the profile. It is not the priority of the entire SyncBack process (which is the priority that you'll see in the Windows Task Manager). To set the priority of the entire SyncBack process using the procpriority command line parameter. The SyncBack process can only have one priority but each thread can have its own priority. If you are also using **-procpriority** then you should specify that on the command line before **-priority**.
**-procpriority [*priority*]:** This sets the priority of the entire SyncBack process (which is the priority that you'll see in the Windows Task Manager). 1 (Idle) is the lowest priority, and 5 (High Priority) is the highest. The default is 3 (Normal). Although Windows supports it, real-time priority is not supported by SyncBack as it would do more harm than good. Note that the range of values, and default value, are different from that for the **priority** command line parameter. The SyncBack process can only have one priority but each thread can have its own priority. If you are also using **-priority** then you should specify that on the command line after **-procpriority**.
- Giving SyncBackPro a lower priority means Windows will give less CPU time to SyncBackPro but that does not mean 100% of the CPU time will not be used. If there is spare CPU time, and a process needs to use the CPU, then it will be given CPU time. A lower priority means when CPU time is given to processes then the lower priority processes will get less of the CPU time when competing with higher priority processes.
**-affinity [*CPU mask*]:** This parameter is only of use on computers that are multi-core or multi-CPU and it must go on the command line before any profiles to be run. It ties the SyncBack process to one or more specific processors (or cores). This can be very useful if you want to limit the CPU resources SyncBack can use. The parameter is a bitmap mask (in decimal) with each bit representing a CPU. For example, to force SyncBack to only use processor 1 then pass 1, to force SyncBack to only use processor 2 then pass 2, to force SyncBack to use both processor 1 and 2 then pass 3, to force SyncBack to only use processor 3 then pass 4, etc. You can only specify processors/cores that exist and are also set to be used by the system.
**-profaffinity [*CPU mask*]:** This parameter sets the processor affinity for the profiles following this on the command line. If you are also using **-affinity** then that must go before **-profaffinity** on the command line, and it must go before any profiles to be run. If you use **-affinity** to set the affinity mask for the entire process then you can only use processors/cores that are in that mask. For example, if you specify **-affinity 3 -profaffinity 1 profile1 -profaffinity profile2** then SyncBack (the entire process) is restricted to using processor/cores 1 and 2, profile1 will only use processor/core 1 and profile2 will only use processor/core2. If you specified **-affinity 3 -profaffinity 4 profile1** then it would fail because processor/core 4 cannot be used by SyncBack.
**-posreset:** This will reset the positions of all windows. Note that you can perform the same action using the tray pop-up menu item **Reset all window positions and sizes**.
**-noprofbackup:** The profiles will not be backed up on exit.
**-profbackup:** The profiles will be backed up on exit.
**-clearss:** The Intelligent Synchronization data will be cleared for all profiles following it on the command line.
**-log [profile name]:** The latest log file for the profile will be displayed. If it is a group profile then the logs for all the profiles in the group will be displayed. If there is no log then an error message dialog is displayed. To stop the error message being displayed, use the -silent parameter before -log.
**-sbmssync:** (Pro version only) Using the [defined connection parameters](SBMService.md), it will login to the SBM Service, upload profile run history (if required), and download/delete the managed profiles (if required). If it fails the [exit code](CommandLineParameters.md#exitcode) -109 is returned.
**-winpassword [*password*]:** If you are importing profiles with a schedule then Windows may need your password in order to create the schedule (this is a security requirement of Windows). To avoid being prompted you can pass your Windows login password on the command line. If you do not give a password, and Windows needs your password, and you have not specified the **-i** parameter, then the schedule may silently fail to import.
**-disable [profile name]:** The specified profile will be disabled.
**-enable [profile name]:** The specified profile will be enabled.
**-pause [profile name]:** The specified profile will be paused.
**-resume [profile name]:** The specified profile will be resumed (if it is currently paused).
**-settings [folder]:** The specified folder will be used to get settings and profiles from. Note that unless you also use the parameter **-restricted** (see below) then it will also look in other folders for settings. Don't forget to use double-quotes around the folder name, e.g. -settings "C:\My Folder\". Also, it is not important where the setting is used on the command line. If you use the -settings parameter more than once then the last one is used. Note that you can also specify the folder to use during [installation](Installing.md).
**-restricted:** This setting is used along with **-settings** to restrict SyncBackPro to only look for settings and profiles in that specific folder.
**-debugon:** Enabled debug output for the profiles run following it on the command line. See also **-eventlog**
**-debugoff:** Disables debug output, for the profiles run following it on the command line, when it was previously enabled using **-debugon**. This can only be used with **-debugon**. For example, if you had the following SyncBackPro profile1 -debugon profile2 -debugoff profile3, then debug output for profile1 would depend on the program settings for debug output. Debug output for profile2 would be enabled regardless of the program settings, and debug output for profile3 would depend on the program settings.
**-eventlog:** Enable debug output to the Windows Event Log. See also **-debugon**
**-integcheck:** (Pro version only) The profiles passed on the command line, following this parameter, are run as integrity checks. You can optionally choose which source/left and destination/right paths to check by using the **-source** and **-dest** parameters.
**-copy [existing profile name] [copies profile name]:** The specified profile will be copied and the new profile will be given the new name specified. If unattended then: any errors that occur will not be displayed, any existing profile will be replaced, the Fast Backup database will not be copied and neither will any Intelligent Sync database.
**-donotshowlog:** The log file will not be displayed after the profile runs.
**-delay:** If used, then SyncBackPro will immediately delay/pause for 5 seconds when it starts. This is useful when SyncBackPro is being started with Windows so that it doesn't overload the system on boot. You can use the command line parameter multiple times and it will stack, e.g. **-delay -delay -delay** will pause for 15 seconds. The parameter can be used anywhere on the command line, e.g. it does not need to be specified first or last, for example.
### Running Profiles
All other parameters are assumed to be profile names. If a profile name has a space in it use double quotes around the profiles name, e.g. "All Profiles". The profile names are not case sensitive. So for example:
SyncBackPro profile1 -i profile2 profile3 -n -r "profile 4" -hibernate
This command will run profile1 as a backup/sync in unattended and minimized modes, profile2 and profile3 as a backup/sync in interactive and minimized modes, profile 4 as a restore in interactive and normal mode, and once all the profiles have finished the computer will hibernate.
If SyncBackPro is run with no command line parameters then it will first check to see if any other instances of SyncBackPro are running which also started with no command line parameters. If so, it will not start. This helps ensure only one instance of SyncBackPro is running.
However, whenever SyncBackPro is run with command line parameters, it will run regardless of whether any other instances of SyncBackPro are running or not. Also, if run with command line parameters, SyncBackPro will exit once it has finished its tasks, but if you use any part of its user interface while it is running then it will not exit.
### Parameter Order
The command line parameters are evaluated from left to right (first to last). When a profile name is found then the profile is run using the settings before it. For example, if you want to change the **source** folder for a profile then you must specify that before the profile:
SyncBackPro -source "C:\New Source\" MyProfile
### Importing Profiles
You can automatically import profiles by passing the filename of the exported profile on the command line. For example, if you exported a profile and saved it as 'MyProfile.SPS' then if you pass this on the command line to SyncBackPro it will automatically import the profile. The filename extension must be **.SPS** otherwise it is assumed to be the name of a profile to run. If you want to import multiple profiles using wildcards then you can use the **-importprofile** command line parameter. You can also import profiles by dragging the file onto the main window of SyncBackPro.
If a profile has a schedule then when you import it Windows may require you to provide your password (this is a security requirement of Windows). To avoid being prompted you can pass your Windows login password on the command line via the **-winpassword** command line parameter. If you do not give a password, and Windows needs your password, and you have not specified the **-i** parameter (so SyncBackPro cannot prompt you), then the schedule may silently fail to import.
### Importing & Compiling Scripts
You can also automatically import scripts by passing the filename of the exported script on the command line. The filename extension must be **.SBS** otherwise it is assumed to be the name of a profile to run. For security reasons scripts are always imported interactively and with the users consent. There is no way to bypass this. If you want to import multiple scripts using wildcards then you can use the **-importscript** command line parameter. You can also import scripts by dragging the file onto the main window of SyncBackPro.
It is also possible to check scripts can be compiled via the command line. See **-compilescript** command line parameter. Note it accepts the filename of script (e.g. filename.pas, filename.bas), and not a .SBS filename, which is an exported script.
### Exit Codes
When running SyncBackPro from the command line, a batch file, etc. then it will return an exit code that gives an indication of whether the task was completed successfully or not. As a number of tasks can be done via the command line at the same time, e.g. import a profile, run it, then delete it, the exit code relates to the last task done on the command line. Also note that if a group profile is run then the exit code is undefined. In the list below, the second column, e.g. 0xFFFFFF97, is what the **Windows Task Scheduler** will show in the **Last Result** column.
| **0** | | Success, no error. |
| --- | --- | --- |
| **100** | | SyncBackPro did not close because of user interaction or the **donotexit** parameter was used |
| **-100** | **0xFFFFFF9C** | The **countdown** parameter was used and the user aborted it |
| **-101** | **0xFFFFFF9B** | An attempt was made to import a profile from the command line and it failed |
| **-102** | **0xFFFFFF9A** | The **export** parameter was used and a profile export failed |
| **-103** | **0xFFFFFF99** | The **delete** parameter was used and the profile failed to be deleted |
| **-104** | **0xFFFFFF98** | The user aborted the profile run |
| **-105** | **0xFFFFFF97** | The profile name given does not exist |
| **-106** | **0xFFFFFF96** | The profile was not run because it is disabled |
| **-107** | **0xFFFFFF95** | The profile run failed (note that the result of a group profile run is unknown) |
| **-108** | **0xFFFFFF94** | An attempt was made to import a script from the command line and it failed |
| **-109** | **0xFFFFFF93** | An attempt was made to synchronize with the SBM Service from the command line and it failed |
| **-110** | **0xFFFFFF92** | The SyncBackPro serial number is invalid or the evaluation period has expired |
| **-111** | **0xFFFFFF91** | SyncBackPro is being run from an external drive and there is no write access to the folder SyncBackPro is being run from |
| **-112** | **0xFFFFFF90** | An [encryption key](GlobalSettings.md#encryption) is being used but it cannot be loaded or is corrupt |
| **-113** | **0xFFFFFF8F** | The [Ransomware Protection](GlobalSettings.md#ransomware) failed |
| **-114** | **0xFFFFFF8E** | [Administrator Protection](AdminProtWindows.md) is being used and the unelevated values cannot be retrieved |
| **-115** | **0xFFFFFF8D** | Script compilation failed (see **-compilescript** command line parameter) |
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Filter Settings
Define what file types and directories are copied and which are not. Note that if you filter out the **desktop.ini** file, and have the [option to use the desktop.ini file](CopyDeleteFolders.md#desktopini) set, then it will be highlighted in yellow in the filter settings window. This same window is also used to specify [verification](CopyDeleteSettings.md) and [versioning](CopyDeleteVersioning.md) filters.
- **Burger Menu**
- **Test Filters (Ctrl+T):** If selected a window appears where you can enter a file name or a folder name. A folder name must have a trailing slash, e.g. **\folder\**, otherwise it is assumed to be a file name. You should enter a relative name and not an absolute name, although absolute names can be used. For example, **C:\folder\filename.txt** is an absolute name but **\folder\filename.txt** is a relative name. The reason for this is that an absolute name will only refer to the source/left or destination/right and not both. Note that if you're using variables either in the source/left or destination/right, or in the filters, then the test may not be accurate because variables are variable by definition (meaning their value changes).
- **Copy these settings from another profile:** By selecting this menu item you can copy the filter settings from another profile.
- **Revert to defaults:** If selected then the filters will be reset to the defaults as set by you (see **Make these the defaults** in Settings above).
- **Revert to factory settings:** If selected then the filters will be reset to the default factory settings.
- **Re-apply Filter:** If clicked, then the filter will be re-applied to the selections you have made in the tree. For example, if you have selected to exclude all files with the extension **.tmp** then if you have selected a file in the tree which does have that extension then you will be prompted if you'd like to unselect that file. Use the "**Re-apply Filter**" button instead of the **OK** button when you haven't made any changes to the filters but want to re-apply them.
- **Settings**
- Do not use filters (can improve performance): If this is selected then no filtering is performed. This can reduce the run time of a profile, sometimes substantially. To further improve performance you may also want to [disable file & folder selections](SubDirectoriesandFiles.md#ignoreselections). You can also switch off filters using the [-nofilter](CommandLineParameters.md#nofilter) command line parameter.
- Use Windows file exclusion filters: If this option is enabled then the standard Windows backup file filters are also used. These are files that [Windows itself](http://msdn.microsoft.com/en-us/library/windows/desktop/bb891959(v=vs.85).aspx#filesnottobackup) recommends are not included in any backups. For example, any files in the temporary folder. Note that this option is not available if the profile is using [Fast Backup](FastBackup.md) (without the archive attribute).
- **Make these the defaults:** If selected then the filters you have set for this profile will become the default filters for all newly created profiles. See the pop-up menu below for copying the filter settings from another profile or reverting them to default values.
- **Filter:** SyncBackPro supports three different types of filters: **Old V3 style filters**, [Regular expressions](ExpressionFilters.md) and **DOS** expressions. See the help below for details on how to use these. Note that you should not use semi-colons (;) if you are using DOS expressions. This is due to a limitation in the Windows operating system call that is used to compare filenames using filters.
At the bottom of the window are a number of buttons:
- **Add (Files/folders to copy):** If clicked a dialog box appears letting you enter a filter expression for files and folders to include. You can enter a filename, a folder name, a complete path, etc. Anything matching this expression will be copied. You can enter multiple filters at the same time by using the forward slash (**/**) to separate them, e.g. **item1/item2/item3**. You can also press the **Again** button to immediately enter another filter item.
- Remove (Files/folders to copy): If clicked then the selected items will be removed from the list.
- **Add (Files/folders NOT to copy):** If clicked a dialog box appears letting you enter a filter expression for files and folders to exclude. You can enter a filename, a folder name, a complete path, etc. Anything matching this expression will be not be copied. You can enter multiple filters at the same time by using the forward slash (**/**) to separate them, e.g. **item1/item2/item3**. You can also press the **Again** button to immediately enter another filter item.
- To edit an existing filter you can double-click on the filter entry or press F2.
- **Remove (Files/folders NOT to copy):** If clicked then the selected items will be removed from the list. You can also double-click on an item in the list to change it.
When you make a change to the filters, and click OK to save them, then the new filters will be re-applied to the selections you made in the tree.
- Note: to modify an existing filter double-click it or select it and press F2. You can also click on a filter item (in **Files/folders to copy** or **Files/folders NOT to copy**) and press **Ctrl-C** to copy all the filter items to the Windows clipboard. Pressing **Ctrl-A** will select all filter items. Select **Settings->Copy these settings from another profile** to copy all the filters from another profile. You can use SyncBackPro and Windows Environment variables in the filters, e.g. **%HOMEPATH%**. A variable can also expand to several filters, see [Using variables in filters](FilterSettings.md#variablesinfilters) below.
### What are the filters compared with?
A filter is compared with the folders and filenames (which include the path). The root source and destination directories are not used, i.e. they are relative paths.
For example, if your source directory is **C:\My Files\** and it includes a folder called **SubFolder** and a file called **file.txt** then the filters would be compared against the following:
**\**
**\SubFolder\**
**\file.txt**
An important point to remember is that folders include a trailing backslash, but files do not.
If you are using **DOS Expressions** (not regular expressions) then you can use full paths in filters, i.e. you can use absolute paths. In SyncBackPro V10, you could use absolute paths, but they had to **exactly** match the beginning of the source or destination path. For example:
**Filter:** C:\My Files\Sub-Directory\*
**Source:** C:\My Files\
**Destination:** D:\My Backup\
The above would work because the start of the filter matches the source directory (**C:\My Files\**). However, in SyncBackPro V10 the following would not work:
**Filter:** C:\*cache*\
**Source:** C:\My Files\
**Destination:** D:\My Backup\
This is because the filter does not match the source or destination so it would be ignored.
Starting with SyncBackPro V11, a filter can be an absolute path and it will be used if the filters drive (or UNC path) matches either the source or destination drive (or UNC path). With the above example the filter **C:\*cache*\** is valid as it is using the drive **C:** which the source also uses.
This can be useful when using variables in the filters that have absolute paths. For example, you may be copying everything on your C:\ drive (not recommended) but do not want to copy your Windows or Program Files folders. In that case you could use the following **exclude** filters:
%SystemRoot%\*
%ProgramFiles%\*
%ProgramFiles(x86)%\*
### Using variables in filters
Variables can be used in both the **Files/folders to copy** filters and the **Files/folders NOT to copy** filters. A variable can be a Windows environment variable, a [SyncBackPro variable](Variables.md), or one of your own [profile or group variables](SetupVariables.md) or [global variables](GlobalSettings.md#variables).
A variable can expand to more than one filter. To do this, separate each filter in the variable's value with a forward slash (**/**). This is the same separator that is used when entering several filters at once into the filter entry box, so a variable expands to exactly what you could have typed into the filter entry box yourself. Filters that do not use variables are completely unaffected, as the splitting is only done on the expanded value of a variable, so existing profiles behave exactly as before. Empty entries are ignored, e.g. ***.txt//*.doc** expands to two filters, not three.
The forward slash was chosen as the separator because it cannot appear in Windows file or folder names, and it is not a special character in regular expressions. A pipe (**|**), for example, could not be used because it means alternation in a regular expression, e.g. **.*\.(txt|doc)$**. A variable can expand to multiple filters with both **DOS** expression filters and [Regular expression](ExpressionFilters.md) filters.
**Important:** if you are using regular expression filters, and a variable's expanded value contains a forward slash, then the forward slash is always treated as a separator. This means a regular expression that needs to match a literal forward slash cannot be put into a variable. However, as a forward slash can never match anything in a Windows file or folder name, this is rarely an issue.
For example, create a [profile variable](SetupVariables.md) named **MyExclusions** with the value:
***.tmp/*.bak/\Cache\**
Then add **%MyExclusions%** as a single entry in the **Files/folders NOT to copy** filter list. When the profile is run it is expanded to three separate filters:
***.tmp**
***.bak**
**\Cache\**
Global variables are especially useful with this feature because a filter list can be defined once and then used by many profiles. For example, create a [global variable](GlobalSettings.md#variables) named **CompanyExcludes** with the value:
***.log/\Temp\/~*.***
Any profile can then add **%CompanyExcludes%** to its **Files/folders NOT to copy** filters. To change the exclusions for all of those profiles, only the global variable needs to be edited, i.e. there is no need to edit each profile.
A Windows environment variable can also be used, and it could be set before SyncBackPro is run, e.g. by a script or scheduled task:
**set BACKUPFILTERS=*.docx/*.xlsx/*.pptx**
Adding **%BACKUPFILTERS%** to the **Files/folders to copy** filters means the profile will only copy those three file types, and the filtering can be controlled from outside of SyncBackPro.
Finally, the filter list itself can contain a mix of normal filters and variables. For example, the **Files/folders NOT to copy** list could contain both the entry ***.iso** and the entry **%MyExclusions%**. The variable simply contributes its additional filters when the profile is run.
### Example filters for SyncBackPro
The filters in SyncBackPro allow for files and folders to be filtered based on their name. There are three [filter types](FilterSettings.md#filtertypes) to choose from. This section gives examples using **DOS Expressions**, which is the default filter type and the simplest to use.
First, there are some important rules to remember about filters:
1. The selections in the tree override the filters. For example, you can filter out all **.txt** files but still select some **.txt** files in the tree.
2. Exclude filters override include filters. For example, the include filter may be set to * (which means include everything), and your exclude filter could have ***\*.temp** in it, which means any file with the extension **.temp** will be excluded.
3. Filters apply to the entire filename, including the path, but the source and destination base are [not part of the path](FilterSettings.md#nobasepath). For example, if your source directory is **C:\My Documents\** then that will not be in the filename used with the filter. This makes sense if you remember that the source and destination root directories are different, but their sub-directories are going to have the same names.
4. Folder names end with a backslash, whereas files do not, e.g. **\My Documents\** and **\My Documents\filename.txt**
5. All file and folder names start with a backslash.
### Remember to include folders and files in the filter
If you set your **Files/folders to copy** filter to just ***\*.txt** then it will only include text files in the root folder and unselect all child folders. Why? Because you forgot to also include folders. You need to also add *\ to **Files/folders to copy** to include all the folders (or change that as appropriate to include only folders with certain names, for example).
Another example is if you set your **Files/folders to copy** filter to just ***\** then it will only include folders and no files. Why? Because all folders end with a backslash (\) but no files do. If you want all folders and files the filter should be * (or *\*)
### Filters are applied top-down
When SyncBackPro scans a folder it starts from the top (the root) and works its way down the child folders. For each file and folder it first looks to see if it has been specifically selected, or not, in the file & folder selection tree. Selections override filters. If no selection decision has been made then it uses the filters. It first checks to see if the file or folder matches any inclusion filter. If not, it is filtered out, i.e. skipped (ignored). If it's a folder that is being filtered out then all files and child folders of that folder are ignored. If it matches the filter then it checks to see if it matches an exclusion filter. If it does then it is filtered out.
For example, say you have the following folder structure:
\
\Parent\
\Parent\Child\
\Parent\Child\GrandChild\
The root folder (\) is always included and cannot be filtered out. After scanning the files in the root folder, it would then scan Parent, then Child, then GrandChild. Each folder must match a filter (or have been selected in the tree) otherwise everything in it is ignored. For example, if you had the following filter to copy all text files in the Child folder then it would fail:
\Child\*.txt
Why would it fail? Two reasons. First, because the Parent folder does not match that filter so the Child folder is never looked at. Second, the Child folder doesn't match that filter (it is \Parent\Child\). Folders end with a backslash. Therefore the filters must be changed to the following so the folders are included:
\Parent\
\Parent\Child\
\Parent\Child\*.txt
### Example DOS Expressions
Notice that many of the examples below also include filters to include folders.
| *\ *\*.txt | All text files (.txt) in all folders. The *\ filter ensures all folders are looked at. |
| --- | --- |
| *\ *\temp\*.txt | All text files in all folders called **temp** and any sub-folders of those **temp** folders. |
| \temp\ \temp\*.txt | All text files in the root folder called **temp**. For example, if your source directory is C:\My Documents\ then this filter is for all text files in C:\My Documents\temp\ |
| *\test\ | All folders called **test**. Note that no files will be copied unless another filter is added to include files, e.g. *\*.txt |
| *\parent\ *\parent\child\ | All folders called **child** whose parent directory is called **parent**. Notice the filter *\ is required otherwise it will never look inside folders called parent. Note that no files will be copied unless another filter is added to include files, e.g. *\*.txt |
| \temp*\ | All root folders whose name starts with **temp** or is called **temp**. Note that no files will be copied unless another filter is added to include files, e.g. *\*.txt |
### Examples of wrong DOS Expressions
The examples below are examples of **wrong** filters. An explanation is given of why it is wrong.
| *.txt | This will match any file, or folder, whose name ends with **.txt**. If you are trying to just include all text files then you should also remember to add *\ to the filters otherwise no child folders will be selected (see the notes below). If you just want text files in the root then the filter is valid if used on its own. |
| --- | --- |
| temp\*.txt | This filter will fail to match anything because all folder and filenames start with a backslash (\) character. |
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Open and Locked File Copying
Open / locked files can only be copied when the following criteria are met:
- You are running SyncBackPro or SyncBackSE elevated and with a user who is a member of the **Backup Operators** group (or an Administrator). Starting with SyncBack V12, it is possible to copy open/locked files without these requirements if you have installed the [Scheduler Monitor Service](SchedulerMonitorService.md) (which is the case if SyncBack was [installed for All Users](InstallerOptions.md)).
- The open / locked file is on a **local** volume that is formatted with **NTFS** or **ReFS**, or it is on a **local** volume that is formatted with FAT32 and you also have a **local** volume on an **internal** drive that is formatted with NTFS or ReFS. You can copy locked files to any other drive (external or internal), network drive, Zip file, FTP, etc. The restriction is on where the locked file is, not where it is copied to.
**“Local”** refers to a volume on a drive that is physically attached to the computer. This means open or locked files cannot be copied from drives that are accessed over a network.
**“Internal”** refers to a drive connected through interfaces such as SATA, SCSI, IDE or NVMe. Drives connected via USB, FireWire, eSATA or similar external interfaces are considered external. In essence, if the drive is installed inside the computer’s chassis, it is treated as internal.
If these conditions are not met, or if another issue prevents access, the first page of the log file will contain a warning indicating that open or locked files could not be copied.
### Possible reasons why an open / locked file cannot be copied:
- If you are using a UNC path to a local drive (e.g. \\localhost\C$\path\) then you must change it to use the drive explicitly and not in the UNC format (e.g. C:\path\)
- Only one profile can copy open / locked files at any one time. If two profiles are running at the same time then only one of them will be able to copy the open / locked files. If you are running profiles in a group then unselect the option to run them in parallel.
- The Volume Shadow Copy Service (VSS) is not installed or working correctly. VSS is a part of Windows and not SyncBack. It is used to copy open / locked files. If there is a problem with VSS then the log file will contain the error messages.
- You are not using the latest version of SyncBackPro or SyncBackSE. You may download the latest version from [our website](http://www.2brightsparks.com/).
- Desktop search programs, like Copernic Desktop Search, can interfere with the copying of open / locked files. You may need to close those programs to guarantee that open / locked files can be copied.
**Further reading:** [Open and Locked File Copying](https://www.2brightsparks.com/resources/articles/locked-files.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Variables
SyncBackPro includes a whole range of variables that can be used in various profile settings, e.g. the Source and Destination. Variables are values which are not known until the profile is run. At runtime the variables are replaced by their value. Note that you can also [define your own profile variables](SetupVariables.md)at a [global](GlobalSettings.md#variables) level, group level and at the profile level. You can also get values from the [registry](Variables.md#registry) and Windows.
For variables see the following sections:
- [Days](Variables.md#days)
- [Weeks](Variables.md#weeks)
- [Months](Variables.md#months)
- [Years](Variables.md#years)
- [Dates](Variables.md#dates)
- [Times](Variables.md#times)
- [Drives, Files, and Folders](Variables.md#drivesfilesfolders)
- [Misc.](Variables.md#misc)
- [Backup email](Variables.md#backupfromemail)
- [Emailing the log](Variables.md#emailinglog)
- Log
- Advanced Log
- [Registry](Variables.md#registry)
- [SyncBack Touch](Variables.md#sbfs)
- [Order of evaluation](Variables.md#orderofevaluation) (precedence)
- [Important notes](Variables.md#importantnotes)
- [Auto-incrementing variable](SetupVariablesIncremental.md) (%AUTOINC%)
### Examples of variable usage
Although variables appear to be complex, they are in fact very simple. Just remember that a variable is replaced with its value when the profile is run. A couple of examples will make it clear:
- You are the administrator for a number of employees computers and want to create a backup profile that makes a backup of all the users documents. This profile will be imported on each users computer so you don't need to manually create it on each computer. Each user has their own 'My Documents' folder on a computer, so if you set the source folder to one users folder then it wouldn't work for other users (because they have different usernames, so the path would be different). To avoid this you can simply set the source to **%CSIDL_PERSONAL%**. Now when the profile is run it will replace the %CSIDL_PERSONAL% string with the users My Documents path.
- You want to backup to a Zip file and use the current date in the filename of the Zip file. To do this simply set your destination (for example) to **X:\Backup\%DATE%.Zip**
### Variables are user specific
Remember that the value of a variable may be user-specific. For example, the variable **%CSIDL_PERSONAL%** (see the example above) has a different value for each user (because every users has their own My Documents folder). So if you have a profile set to run as a specific user, e.g. via **Run As** or via the scheduler, then keep in mind that the value returned depends on the user who is running the profile.
### Scripts
Variables can be created or changed using scripting, see [SBVariables.SetVar](SBVariables.md#function_setvar_varname__newvarvalue__)
### Windows security and environment variables
Windows Vista introduced the concept of elevation, meaning a program run by an administrator didn't run with full privileges unless it requested them and the user explicitly granted them. In Windows terms it is called **UAC** (User Account Control):
http://windows.microsoft.com/en-us/windows/what-is-user-account-control#1TC=windows-7
For example, when SyncBackPro is run you are asked, by Windows, to allow it to run elevated. By running elevated SyncBackPro can copy locked files, for example. One side effect of this is that processes that run elevated, like SyncBackPro and SyncBackSE, cannot access some things that were set by non-elevated processes. For example, using the Windows File Explorer you can map a network drive to a drive letter. Windows File Explorer does not run elevated. When SyncBackPro and SyncBackSE is run it cannot see the mapped drive. This is because of the security introduced in Windows Vista. The same applies to environment variables. If you open a command prompt (not elevated), set an environment variable and then run SyncBackPro or SyncBackSE, it will not be able to see those environment variables. This is also because of the security introduced in Windows Vista. One option is to use **SETX** to set the variables and the other option would be to run the command prompt elevated.
SyncBackFree does not have these Windows security related issues because it does not run elevated.
**Temporary Files**
By default, SyncBackPro will use the standard Windows temporary directory for all temporary files. If the Windows environment variable **%SYNCBACKTEMP%** is defined, then the directory it specifies will instead be used. You must ensure the directory exists. For compression, you can specify an [alternative directory](CompressionAdvanced.md) (overriding any default temporary directory setting).
### Days
The following variables are related to days of the week, month, etc:
**%DAY%** Current day of the month, e. g. 10
**%DAYOFMONTH%** Alias for %DAY%
**%DAYODDEVEN%** Odd or even day of the year (O = odd day, E = even day)
**%DAY_P%** Yesterdays day of the month (could be previous month)
**%DAY_N%** Tomorrows day of the month (could be next month)
**%DAYOFWEEK%** Current day of the week, (1 = Monday, 7 = Sunday)
**%DAYOFWEEK_P%** Yesterdays day of the week
**%DAYOFWEEK_N%** Tomorrows day of the week
**%DAYOFYEAR%** Current day of the year (January 1st = 1)
**%DAYOFYEAR_P%** Yesterdays day of the year
**%DAYOFYEAR_N%** Tomorrows day of the year
**%DAYOFQUARTER%** Current day of the current quarter of the year (January 1st, April 1st, July 1st, October 1st = 1)
**%DAYOFQUARTER_P%** Yesterdays day of the quarter of the year
**%DAYOFQUARTER_P%** Tomorrows day of the quarter of the year
**%NTHDAYOFWEEK%** Note that this value may differ from the value that the **WeekOfTheMonth** variable returns, because NthDayOfWeek counts every occurrence of the given weekday, while WeekOfTheMonth only counts a week if it includes 4 or more days in the month. Thus, for example, if today is a Saturday and is the first day of a month, NthDayOfWeek returns 1, while WeekOfTheMonth returns 5 (or maybe 4), indicating the last week of the previous month.
**%DAYSINMONTH%** Number of days in current month.
**%DAYSINYEAR%** Number of days in current year.
These new variables allow you, for example, to keep 7 days worth of backups, e. g. you could set your destination to D:\Backup\%DAYOFWEEK%\ so that you'll always have backups of the last seven days worth of files.
**%DAYOFWEEKNAME%** The first three letters of the day of the week, e.g. Mon. Note that English is always used.
**%DAYOFWEEKNAME_P%** The first three letters of yesterday
**%DAYOFWEEKNAME_N%** The first three letters of tomorrows
**%LASTRUNDAY%** The day of the month that the profile was last run (empty string if it has not yet been run)
**%LASTSUCCESSRUNDAY%** The day of the month that the profile was last run without error (empty string if it has not yet been run without error)
### Weeks
The following variables are related to weeks of the month, year, etc:
**%WEEKOF%** Week of the year (1 to 53). WeekOf uses the ISO 8601 standard to define the week of the year. That is, a week is defined as running from Monday through Sunday, and the first week of the year is defined as the one that includes the first Thursday of the year (the first week that includes four or more days in the year). This means that if the first calendar day of the year is a Friday, Saturday, or Sunday, then for the first three, two, or one days of the calendar year, WeekOf returns the last week of the previous year. Similarly, if the last calendar day of the year is a Monday, Tuesday, or Wednesday, then for the last one, two, or three days of the calendar year, WeekOf returns 1 (the first week of the next calendar year).
**%WEEKOFODDEVEN%** Odd or even week of the year (O = odd week, E = even week)
**%WEEKOFTHEMONTH%** Week of the month (1 to 6). WeekOfTheMonth uses the ISO 8601 standard definition of a week. That is, a week is considered to start on a Monday and end on a Sunday. The first week of a month is defined as the first week with four or more days in that month. Thus, if the first day of the month is a Friday, Saturday, or Sunday, the first one, two, or three days of the month are defined as belonging to the last week of the previous month. Similarly, if the last day of the month is a Monday, Tuesday, or Wednesday, then the last one, two, or three days of the month are defined as belonging to the first week of the next month.
**%WEEKOFQUARTER%** Current week of the current quarter of the year (January 1st, April 1st, July 1st, October 1st = 1)
**%WEEKOFQUARTER_P%** Yesterdays week of the quarter of the year
**%WEEKOFQUARTER_P%** Tomorrows week of the quarter of the year
**%WEEKSINYEAR%** The number of weeks in the year (52 or 53). WeeksInYear defines the first week of the year according to the ISO 8601 standard. That is, the first week of the year is the one that includes the first Thursday of the year (the first week that has 4 or more days in the year). This means that WeeksInYear always returns either 52 or 53.
### Months
The following variables are related to months of the year:
**%MONTH%** Current month, e. g. 12
**%MONTH_P%** Previous month
**%MONTH_N%** Next month
**%MONTH_Y%** Yesterdays month
**%MONTH_T%** Tomorrows month
**%MONTHNAME%** The first three letters of the current month, e.g. Jan. Note that English is always used.
**%MONTHNAME_P%** The first three letters of last month
**%MONTHNAME_N%** The first three letters of next month
**%MONTHNAME_Y%** The first three letters of yesterdays month
**%MONTHNAME_T%** The first three letters of tomorrows month
**%LASTRUNMONTH%** The month that the profile was last run (empty string if it has not yet been run)
**%LASTSUCCESSRUNMONTH%** The month that the profile was last run without error (empty string if it has not yet been run without error)
**%MONTHOFQUARTER%** The number of the month of the quarter of the year. For example, January=1, February=2, March=3, April=1, May=2, etc.
**%MONTHOFQUARTER_P%** The number of the previous month of the quarter of the year. For example, if it is April then this returns 3 (for March), and if it is March then it would return 2 (for February).
**%MONTHOFQUARTER_N%** The number of the next month of the quarter of the year. For example, if it is March then this returns 1 (for April), and if it is April then it would return 2 (for May).
**%MONTHOFQUARTER_Y%** The number of yesterdays month of the quarter of the year.
**%MONTHOFQUARTER_T%** The number of tomorrows month of the quarter of the year.
### Years
The following variables are related to years:
**%YEAR%** Current year in 4 digits, e. g. 2010
**%YEAR2%** Last two digits of current year, e. g. 09
**%YEAR_P%** Previous year
**%YEAR_N%** Next year
**%YEAR_Y%** Yesterdays year
**%YEAR_T%** Tomorrows year
**%QUARTEROFYEAR%** Returns the current quarter for the current year, i.e. 1 for January to March, 2 for April to June, 3 for July to September, and 4 for October to December.
**%QUARTEROFYEAR_P%** Returns the previous quarter for the current year. For example, if the current quarter is 2 then it returns 1, and if it is 1 then it returns 4.
**%QUARTEROFYEAR_N%** Returns the next quarter for the current year. For example, if the current quarter is 1 then it returns 2, and if it is 4 then it returns 1.
**%QUARTEROFYEAR_Y%** Returns yesterdays quarter for the current year.
**%QUARTEROFYEAR_T%** Returns tomorrows quarter for the current year.
**%LASTRUNYEAR%** The year that the profile was last run (empty string if it has not yet been run)
**%LASTSUCCESSRUNYEAR%** The year that the profile was last run without error (empty string if it has not yet been run without error)
### Dates
The following variables are related to dates:
**%DATE%** Current date (it will be in the short date format configured in your installation of Windows)
**%DATE_P%** Yesterdays date
**%DATE_N%** Tomorrows date
### Times
The following variables are related to times:
**%TIME%** Current time (it will be in the short time format configured in your installation of Windows)
**%HOUR%** Current hour (24 hour clock format), e. g. 19
**%MINUTE%** Current minute
**%SECOND%** Current second
**%MILLISECOND%** Current millisecond (0 to 999)
**%HOUROFTHEYEAR%** The number of complete hours between the current date & time and 12:00 AM on Jan 1 of the year.
**%HOUROFTHEMONTH%** The number of complete hours between the current date & time and 12:00 AM on the first day of the month.
**%HOUROFTHEWEEK%** The number of complete hours between the current date & time and 12:00 AM on Monday of the week.
**%MINUTEOFTHEYEAR%** The number of minutes between the current date & time and 12:00:00:00 AM on Jan 1 of the year.
**%MINUTEOFTHEMONTH%** The number of minutes between the current date & time and
12:00 AM on the first day of the month.
**%MINUTEOFTHEWEEK%** The number of minutes between the current date & time and 12:00 AM on Monday of the week (the week starts on Monday).
**%MINUTEOFTHEDAY%** The number of minutes between the current date & time and 12:00 AM on the same day.
**%SECONDOFTHEYEAR%** The number of seconds between the current date & time and 12:00:00:00 AM on Jan 1 of the year.
**%SECONDOFTHEMONTH%** The number of seconds between the current date & time and 12:00:00 AM on the first day of the month.
**%SECONDOFTHEWEEK%** The number of seconds between the current date & time and 12:00:00 AM on Monday of the week (the week starts on Monday).
**%SECONDOFTHEDAY%** The number of seconds between the current date & time and 12:00:00 AM on the same day.
**%SECONDOFTHEHOUR%** The number of seconds between the current date & time and the start of the same hour on the same day.
**%MILLISECONDOFTHEYEAR%** The number of milliseconds between the current date & time and 12:00:00:00 AM on Jan 1 of the year.
**%MILLISECONDOFTHEMONTH%** The number of milliseconds between the beginning (Midnight on the first day) of the month and the current date & time.
**%MILLISECONDOFTHEWEEK%** The number of milliseconds between the current date & time and 12:00:00:00 AM on Monday of the current week (the week starts on Monday).
**%MILLISECONDOFTHEDAY%** The number of milliseconds between the current date & time and the beginning (midnight) on the same day.
**%MILLISECONDOFTHEHOUR%** The number of milliseconds between the current time and the start of the same hour on the same day.
**%MILLISECONDOFTHEMINUTE%** The number of milliseconds between the current time and the start of the same minute on the same day.
### Drives, Files, and Folders
The following variables are related to drives, files, and folders:
**%THISDRIVE%** The drive that SyncBackPro is running on, e. g. C:
**%THISPATH%** The path that SyncBackPro is running from, e.g. C:\Program Files\2BrightSparks\SyncBackPro\
**%THISPROGRAM%** The path and filename of the SyncBackPro program itself.
**%SYNCBACKFOLDER%** The **default** local (not roaming) folder that SyncBackPro stores it’s profiles in, e.g. %LOCALAPPDATA%\SyncBack\. Note that this is not necessarily where the user has decided to store his profiles (you may have configured it to store them in %THISPATH%, for example). If SyncBackPro is being run from an external drive then it is the same as %THISPATH%
**%SYNCBACKBACKUPFOLDER%** The **default** local (not roaming) folder that SyncBackPro stores it’s profile backup files in, e.g. C:\Users\[username]\AppData\Local\2BrightSparks\SyncBackPro\Profiles Backup\. Note that this is not necessarily where the user has decided to store his profile backups. If SyncBackPro is being run from an external drive then it is the same as %THISPATH%Profiles Backup\
There are several special variables than can be used to identify drives based on their label or serial number. These are very useful when using external USB drives, for example, which may have a different drive letter each time they are plugged-in:
**%LABEL=?%** The entry is replaced by the drive letter with that label. For example, if your \\?\Volume{72e21143-e411-11eb-86b6-f45214d507ae}\ volume is labeled **My Disk** then **%LABELVOL=My Disk%Documents** would be translated into \\?\Volume{72e21143-e411-11eb-86b6-f45214d507ae}\Documents. Note that you can only use one label per string but can use it multiple times. If more than one volume has the same label then you will receive an error when the profile is run. To ignore the error use the variable **%IGNORE_ERR%**. Note that it is undefined which volume will be used if there is more than one volume with the same label.
**%LABELVOL=?%** The entry is replaced by the volume GUID path for the volume that uses that label. For example, if your C drive is labeled **My Disk** then **%LABEL=My Disk%Documents** would be translated into C:\Documents. Note that you can only use one label per string but can use it multiple times. If more than one drive has the same label then you will receive an error when the profile is run. To ignore the error use the variable **%IGNORE_ERR%**. Note that it is undefined which drive will be used if there is more than one drive with the same label.
**%SERIAL=?%** The entry is replaced by the drive letter with that serial number. For example, if your D drive has a serial number of **BC46-F69E** then **%SERIAL=BC46-F69E%Program Files** will be translated at runtime into D:\Program Files. Note that you can only use one serial per string but can use it multiple times. If more than one drive has the same serial number then you will receive an error when the profile is run. To ignore the error use the variable **%IGNORE_ERR%**. Note that it is undefined which drive will be used if there is more than one drive with the same serial.
**%SERIALVOL=?%** The entry is replaced by the volume GUID path with that serial number. For example, if your \\?\Volume{72e21143-e411-11eb-86b6-f45214d507ae}\ volume has a serial number of **BC46-F69E** then **%SERIALVOL=BC46-F69E%Program Files** will be translated at runtime into \\?\Volume{72e21143-e411-11eb-86b6-f45214d507ae}\Program Files. Note that you can only use one serial per string but can use it multiple times. If more than one volume has the same serial number then you will receive an error when the profile is run. To ignore the error use the variable **%IGNORE_ERR%**. Note that it is undefined which volume will be used if there is more than one volume with the same serial.
**%HWSERIAL=?%** The entry is replaced by the drive letter with that hardware serial number. There are important differences between the hardware serial number and the volume (also called a partition) serial number used by the variables **SERIAL** and **DISKSERIAL**. The volume serial number is changed every time a volume is formatted. However, the hardware serial number is stored in the drive hardware itself and never changes. Another important difference is that the hardware serial number is the same for all volumes on a physical drive. For example, if you have a hard drive you could have two volumes on it, e.g. C: and D:. The hardware serial numbers for the volumes C: and D: will be identical because they are stored on the same physical drive. Because of this you should not use a hardware serial number if there is more than one volume on the drive (because which volume is returned is undefined in that case). If the drive is one of two or more connected to a RAID controller then the RAID controller will likely (but not guaranteed) return the serial number of the first available drive in the RAID array. Note that you can only use one serial per string but can use it multiple times. If more than one drive has the same hardware serial then you will receive an error when the profile is run. To ignore the error use the variable **%IGNORE_ERR%**. Note that it is undefined which drive will be used if there is more than one drive with the same hardware serial.
**%IGNORE_ERR%** This is a special variable than can be used with **%LABEL=%, %SERIAL=?%** and **%HWSERIAL=?%**. When two or more drives have the same label or serial, then SyncBack will not start the profile. This is to avoid potential problems as there is no way to know which drive to use. If you do not care which drive is used then simply use this variable anywhere in the path, e.g. **%IGNORE_ERR%%LABEL=My Disk%Documents**
**%LABELOF=?%** Returns the label of the specified drive. For example, **%LABELOF=C%** would be replace by the label of drive C:. This variable was introduced with V11.
**%LABELOFVOL=?%** Returns the label of the specified volume. For example, **%LABELOFVOL=72e21143-e411-11eb-86b6-f45214d507ae%** would be replace by the label of \\?\Volume{72e21143-e411-11eb-86b6-f45214d507ae}\. This variable was introduced with V11.
**%SERIALOF=?%** Returns the volume serial number of the specified drive. For example, **%SERIALOF=D%** would be replace by the volume serial number of drive D:. This variable was introduced with V11.
**%SERIALOFVOL=?%** Returns the volume serial number of the specified volume. For example, **%SERIALOFVOL=72e21143-e411-11eb-86b6-f45214d507ae%** would be replace by the volume serial number of \\?\Volume{72e21143-e411-11eb-86b6-f45214d507ae}\. This variable was introduced with V11.
**%HWSERIALOF=?%** Returns the hardware serial number of the specified drive. For example, **%HWSERIALOF=E%** would be replace by the hardware serial number of drive E:. See %HWSERIAL=?% above for details on hardware serial numbers. This variable was introduced with V11.
**%DISKLABEL%** The label of the disk (volume) in the drive. This uses the beginning of the string to be expanded as the drive. For example, if you have the destination as **D:\%DISKLABEL%** then the DISKLABEL variable is replaced by the label of the D: drive. This variable cannot be used in the [email log text body](EmailSettings.md). To get the label of a specific drive, use %LABELOF=?% (see above for details).
**%DISKSERIAL%** The unique serial number of the disk (volume) in the drive. See DISKLABEL above for notes on how it is used. This variable cannot be used in the [email log text body](EmailSettings.md). To get the serial number of a specific drive, use %SERIALOF=?% (see above for details).
**%DISKHWSERIAL%** The hardware serial number of the drive. Note that if the hardware serial number cannot be retrieved then the variable is not expanded. See DISKLABEL above for notes on how it is used. This variable cannot be used in the [email log text body](EmailSettings.md). To get the hardware serial of a specific drive, use %HWSERIALOF=?% (see above for details).
- If you use the **LABEL**, **SERIAL** or **HWSERIAL** variables in your profiles source/left or destination/right path, then SyncBackPro will check if two or more drives share the same serial or label. If so, the profile run will fail to run and give an error, e.g. **The following drives share the same volume label**.
**%SMARTSTATUSSRC%** If the profile is configured to log the [S.M.A.R.T. status](Log.md#smart) of the drives then this variable is set with the S.M.A.R.T. status of the source/left drive (Pro version). The variable is set just before scanning for changes begins.
**%SMARTSTATUSDEST%** If the profile is configured to log the [S.M.A.R.T. status](Log.md#smart) of the drives then this variable is set with the S.M.A.R.T. status of the destination/right drive (Pro version). The variable is set just before scanning for changes begins.
**%DROPBOX%** If you have Dropbox installed then this is the path to your Dropbox files, e.g. C:\Users\[username]\Dropbox\. If you do not have Dropbox installed then it is an empty string. This variable was introduced with V11.
If you cannot find the relevant path using a **CSIDL** variable, see the **FOLDERID** variables below:
**%CSIDL_DESKTOP%** The virtual folder representing the Windows desktop, the root of the namespace.
**%CSIDL_PROGRAMS%** The file system directory that contains the user's program groups (which are themselves file system directories). A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\
**%CSIDL_PERSONAL%** The virtual folder representing the My Documents desktop item. A typical path is C:\Users\[username]\Documents\
**%CSIDL_FAVORITES%** The file system directory that serves as a common repository for the user's favorite items. A typical path is C:\Users\[username]\Favorites\
**%CSIDL_STARTUP%** The file system directory that corresponds to the user's Startup program group. The system starts these programs whenever any user logs onto Windows. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
**%CSIDL_RECENT%** The file system directory that contains shortcuts to the user's most recently used documents. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Recent\
**%CSIDL_SENDTO%** The file system directory that contains Send To menu items. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\SendTo\
**%CSIDL_STARTMENU%** The file system directory containing Start menu items. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\
**%CSIDL_DESKTOPDIRECTORY%** The file system directory used to physically store file objects on the desktop (not to be confused with the desktop folder itself). A typical path is C:\Users\[username]\Desktop\
**%CSIDL_NETHOOD%** A file system directory containing the link objects that may exist in the My Network Places virtual folder. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Network Shortcuts\
**%CSIDL_FONTS%** A virtual folder containing fonts. A typical path is C:\Windows\Fonts\
**%CSIDL_TEMPLATES%** The file system directory that serves as a common repository for document templates. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Templates\
**%CSIDL_COMMON_STARTMENU%** The file system directory that contains the programs and folders that appear on the Start menu for all users. A typical path is C:\ProgramData\Microsoft\Windows\Start Menu\
**%CSIDL_COMMON_PROGRAMS%** The file system directory that contains the directories for the common program groups that appear on the Start menu for all users. A typical path is C:\ProgramData\Microsoft\Windows\Start Menu\Programs\
**%CSIDL_COMMON_STARTUP%** The file system directory that contains the programs that appear in the Startup folder for all users. A typical path is C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\
**%CSIDL_COMMON_DESKTOPDIRECTORY%** The file system directory that contains files and folders that appear on the desktop for all users. A typical path is C:\Users\Public\Desktop\
**%CSIDL_APPDATA%** The file system directory containing application data for all users. A typical path is C:\Users\[username]\AppData\Roaming\
**%CSIDL_PRINTHOOD%** The file system directory that contains the link objects that can exist in the Printers virtual folder. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Printer Shortcuts\
**%CSIDL_LOCAL_APPDATA%** The file system directory that serves as a data repository for local (non-roaming) applications. A typical path is C:\Users\[username]\AppData\Local\
**%CSIDL_ALTSTARTUP%** The file system directory that corresponds to the user's non-localized Startup program group. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
**%CSIDL_COMMON_ALTSTARTUP%** The file system directory that corresponds to the non-localized Startup program group for all users. A typical path is C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\
**%CSIDL_COMMON_FAVORITES%** The file system directory that serves as a common repository for favorite items common to all users. A typical path is C:\Users\[username]\Favorites\
**%CSIDL_INTERNET_CACHE%** The file system directory that serves as a common repository for temporary Internet files. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\INetCache\
**%CSIDL_COOKIES%** The file system directory that serves as a common repository for Internet cookies. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\INetCookies\
**%CSIDL_HISTORY%** The file system directory that serves as a common repository for Internet history items. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\History\
**%CSIDL_PROFILE%** The user's profile folder. A typical path is C:\Users\[username]\
**%CSIDL_COMMON_MUSIC%** The file system directory that serves as a repository for music files common to all users. A typical path is C:\Users\Public\Music\
**%CSIDL_MYMUSIC%** The users music files folder. A typical path is C:\Users\[username]\Music\
**%CSIDL_COMMON_PICTURES%** The file system directory that serves as a repository for image files common to all users. A typical path is C:\Users\Public\Pictures\
**%CSIDL_MYPICTURES%** The users image files folder. A typical path is C:\Users\[username]\Pictures\
**%CSIDL_COMMON_VIDEO%** The file system directory that serves as a repository for video files common to all users. A typical path is C:\Users\Public\Videos\
**%CSIDL_MYVIDEO%** The users video files folder. A typical path is C:\Users\[username]\Videos\
**%CSIDL_CDBURN_AREA%** The file system directory acting as a staging area for files waiting to be written to CD. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\Burn\Burn\
**%CSIDL_WINDOWS%** The Windows directory. This corresponds to the %windir% or %SYSTEMROOT% environment variables. A typical path is C:\Windows
**%CSIDL_SYSTEM%** The Windows System folder. A typical path is **C:\Windows\System32** for both 32-bit and 64-bit versions of Windows.
**%CSIDL_SYSTEMX86%** The 32-bit Windows System folder (even if you are using 64-bit Windows). For 64-bit versions of Windows this may be **C:\Windows\SYSWOW64**
**%CSIDL_PROGRAM_FILES%** The program files folder. A typical path is **C:\Program Files** for both 32-bit and 64-bit versions of Windows.
**%CSIDL_PROGRAM_FILESX86%** The 32-bit program files folder (even if you are using 64-bit Windows). For 32-bit versions of Windows it is **C:\Program Files** and **C:\Program Files (x86)** for 64-bit versions of Windows.
**%CSIDL_PROGRAM_FILES_COMMON%** A folder for components that are shared across applications. A typical path is **C:\Program Files\Common**. Valid only for Windows XP (which is not supported).
**%CSIDL_PROGRAM_FILES_COMMONX86%** The folder for 32-bit components that are shared across applications (even if you are using 64-bit Window). Valid only for Windows XP (which is not supported).
**%CSIDL_COMMON_APPDATA%** The file system directory containing application data for all users. A typical path is C:\ProgramData\
**%CSIDL_2BS_APPDATA%** This is the same as **%SYNCBACKFOLDER%** and **%CSIDL_2BS_LOCAL_APPDATA%**
**%CSIDL_2BS_LOCAL_APPDATA%** This is the same as **%SYNCBACKFOLDER%** and **%CSIDL_2BS_APPDATA%**
**%CSIDL_2BS_ROAM_APPDATA%** The **default** roaming (not local) folder that SyncBackPro would store it’s profiles. This is not necessarily where the user has decided to store the profiles.
**%CSIDL_2BS_APPDATA_PROFILESBACKUP%** This is the same as **%SYNCBACKBACKUPFOLDER%** and **%CSIDL_2BS_LOCAL_APPDATA_PROFILESBACKUP%**
**%CSIDL_2BS_LOCAL_APPDATA_PROFILESBACKUP%** This is the same as **%SYNCBACKBACKUPFOLDER%** and **%CSIDL_2BS_APPDATA_PROFILESBACKUP%**
**%CSIDL_2BS_ROAM_APPDATA_PROFILESBACKUP%** The **default** roaming (not local) folder that SyncBackPro would store backups of profiles. This is not necessarily where the user has decided to store the profile backups.
The **FOLDERID** variables were introduced in SyncBack V10. They provide access to folders that are not covered by the **CSIDL** variables (above).
**%FOLDERID_ACCOUNTPICTURES%** Account Pictures. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\AccountPictures\. This variable was introduced in V10.
**%FOLDERID_ADMINTOOLS%** Administrative Tools. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools\. This variable was introduced in V10.
**%FOLDERID_APPDATADESKTOP%** Application Data Desktop. A typical path is C:\Users\[username]\AppData\Local\Desktop\. This variable was introduced in V10.
**%FOLDERID_APPDATADOCUMENTS%** Application Data Documents. A typical path is C:\Users\[username]\AppData\Local\Documents\. This variable was introduced in V10.
**%FOLDERID_APPDATAFAVORITES%** Application Data Favorites. A typical path is C:\Users\[username]\AppData\Local\Favorites\. This variable was introduced in V10.
**%FOLDERID_APPDATAPROGRAMDATA%** Application Data Program Data. A typical path is C:\Users\[username]\AppData\Local\ProgramData\. This variable was introduced in V10.
**%FOLDERID_APPLICATIONSHORTCUTS%** Application Shortcuts. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\Application Shortcuts\. This variable was introduced in V10.
**%FOLDERID_CAMERAROLL%** Camera Roll. A typical path is C:\Users\[username]\Pictures\Camera Roll\. This variable was introduced in V10.
**%FOLDERID_CONTACTS%** Contacts. A typical path is C:\Users\[username]\Contacts\. This variable was introduced in V10.
**%FOLDERID_DEVICEMETADATASTORE%** Device Metadata Store. A typical path is C:\ProgramData\Microsoft\Windows\DeviceMetadataStore\. This variable was introduced in V10.
**%FOLDERID_DOCUMENTSLIBRARY%** Documents. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Libraries\Documents.library-ms\. This variable was introduced in V10.
**%FOLDERID_DOWNLOADS%** Downloads. A typical path is C:\Users\[username]\Downloads\. This variable was introduced in V10.
**%FOLDERID_GAMETASKS%** Game Explorer. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\GameExplorer\. This variable was introduced in V10.
**%FOLDERID_IMPLICITAPPSHORTCUTS%** Implicit Application Shortcuts. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\ImplicitAppShortcuts\. This variable was introduced in V10.
**%FOLDERID_LIBRARIES%** Libraries. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Libraries\. This variable was introduced in V10.
**%FOLDERID_LINKS%** Links. A typical path is C:\Users\[username]\Links\. This variable was introduced in V10.
**%FOLDERID_LOCALAPPDATALOW%** Local Application Data (Low). A typical path is C:\Users\[username]\AppData\LocalLow\. This variable was introduced in V10.
**%FOLDERID_MUSICLIBRARY%** Music. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Libraries\Music.library-ms\. This variable was introduced in V10.
**%FOLDERID_OBJECTS3D%** 3D Objects. A typical path is C:\Users\[username]\3D Objects\. This variable was introduced in V10.
**%FOLDERID_ORIGINALIMAGES%** Original Images. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows Photo Gallery\Original Images\. This variable was introduced in V10.
**%FOLDERID_PHOTOALBUMS%** Slide Shows. A typical path is C:\Users\[username]\Pictures\Slide Shows\. This variable was introduced in V10.
**%FOLDERID_PICTURESLIBRARY%** Pictures. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Libraries\Pictures.library-ms\. This variable was introduced in V10.
**%FOLDERID_PLAYLISTS%** Playlists. A typical path is C:\Users\[username]\Music\Playlists\. This variable was introduced in V10.
**%FOLDERID_PUBLIC%** Public. A typical path is C:\Users\Public\. This variable was introduced in V10.
**%FOLDERID_PUBLICDOWNLOADS%** Public Downloads. A typical path is C:\Users\Public\Downloads\. This variable was introduced in V10.
**%FOLDERID_PUBLICGAMETASKS%** Game Explorer. A typical path is C:\ProgramData\Microsoft\Windows\GameExplorer\. This variable was introduced in V10.
**%FOLDERID_PUBLICLIBRARIES%** Libraries. A typical path is C:\Users\Public\Libraries\. This variable was introduced in V10.
**%FOLDERID_PUBLICRINGTONES%** Ringtones. This variable was introduced in V10.
**%FOLDERID_PUBLICUSERTILES%** Public Account Pictures. A typical path is C:\Users\Public\AccountPictures\. This variable was introduced in V10.
**%FOLDERID_QUICKLAUNCH%** Quick Launch. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\. This variable was introduced in V10.
**%FOLDERID_RECORDEDTVLIBRARY%** Recorded TV. A typical path is C:\Users\Public\Libraries\RecordedTV.library-ms\. This variable was introduced in V10.
**%FOLDERID_RINGTONES%** Ringtones. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\Ringtones\. This variable was introduced in V10.
**%FOLDERID_ROAMEDTILEIMAGES%** Roamed Tile Images. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\RoamedTileImages\. This variable was introduced in V10.
**%FOLDERID_ROAMINGTILES%** Roaming Tiles. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\RoamingTiles\. This variable was introduced in V10.
**%FOLDERID_SAMPLEMUSIC%** Sample Music. A typical path is C:\Users\Public\Music\Sample Music\. This variable was introduced in V10.
**%FOLDERID_SAMPLEPICTURES%** Sample Pictures. A typical path is C:\Users\Public\Pictures\Sample Pictures\. This variable was introduced in V10.
**%FOLDERID_SAMPLEVIDEOS%** Sample Videos. A typical path is C:\Users\Public\Videos\Sample Videos\. This variable was introduced in V10.
**%FOLDERID_SAVEDGAMES%** Saved Games. A typical path is C:\Users\[username]\Saved Games\. This variable was introduced in V10.
**%FOLDERID_SAVEDPICTURES%** Saved Pictures. This variable was introduced in V10.
**%FOLDERID_SAVEDPICTURESLIBRARY%** Saved Pictures Library. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Libraries\SavedPictures.library-ms\. This variable was introduced in V10.
**%FOLDERID_SAVEDSEARCHES%** Searches. A typical path is C:\Users\[username]\Searches\. This variable was introduced in V10.
**%FOLDERID_SCREENSHOTS%** Screenshots. A typical path is C:\Users\[username]\Pictures\Screenshots\. This variable was introduced in V10.
**%FOLDERID_SEARCHHISTORY%** History. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\ConnectedSearch\History\. This variable was introduced in V10.
**%FOLDERID_SEARCHTEMPLATES%** Templates. A typical path is C:\Users\[username]\AppData\Local\Microsoft\Windows\ConnectedSearch\Templates\. This variable was introduced in V10.
**%FOLDERID_SKYDRIVE%** OneDrive. A typical path is C:\Users\[username]\OneDrive\. This variable was introduced in V10.
**%FOLDERID_SKYDRIVECAMERAROLL%** Camera Roll (on OneDrive). A typical path is C:\Users\[username]\OneDrive\Pictures\Camera Roll\. This variable was introduced in V10.
**%FOLDERID_SKYDRIVEDOCUMENTS%** Documents (on OneDrive). A typical path is C:\Users\[username]\OneDrive\Documents\. This variable was introduced in V10.
**%FOLDERID_SKYDRIVEPICTURES%** Pictures (on OneDrive). A typical path is C:\Users\[username]\OneDrive\Pictures\. This variable was introduced in V10.
**%FOLDERID_USERPINNED%** User Pinned. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\. This variable was introduced in V10.
**%FOLDERID_USERPROFILES%** Users. A typical path is C:\Users\. This variable was introduced in V10.
**%FOLDERID_USERPROGRAMFILES%** Programs. A typical path is C:\Users\[username]\AppData\Local\Programs\. This variable was introduced in V10.
**%FOLDERID_USERPROGRAMFILESCOMMON%** Programs. A typical path is C:\Users\[username]\AppData\Local\Programs\Common\. This variable was introduced in V10.
**%FOLDERID_VIDEOSLIBRARY%** Videos. A typical path is C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Libraries\Videos.library-ms\. This variable was introduced in V10.
### Misc.
**%SBVERSION%** The complete version number of the SyncBackPro program itself, e.g. 11.0.3.0
**%SBLATESTVERSION%** The complete version number of the latest version of SyncBackPro, e.g. 11.1.7.0. This is the latest version of the major version you are using. For example, if you are using V10, and V11 is available, this is only going to give the latest version number of V10 and not V11. Use **%SBLATESTMAJORVERSION%** to get the very latest version number regardless of which major version of the software you are using. **IMPORTANT:** This will check online what the latest version number is so an Internet connection is required, and this is only done when SyncBackPro is being used **interactively**. The latest version number is cached and not updated more than once every 30 minutes. No online check is made during an unattended run, i.e. a scheduled run or a run started from the command line. In that case only the value already cached in that run is used, and because an unattended run is a new process the cache is normally empty, so this variable is normally set to an empty string in an unattended run. It is therefore only useful in profiles that are run interactively. If you need the check to be made in a scheduled or otherwise unattended profile then use **%SBLATESTVERSIONONLINE%** instead.
**%SBNEWVERSION%** Returns **Y** if a newer version of the major version of SyncBackPro you are currently using is available for download, else returns **N**. This only checks the latest version of the major version you are using. For example, if you are using V10, and V11 is available, but there is not a newer version of V10, then this will return **N**. **IMPORTANT:** This will check online what the latest version number is so an Internet connection is required, and this is only done when SyncBackPro is being used interactively. An update check is not performed more than once every 30 minutes. No online check is made during an unattended run, i.e. a scheduled run or a run started from the command line. In that case only the value already cached in that run is used, and because an unattended run is a new process the cache is normally empty, so this variable normally returns **N** in an unattended run. It is therefore only useful in profiles that are run interactively. If you need the check to be made in a scheduled or otherwise unattended profile then use **%SBNEWVERSIONONLINE%** instead.
**%SBLATESTMAJORVERSION%** The complete version number of the latest major version of SyncBackPro, e.g. 12.1.7.0. If you are using the current major release then this will be the same as **%SBLATESTVERSION%**. Unlike **%SBLATESTVERSION%** this variable does not care which major version you are currently using. **IMPORTANT:** This will check online what the latest version number is so an Internet connection is required, and this is only done when SyncBackPro is being used interactively. The latest version number is cached and not updated more than once every 30 minutes. No online check is made during an unattended run, i.e. a scheduled run or a run started from the command line. In that case only the value already cached in that run is used, and because an unattended run is a new process the cache is normally empty, so this variable is normally set to an empty string in an unattended run. It is therefore only useful in profiles that are run interactively. If you need the check to be made in a scheduled or otherwise unattended profile then use **%SBLATESTMAJORVERSIONONLINE%** instead.
**%SBNEWMAJORVERSION%** Returns **Y** if a major new version of SyncBackPro is available for download, else returns **N**. For example, if you are using V11 and V12 is available, then this will be set to **Y**. **IMPORTANT:** This will check online what the latest version number is so an Internet connection is required, and this is only done when SyncBackPro is being used interactively. An update check is not performed more than once every 30 minutes. No online check is made during an unattended run, i.e. a scheduled run or a run started from the command line. In that case only the value already cached in that run is used, and because an unattended run is a new process the cache is normally empty, so this variable normally returns **N** in an unattended run. It is therefore only useful in profiles that are run interactively. If you need the check to be made in a scheduled or otherwise unattended profile then use **%SBNEWMAJORVERSIONONLINE%** instead.
**%SBLATESTVERSIONONLINE%** Identical to **%SBLATESTVERSION%**, except that the online check is also made during a scheduled or otherwise unattended run. **IMPORTANT:** Using this variable means SyncBackPro will contact the 2BrightSparks web server during that run to retrieve the version file, which is why it exists as a variable separate from **%SBLATESTVERSION%**. Nothing about you or your computer is sent. The latest version number is cached and not updated more than once every 30 minutes.
**%SBNEWVERSIONONLINE%** Identical to **%SBNEWVERSION%**, except that the online check is also made during a scheduled or otherwise unattended run. **IMPORTANT:** Using this variable means SyncBackPro will contact the 2BrightSparks web server during that run to retrieve the version file, which is why it exists as a variable separate from **%SBNEWVERSION%**. Nothing about you or your computer is sent. An update check is not performed more than once every 30 minutes.
**%SBLATESTMAJORVERSIONONLINE%** Identical to **%SBLATESTMAJORVERSION%**, except that the online check is also made during a scheduled or otherwise unattended run. **IMPORTANT:** Using this variable means SyncBackPro will contact the 2BrightSparks web server during that run to retrieve the version file, which is why it exists as a variable separate from **%SBLATESTMAJORVERSION%**. Nothing about you or your computer is sent. The latest version number is cached and not updated more than once every 30 minutes.
**%SBNEWMAJORVERSIONONLINE%** Identical to **%SBNEWMAJORVERSION%**, except that the online check is also made during a scheduled or otherwise unattended run. **IMPORTANT:** Using this variable means SyncBackPro will contact the 2BrightSparks web server during that run to retrieve the version file, which is why it exists as a variable separate from **%SBNEWMAJORVERSION%**. Nothing about you or your computer is sent. An update check is not performed more than once every 30 minutes.
**%PROFILENAME%** The profile name. This can be used in the source/left and/or destination/right path.
**%GROUPNAME%** The group name. This can be used in the source/left and/or destination/right path. If the profile is not being run as part of a group then the value returned is an empty string. See also [%VISUALGROUPNAME%](Variables.md#visualgroupname)
**%ISINTEGRITYCHECK%** If the current profile run is a file integrity check run, then **Y** is returned, else **N.** This variable is new to V8.
**%CONTAINERMOUNT%** If a [VHD/X file](SyncBackContainer.md) is being used, then this is the path where the container is mounted. This is typically used in the source or destination path. This variable is new to V8.
**%CRLF%** Replaced with ASCII 13 (Carriage Return) and ASCII 10 (Line Feed). This is used to end a line and start a new one in Windows. This variable name is case-sensitive, so you cannot use **%crlf%**, for example. This variable is new to V9.3.7.0.
**%CR%** Replaced with ASCII 13 (Carriage Return). This variable name is case-sensitive. This variable is new to V9.3.7.0.
**%LF%** Replaced with ASCII 10 (Line Feed). This variable name is case-sensitive. This variable is new to V9.3.7.0.
### Backup email
Some special variables can be used in the EML filename and sub-folder when performing a backup of email (Pro version only).
**%EMAIL_ID%** Unique email message ID. The format is decided by the email server. Note that this value can be empty so you may wish to use **EMAIL_IDORMD5** instead.
**%EMAIL_MD5%** The MD5 hash value of the email header.
**%EMAIL_IDORMD5%** If the email has a message ID, then it is the message ID, otherwise it is the MD5 hash value of the header.
**%EMAIL_UIDL%** MD5 hash value of unique email ID, also called the UIDL. Note that it is unique for the email folder it is in. For POP3 this is **ENVSPECIAL_S_EMAIL_IDORMD5** as POP3 does not have unique UIDL values for emails.
**%EMAIL_SUBJECT%** Email subject. Note that the subject can be very long, so it is recommended that you let SyncBackPro truncate it by using **%EMAIL_SUBJECT32%** or **%EMAIL_SUBJECT64%**
**%EMAIL_SUBJECT32%** The first 32 characters of the email subject.
**%EMAIL_SUBJECT64%** The first 64 characters of the email subject.
**%EMAIL_SIZE%** Size of email in bytes. This is not the size of the EML file.
**%EMAIL_DATE%** Date email sent. The format used is the short date format set in Windows.
**%EMAIL_TIME%** Time email sent. The format used is the long time format set in Windows.
**%EMAIL_DATEYEAR%** Date email sent (year).
**%EMAIL_DATEMONTH%** Date email sent (month). This is always two digits, e.g. 03 for April.
**%EMAIL_DATEDAY%** Date email sent (day). This is always two digits, e.g. 05 for the 5th day of the month.
**%EMAIL_DATEHOUR%** Date email sent (hour) in 24-hour format. This is always two digits, e.g. 09 for 9am.
**%EMAIL_DATEMIN%** Date email sent (minute). This is always two digits, e.g. 05 for 5 minutes past the hour.
**%EMAIL_DATESEC%** Date email sent (second). This is always two digits, e.g. 03 for 3 seconds past the minute.
**%EMAIL_FROMNAME%** From friendly name. If there is no sender's friendly name then the email address is returned (as per **%EMAIL_FROMADDRESS%**).
**%EMAIL_FROMADDRESS%** From email address.
**%EMAIL_REPLYTO%** Email address to reply to.
**%EMAIL_FIRSTTONAME%** To friendly name (of first recipient). Note that an email can be sent to more than one person, so this refers to the first person in the To list. If there is no friendly name then the email address is returned (as per **%EMAIL_FIRSTTOADDRESS%**).
**%EMAIL_FIRSTTOADDRESS%** To email address (of first recipient). Note that an email can be sent to more than one email address, so this refers to the first email address in the To list.
**%EMAIL_IMAPFOLDER%** The name of the IMAP4/Exchange folder the email is being retrieved from. Note that this will be an empty string if POP3 is being used. The value is modified to ensure it is a valid Windows file/folder name. This means it can be used in the EML filename and sub-folder settings. Starting with SyncBackPro V7 you can backup multiple email folders in the same profile, so this value may change during the profile run.
**%EMAIL_DATESTAMP%** The date and time the email was received (or sent, if there is no received date), formatted as a sortable timestamp: **yyyy-mm-dd hhmmss**, e.g. 2026-08-11 133220. The time is in 24-hour format. Use this variable instead of combining the individual date and time variables when you want the email files to be listed in date order when sorted by filename. Introduced in V12.0.20.0.
**%EMAIL_FROMDOMAIN%** The domain part of the sender's email address, i.e. everything after the @ symbol. For example, if the sender is hello@example.com then this variable is **example.com**. This makes it easy to group backed up emails by the organization that sent them. If the email has no sender address, e.g. a draft email, then this variable is empty. Introduced in V12.0.20.0.
### Emailing the log and late setting variables
There are a number of special variables that cannot be used in the source or destination settings, for example, because their value is not set until the profile is run (or at some later stage during the profile run). Some variables values are not set until near the end of a profile run. Because of this they can only be used correct in certain settings, e.g. the [email body](EmailAdvanced.md).
**%_SOURCE%** The source/left path. This is the raw unexpanded value, which is then expanded at time of evaluation. A better alternative is to use **%ACTUALSOURCE%**.
**%ACTUALSOURCE%** The actual expanded source/left path. Note that if you are doing a restore then this will be your profiles destination path.
**%_DESTINATION%** The destination/right path. This is the raw unexpanded value, which is then expanded at time of evaluation. A better alternative is to use **%ACTUALDEST%**.
**%ACTUALDEST%** The actual expanded destination/right path. Note that if you are doing a restore then this will be your profiles source path.
**%LOGFILENAME%** Filename of first page of latest log file. This is not set until the log file is closed, so it can only be used in [Run After](ProgramsAfter.md) when the profile has been [configured](ProgramsAfter.md#afterlogclosed) to run the 'after' program after the log file has been closed.
**%SNAPSOURCE%** If a shadow volume is being used to copy locked files from the source/left then this is the path of that shadow volume.
**%SNAPDEST%** If a shadow volume is being used to copy locked files from the destination/right then this is the path of that shadow volume.
**%VISUALGROUPNAME%** If the profile is part of a group, and it is run on its own from the main user interface (not necessarily as part of the group), then this is the name of the group. It is different from [%GROUPNAME%](Variables.md#groupname) because that value is only set if it is run as part of a group.
**%ISFULLBACKUP%** If this is a full-backup, i.e. a rescan is being done of the destination, then this is Y, else N
**%ISUNATTENDED%** If this is an unattended profile run then Y is returned, else N
**%ISRESTORE%** If this is a restore then Y is returned, else N
**%ISSIMULATION%** If this is a simulated run then Y is returned, else N
**%RUNRESULT%** A textual description of the result of the profile run, e.g. Success, Failure, Aborted, Timelimit Reached, etc.
**%PROFILEFAILED%** If the profile run was a success then 0 is returned, else 1 is returned on error/abort (this is the same variable that can be used in **Run After**).
**%ATTACHMENTSTOTAL%** The total number of attachments for the email.
**%CRITICALERROR%** If there was a critical error then this is the error message, otherwise it is an empty string.
**%DELETEDTOTAL%** The total number of files that were deleted.
**%SKIPPEDTOTAL%** The total number of files that were skipped, e.g. only in the destination and the profile was configured to ignore files that are only in the destination.
**%COPIEDTOTAL%** The total number of files that were copied.
**%MOVEDTOTAL%** The total number of files that were moved.
**%DATECHANGEDTOTAL%** The total number of files whose last modification date & time were copied.
**%ATTRIBCHANGEDTOTAL%** The total number of files whose attributes were copied.
**%SECURITYCHANGEDTOTAL%** The total number of files and folders whose security was changed.
**%RUNBEFOREERROR%** If the Run Before program failed (e.g. because it doesn't exist, or couldn't be started) then this is the error message.
**%RUNAFTERERROR%** If the Run After program failed (e.g. because it doesn't exist, or couldn't be started) then this is the error message.
**%COPYERRORSTOTAL%** The total number of file copy/delete errors.
**%COMPRESSERRORSTOTAL%** The total number of errors related to compression.
**%NONCRITICALERRORSTOTAL%** The total number of non-critical errors. Starting with V9, this always returns 0. Use **%WARNINGSTOTAL%** instead.
**%WARNINGSTOTAL%** The total number of warnings.
**%STARTTIME%** The date & time the profile was ready to run. If the profile was started as a part of a group then the date & time returned by this variable is not necessarily the date & time the profile actually started (for that see **%STARTTIME2%**). When a group (that is set to run profiles serially and not in parallel) is run SyncBackPro prepares all the profiles in the group so they can be started immediately once the proceeding profile has finished. So the %STARTTIME% value is the date & time when the profile was prepared but not necessarily started. To get the date & time when the profile was actually started use the variable **%STARTTIME2%**. If the profile is not part of a group then the time returned by %STARTTIME% and %STARTTIME2% will be almost identical. To get the date & time when the group was started (if the profile was run as part of a group) use the variable **%GROUPSTARTTIME%**. If you ran a group with just one profile in it then the times returned by %STARTTIME%, %STARTTIME2%, and %GROUPSTARTTIME% would be almost identical.
**%STARTTIME2%** The date & time the profile actually started to run. See **%STARTTIME%** for an explanation of the differences between that variable and this.
**%GROUPSTARTTIME%** The date & time when the (root) group started. If the profile is not part of a group then an empty string is returned. You can have groups within groups, so this is the date & time when the root group started. To get the date & time when the profile started see **%STARTTIME%** and **%STARTTIME2%**. See **%STARTTIME%** for an explanation of the differences between the three start time variables.
**%ENDTIME%** The date & time the profile completed.
**%TOTALTIME%** The amount of time between **%STARTTIME%** and **%ENDTIME%**, e.g. 5 hours 15 mins. 30 secs. This value isn't set until just before the log file is closed.
**%TOTALTIME2%** The amount of time between **%STARTTIME2%** and **%ENDTIME%**. This value isn't set until just before the log file is closed.
**%STARTSCANTIME%** The date & time the scan for changes started.
**%ENDSCANTIME%** The date & time the scan for changed ended.
**%TOTALSCANTIME%** The amount of time between **%STARTSCANTIME%** and **%ENDSCANTIME%**, e.g. 3 mins. 2 secs.
**%TOTALPAUSETIME%** Total time (in seconds) the profile was paused. The variable is not set until just before the log file is created.
**%BYTESCOPIED%** The total number of bytes that were copied. See also **%KBYTESCOPIED%** and **%MBYTESCOPIED%**.
**%KBYTESCOPIED%** The total number of kilobytes that were copied. This is a whole (integer) number that is rounded up or down as appropriate.
**%MBYTESCOPIED%** The total number of megabytes that were copied. This is a whole (integer) number that is rounded up or down as appropriate.
**%BYTESDELETED%** The total number of bytes that were deleted. See also **%KBYTESDELETED%** and **%MBYTESDELETED%**.
**%KBYTESDELETED%** The total number of kilobytes that were deleted. This is a whole (integer) number that is rounded up or down as appropriate.
**%MBYTESDELETED%** The total number of megabytes that were deleted. This is a whole (integer) number that is rounded up or down as appropriate.
**%BYTESREPLACED%** The total number of bytes that were replaced/overwritten. See also **%KBYTESREPLACED%** and **%MBYTESREPLACED%**.
**%KBYTESREPLACED%** The total number of kilobytes that were replaced/overwritten. This is a whole (integer) number that is rounded up or down as appropriate.
**%MBYTESREPLACED%** The total number of megabytes that were replaced/overwritten. This is a whole (integer) number that is rounded up or down as appropriate.
**%COMPAREFILES%** The total number of unique files that SyncBack has found (source/left and destination/right combined). This excludes filtered out files and other files not included based on the profile settings. If a file is in both the source and destination then it only counts as one file. For example, if there are 3 files in the source/left and 2 files in the destination/right (which are the same as the source files) then %COMPAREFILES% will be 3. An alternative way to think of this is that it's the number of files shown in the [Differences](TheDifferencesWindow.md) window (with no display filtering).
**%COMPAREDIRS%** The total number of unique directories that SyncBack has found (source/left and destination/right combined). This excludes filtered out directories and other directories not included based on the profile settings. Note that the base directory itself counts as a directory, so the value will be 1 at a minimum. If a directory is in both the source/left and destination/right then it only counts as one directory. For example, if there are 3 directories in the source/left and 2 directories in the destination/right (which are the same as the source/left directories) then %COMPAREDIRS% will be 4 (the base directory plus the 3 unique directories).
**%COMPARECHANGEDTOTAL%** The total number of files that have changed.
**%COMPAREHASHCHANGEDTOTAL%** The total number of files which have different hash values.
**%COMPAREDESTONLYTOTAL%** The total number of files in the destination only.
**%COMPARESOURCEONLYTOTAL%** The total number of files in the source only.
**%COMPAREBOTHTOTAL%** The total number of files in both the source and destination.
**%COMPAREDATETIMETOTAL%** The total number of files whose last modification date & time is different.
**%COMPARECREATEDATETIMETOTAL%** The total number of files whose creation modification date & time is different.
**%COMPAREACCESSDATETIMETOTAL%** The total number of files whose last access date & time is different. This variable was introduced in V10.
**%COMPARENTFSSECURITYTOTAL%** The total number of files NTFS file security is different.
**%COMPARESIZETOTAL%** The total number of files whose size is different.
**%COMPAREATTRIBTOTAL%** The total number of files whose attributes are different.
**%COMPARECASETOTAL%** The total number of files whose filename case are different, e.g. the source file is called **ABC** and the destination file is called **abc**.
**%COMPAREHASHERRORTOTAL%** The total number of files whose hash value could not be calculated to compare them.
**%TOSKIPCNT%** The number of files that are going to be skipped.
**%TOPROMPTCNT%** The number of files where the user will be prompted on the action to take.
**%TODELETESRCCNT%** The total number of files that are to be deleted from the source/left. Files that are to be moved to the destination/right do not count.
**%TODELETESRCONLYCNT%** The total number of files that are to be deleted from the source/left that are only on the source/left. Files that are to be moved to the destination/right do not count. This is different from **%TODELETESRCCNT%** because it does not include files that are both in the source/left and destination/right.
**%TODELETEDESTCNT%** The total number of files that are to be deleted from the destination/right. Files that are to be moved to the source/left do not count.
**%TODELETEDESTONLYCNT%** The total number of files that are to be deleted from the destination/right that are only on the destination/right. Files that are to be moved to the source/left do not count. This is different from **%TODELETEDESTCNT%** because it does not include files that are both in the source/left and destination/right.
**%TODELETEBOTHCNT%** The total number of files that are to be deleted from both the source/left and destination/right. Files that are to be moved do not count.
**%TOCOPYTODESTCNT%** The number of files to be copied to the destination/right.
**%TOCOPYTOSRCCNT%** The number of files to be copied to the source/left.
**%TOMOVETODESTCNT%** The number of files to be moved to the destination/right.
**%TOMOVETOSRCCNT%** The number of files to be moved to the source/left.
**%TOREPLACEDESTCNT%** The number of files to be replaced on the destination/right. This variable is new to V8.
**%TOREPLACESRCCNT%** The number of files to be replaced on the source/left. This variable is new to V8.
**%TOCHANGESRCATTRIBSCNT%** The number of files in the source/left that will have their attributes/date & time changed.
**%TOCHANGEDESTATTRIBSCNT%** The number of files in the destination/right that will have their attributes/date & time changed.
**%TORENAMESRCCNT%** The number of files in the source/left that will be renamed.
**%TORENAMEDESTCNT%** The number of files in the destination/right that will be renamed.
**%BYTESCOPYTOSRC%** The total number of bytes to be copied (includes moved files) to the source/left.
**%KBYTESCOPYTOSRC%** The total number of kilobytes to be copied (includes moved files) to the source/left. This is a whole (integer) number that is rounded up or down as appropriate.
**%MBYTESCOPYTOSRC%** The total number of megabytes to be copied (includes moved files) to the source/left. This is a whole (integer) number that is rounded up or down as appropriate.
**%BYTESCOPYTODEST%** The total number of bytes to be copied (includes moved files) to the destination/right.
**%KBYTESCOPYTODEST%** The total number of kilobytes to be copied (includes moved files) to the destination/right. This is a whole (integer) number that is rounded up or down as appropriate.
**%MBYTESCOPYTODEST%** The total number of megabytes to be copied (includes moved files) to the destination/right. This is a whole (integer) number that is rounded up or down as appropriate.
**%BYTESDELETEFROMSRC%** The total number of bytes to be deleted (includes moved files) from the source/left.
**%KBYTESDELETEFROMSRC%** The total number of kilobytes to be deleted (includes moved files) from the source/left. This is a whole (integer) number that is rounded up or down as appropriate.
**%MBYTESDELETEFROMSRC%** The total number of megabytes to be deleted (includes moved files) from the source/left. This is a whole (integer) number that is rounded up or down as appropriate.
**%BYTESDELETEFROMDEST%** The total number of bytes to be deleted (includes moved files) from the destination/right.
**%KBYTESDELETEFROMDEST%** The total number of bytes to be deleted (includes moved files) from the destination/right. This is a whole (integer) number that is rounded up or down as appropriate.
**%MBYTESDELETEFROMDEST%** The total number of bytes to be deleted (includes moved files) from the destination/right. This is a whole (integer) number that is rounded up or down as appropriate.
**%PAGE%** Used only in log filename.
**%COMPAREDIRSCHANGEDTOTAL%** The number of directories that have been changed.
**%COMPAREDIRSDESTONLYTOTAL%** The number of directories that are only in the destination.
**%COMPAREDIRSSOURCEONLYTOTAL%** The number of directories that are only in the source.
**%FTPCONNECTCNT%** The number of (re)connections made to the FTP server.
**%VERSIONSRESTOREDTOTAL%** The total number of versions restored.
**%VERSIONSCREATEDTOTAL%** The total number of versions created. This variable was introduced with V10.
**%VERSIONSCREATEDSRC%** The total number of versions created in the source. This variable was introduced with V10.
**%VERSIONSCREATEDDEST%** The total number of versions created in the destination. This variable was introduced with V10.
**%COMPAREUNCHANGEDTOTAL%** The total number of unchanged files
**%TORESTOREVERSRCCNT%** The total number of versions files to be restored on the source/left
**%TORESTOREVERDESTCNT%** The total number of versions files to be restored on the destination/right
**%FREEBYTESSOURCEBEFORE%** The number of free bytes on the source/left before the profile started copying, moving, and deleting files
**%FREEKBYTESSOURCEBEFORE%** The number of free kilobytes on the source/left before the profile started copying, moving, and deleting files. This is a whole (integer) number that is rounded up or down as appropriate.
**%FREEMBYTESSOURCEBEFORE%** The number of free megabytes on the source/left before the profile started copying, moving, and deleting files. This is a whole (integer) number that is rounded up or down as appropriate.
**%FREEBYTESDESTBEFORE%** The number of free bytes on the destination/right before the profile started copying, moving, and deleting files
**%FREEKBYTESDESTBEFORE%** The number of free kilobytes on the destination/right before the profile started copying, moving, and deleting files. This is a whole (integer) number that is rounded up or down as appropriate.
**%FREEMBYTESDESTBEFORE%** The number of free megabytes on the destination/right before the profile started copying, moving, and deleting files. This is a whole (integer) number that is rounded up or down as appropriate.
**%SOURCESIZEBYTES%** The total size (in bytes) of files that SyncBack has found in the source/left. This excludes filtered out files and other files not included based on the profile settings.
**%DESTSIZEBYTES%** The total size (in bytes) of files that SyncBack has found in the destination/right. This excludes filtered out files and other files not included based on the profile settings.
**%HARDLINKCREATEDSRC%** The number of hard links created in the source. This is when you have configured the profile to [preserve hard links](CopyDeleteLinks.md#hardlink). This variable was introduced with V11.
**%HARDLINKCREATEDDEST%** The number of hard links created in the destination. This is when you have configured the profile to [preserve hard links](CopyDeleteLinks.md#hardlink). This variable was introduced with V11.
**%SYMLINKCREATEDSRC%** The number of file symbolic links created in the source. This is when you have configured the profile to [copy symbolic links](CopyDeleteLinks.md). This variable was introduced with V11.
**%SYMLINKCREATEDDEST%** The number of file symbolic links created in the destination. This is when you have configured the profile to [copy symbolic links](CopyDeleteLinks.md). This variable was introduced with V11.
**%COMPAREHARDLINKTOTAL%** The number of hard links that have changed. This is when you have configured the profile to [preserve hard links](CopyDeleteLinks.md#hardlink). This variable was introduced with V11.
**%COMPARESYMLINKTOTAL%** The number of symbolic links (including junction points) that have changed. This is when you have configured the profile to [preserve hard links](CopyDeleteLinks.md#hardlink). This variable was introduced with V11.
**%HTTPDOWNLOAD%** The number of files downloaded using HTTP instead of FTP. This when you have configured [HTTP Download](FTPHTTP.md) with FTP. This variable was introduced with V11.
**%STOREDEXTTOTAL%** The number of files that were stored in the Zip file and not compressed due to their [filename extension](CompressionCompressed.md). This variable was introduced with V11.
**%STOREDCOMPTOTAL%** The number of files that were stored in the Zip file and not compressed because they were considered to [already be compressed](CompressionCompressed.md). This variable was introduced with V11.
**%HIGHCOMPTOTAL%** The number of files that were stored in the Zip file using high compression due to their [filename extension](CompressionHigh.md). This variable was introduced with V12.
**%LOWCOMPTOTAL%%** The number of files that were stored in the Zip file using low compression due to their [filename extension](CompressionLow.md). This variable was introduced with V12.
### Log Variables
There are a number of special variables that can be used that are related to log files. They are constantly being updated as the profile runs. Because of this they should only be used at the end of a profile run, e.g. the [email body](EmailAdvanced.md).
**%LOGERRORSCNT%** The number of errors in the log. This variable was introduced with V12.
**%LOGWARNINGSCNT%** The number of warnings in the log. This variable was introduced with V12.
**%LOGIGNOREDCNT%** The number of files ignored in the log. This variable was introduced with V12.
**%LOGINTEGCNT%** The number of files that passed the integrity check. This variable was introduced with V12.
**%LOGEXCEPTIONSCNT%** The number of exceptions recorded in the log (it will never be more than 10). This variable was introduced with V12.
**%LOGCHANGESCNT%** The number of changed files. This does not include copied (unless a reboot is required), deleted or renamed files (unless a reboot is required). It is the total number of files that need to be copied or renamed after a reboot, their attributes had changed, or a versions was restored. This variable was introduced with V12.
**%LOGCOPIEDCNT%** The number of copied files. This does not include files that require a reboot to be copied. This variable was introduced with V12.
**%LOGDELETEDCNT%** The number of deleted files. This variable was introduced with V12.
**%LOGRENAMEDCNT%** The number of renamed files. This does not include files that require a reboot to be renamed. This variable was introduced with V12.
### Advanced Log Variables
There are a number of special variables that can only be used when [Advanced Logging](AdvancedLogSettings.md) is enabled. These variables were introduced in V12. These variables can be used to send log information to whichever logging system you're using. The output format depends on the variable name (JSON, XML or CSV).
The variables listed below are also available for use with XML and CSV. To use them, replace JSON with XML or CSV depending on which format you require. For example, **%LOGXML_SKIPPEDBOTH%,** **%LOGCSV_COPIED%**, etc.
Because XML does not have a concept of lists, you should wrap XML variable contents when used, e.g. ***%LOGXML_SKIPPEDBOTH%***
**%LOGJSON_SKIPPEDBOTH%** A list of files that were skipped because they are in both the source and destination. For example, with **JSON** it is [{"Filename": "example1", "Status": "example1"},{"Filename": "example2", "Status": "example2"}] and **XML** it is example1status1example2status2 and for **CSV** it is "Filename1","Status1","Filename2","Status2"
**%LOGJSON_SKIPPEDSRCONLY%** A list of files that were skipped because they are only in the source.
**%LOGJSON_SKIPPEDDESTONLY%** A list of files that were skipped because they are only in the destination.
**%LOGJSON_DELETED%** A list of files that were deleted.
**%LOGJSON_COPIED%** A list of files that were copied.
**%LOGJSON_ATTRIBS%** A list of files that had their attributes or date & time changed.
**%LOGJSON_WARNING%** A list of files that have warnings.
**%LOGJSON_ERROR%** A list of files that have errors.
**%LOGJSON_COPIEDREBOOT%** A list of files that required a reboot to be copied.
**%LOGJSON_IGNOREDSRC%** A list of files that were ignored in the source during scanning, e.g. filtered or not selected.
**%LOGJSON_IGNOREDDEST%** A list of files that were ignored in the destination during scanning.
**%LOGJSON_IGNOREDCOMP%** A list of files that were ignored during comparison, e.g. read-only.
**%LOGJSON_UNCHANGED%** A list of unchanged files (Fast Backup only).
**%LOGJSON_VERRESTORED%** A list of files that were restored from a version.
**%LOGJSON_SKIPPEDNEITHER%** A list of files that were skipped because they were neither in the source or destination.
**%LOGJSON_RENAMED%** A list of files/folders that were renamed.
**%LOGJSON_RENAMEDREBOOT%** A list of files that were renamed, but require a reboot to rename them.
**%LOGJSON_INTEGRITYFAILED%** A list of files that failed an integrity check.
**%LOGJSON_INTEGRITYSUCCESS%** A list of files that passed an integrity check.
**%LOGJSON_INTEGRITYERROR%** A list of files that failed an integrity check due to an error.
**%LOGJSON_SKIPPEDIDENTICAL%** A list of files that were skipped because it is in both the source and destination and is considered (due to settings) to be identical.
### Registry
As well as variables, you can also get values from the registry. For example, the following will retrieve the current version of Firefox that is installed:
**%@HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\CurrentVersion%**
To get values from the registry you must use **%@** followed by one of the following (these define which part of the registry to read):
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_PERFORMANCE_DATA
HKEY_CURRENT_CONFIG
HKEY_DYN_DATA
Then specify the path in the registry, e.g. \SOFTWARE\Mozilla\Mozilla Firefox\CurrentVersion, and finally finish with a single percentage sign (**%**). If there is no such value in the registry then the variable is not expanded.
If you are using a 64-bit version of Windows but a 32-bit version of SyncBackPro then it will read from the 32-bit registry by default. To read from the 64-bit registry you must use **%64@**, e.g.
**%64@HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\CurrentVersion%**
If you are a 32-bit version of Windows, and try to read from the 64-bit registry, then it will instead try to get the value from the 32-bit registry (because there is no 64-bit registry on 32-bit versions of Windows). Because of this it is recommend that you always use **%64@** instead of %@ because it will work correctly on both 64-bit and 32-bit versions of Windows.
### SyncBack Touch variables
When using a [SyncBack Touch](SyncBackTouch.md) device you can use some special variables in the path (source or destination, depending on which is using SyncBack Touch). They can only be used in the path and nowhere else. These variables are expanded by SyncBack Touch on the remote device and not locally, so they are only expanded when the profile is run. All the variables start with **SBT_** so it's clear to see if it's a SyncBack Touch variable.
You can also get the value of any environment variable that the remote SyncBack Touch process has access to. To do this simply prefix the remote environment variable with **SBT_ENV_**. For example, to get the PATH environment variable use %SBT_ENV_PATH%. Note that this functionality was introduced in SyncBack Touch V1.3.11 and later.
**%SBT_VERSION%** The version number of the SyncBack Touch software on the device, e.g. 1.0.0.0
**%SBT_COMMON_MUSIC%** The shared music folder on the device running SyncBack Touch. On Windows this is **%CSIDL_COMMON_MUSIC%** (see the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above). On non-Windows operating systems it will be returned as appropriate.
**%SBT_COMMON_PICTURES%** The shared pictures folder on the device running SyncBack Touch. On Windows this is **%CSIDL_COMMON_PICTURES%** (see the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above). On non-Windows operating systems it will be returned as appropriate.
**%SBT_COMMON_VIDEO%** The shared videos folder on the device running SyncBack Touch. On Windows this is **%CSIDL_COMMON_VIDEO%** (see the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above). On non-Windows operating systems it will be returned as appropriate.
**%SBT_COMMON_APPDATA%** The shared application data folder on the device running SyncBack Touch. On Windows this is **%CSIDL_COMMON_APPDATA%** (see the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above). On non-Windows operating systems it will be returned as appropriate.
**%SBT_MYMUSIC%** The personal music folder of the user account running SyncBack Touch. On Windows this is **%CSIDL_MYMUSIC%** (see the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above). On non-Windows operating systems it will be returned as appropriate.
**%SBT_MYVIDEO%** The personal video folder of the user account running SyncBack Touch. On Windows this is **%CSIDL_MYVIDEO%** (see the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above). On non-Windows operating systems it will be returned as appropriate.
**%SBT_MYPICTURES%** The personal pictures folder of the user account running SyncBack Touch. On Windows this is **%CSIDL_MYPICTURES%** (see the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above). On non-Windows operating systems it will be returned as appropriate.
**%SBT_LOCAL_APPDATA%** The personal application data folder of the user account running SyncBack Touch. On Windows this is **%CSIDL_LOCAL_APPDATA%** (see the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above). On non-Windows operating systems it will be returned as appropriate.
**%SBT_DESKTOP%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_DESKTOP%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_PROGRAMS%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_PROGRAMS%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_PERSONAL%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_PERSONAL%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_FAVORITES%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_FAVORITES%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_STARTUP%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_STARTUP%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_RECENT%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_RECENT%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_SENDTO%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_SENDTO%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_STARTMENU%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_STARTMENU%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_DESKTOPDIRECTORY%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_DESKTOPDIRECTORY%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_NETHOOD%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_NETHOOD%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_FONTS%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_FONTS%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_TEMPLATES%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_TEMPLATES%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_COMMON_STARTMENU%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_COMMON_STARTMENU%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_COMMON_PROGRAMS%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_COMMON_PROGRAMS%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_COMMON_STARTUP%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_COMMON_STARTUP%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_COMMON_DESKTOPDIRECTORY%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_COMMON_DESKTOPDIRECTORY%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_APPDATA%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_APPDATA%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_PRINTHOOD%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_PRINTHOOD%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_ALTSTARTUP%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_ALTSTARTUP%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_COMMON_ALTSTARTUP%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_COMMON_ALTSTARTUP%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_COMMON_FAVORITES%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_COMMON_FAVORITES%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_INTERNET_CACHE%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_INTERNET_CACHE%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_COOKIES%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_COOKIES%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_HISTORY%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_HISTORY%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_PROFILE%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_PROFILE%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_CDBURN_AREA%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_CDBURN_AREA%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_WINDOWS%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_WINDOWS%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_PROGRAM_FILES%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_PROGRAM_FILES%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_PROGRAM_FILESX86%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_PROGRAM_FILESX86%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_PROGRAM_FILES_COMMON%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_PROGRAM_FILES_COMMON%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_PROGRAM_FILES_COMMONX86%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_PROGRAM_FILES_COMMONX86%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_SYSTEM%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_SYSTEM%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_SYSTEMX86%** If the SyncBack Touch device is running on Windows then this is **%CSIDL_SYSTEMX86%**. See the [Drives, Files, and Folders](Variables.md#drivesfilesfolders) section above. For other device types, e.g. macOS, then this variable is invalid and will not be expanded.
**%SBT_EXTSDCARD%** If the SyncBack Touch device is running on Android then this is the path to **external** storage, if available. Usually the **internal** storage is (confusingly) \sdcard\. This could be an external SD card or external USB storage. If you have both an external SD and external USB storage, it is undefined which variable (**%SBT_EXTSDCARD%** or **%SBT_EXTSDCARD2%**) points to which external storage.
**%SBT_EXTSDCARD2%** If the SyncBack Touch device is running on Android then this is the path to **external** storage, if available. This could be an external SD card or external USB storage. If you have both an external SD and external USB storage, it is undefined which variable (**%SBT_EXTSDCARD%** or **%SBT_EXTSDCARD2%**) points to which external storage.
The following variables are used with SyncBack Touch profiles but are evaluated by SyncBack itself and not on the SyncBack Touch device:
**%SBTNAME%** The name (or hostname or IP address, depending on what is set in the profile) of the SyncBack Touch device.
**%SBTUSERNAME%** The username used to connect to the SyncBack Touch device.
**%BYTESSAVEDDELTAUPLOAD%** When using delta-copy upload/download with SyncBack Touch, this is the total number of bytes that were saved by using delta-copy. Saved means in terms of bytes that were **not** sent over the network. You can use these variables to determine if it is worth using delta-copy with SyncBack Touch. Introduced in V10.
**%KBYTESSAVEDDELTAUPLOAD%** This is the KBytes representation of **%BYTESSAVEDDELTAUPLOAD%**.
**%MBYTESSAVEDDELTAUPLOAD%** This is the MBytes representation of **%BYTESSAVEDDELTAUPLOAD%**.
**%BYTESSAVEDDELTADOWNLOAD%** When using delta-copy upload/download with SyncBack Touch, this is the total number of bytes that were saved by using delta-copy. Saved means in terms of bytes that were **not** received over the network. You can use these variables to determine if it is worth using delta-copy with SyncBack Touch.. Introduced in V10.
**%KBYTESSAVEDDELTADOWNLOAD%** This is the KBytes representation of **%BYTESSAVEDDELTADOWNLOAD%**..
**%MBYTESSAVEDDELTADOWNLOAD%** This is the MBytes representation of **%BYTESSAVEDDELTADOWNLOAD%**..
### Order of evaluation (precedence)
Variables are evaluated in the following order:
1. Registry variables
2. Windows environment variables
3. User defined (profile, group and global) variables, the %AUTOINC% variable and run-time variables, e.g. %PROFILENAME%
4. SyncBack variables
5. SyncBack Touch variables
Profile variables replace any existing group and global variables. Group variable replace any existing global variables. If a user defined profile variable has the same name as a user defined group variable, or a user defined global variable, then the profile variable replaces the group or global variable. If a user defined group variable has the same name as a user defined global variable, then the group variable replaces the global variable.
## Important note about Variable usage
An important point to remember is that Windows has its own environment variables, e.g. %USERNAME%. When these variables are used in a batch file, or on the command line, then Windows automatically expands them. Unknown variables are simply deleted. For example, if you had the following batch file:
```
@echo off
"c:\program files\2brightsparks\SyncBackPro\SyncBackPro.exe" -source "x:\%DAY%\"
```
Then when run it would actually be expanded to do the following:
@echo off
```
"c:\program files\2brightsparks\SyncBackPro\SyncBackPro.exe" -source "x:\\"
```
Note that the %DAY% has been removed because it's an unknown Windows variable (it's a SyncBackPro variable). To stop Windows from changing SyncBackPro variables you must use two percentage signs, e.g.
```
@echo off
"c:\program files\2brightsparks\SyncBackPro\SyncBackPro.exe" -source "x:\%%DAY%%\"
```
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Regular Expressions
## Regular Expression Filters in SyncBackPro
This section of the help file provides information and guidance about regular expression filters. Regular expressions are a system for matching patterns in text data. They provide a powerful set of tools for finding particular words or combinations of characters in strings.
Note that by default SyncBackPro will be case insensitive with the filters and it is not recommended that you use case sensitivity (via the [modifiers](ExpressionFilters.md#modifiers)). You also need to keep in mind that regular expressions can match any part of a filename, unlike DOS expressions which must match the entire filename. SyncBackPro works with line separators as recommended at [www.unicode.org](http://www.unicode.org/unicode/reports/tr18/), however there are no line separators within a filename. To add flexibility, SyncBackPro adds the backslash character (**\**) as a line separator. This means that filenames are essentially broken down into their parts with each part being treated as a separate line. See the [Line Separator](ExpressionFilters.md#linesep) section below on how this is useful.
**IMPORTANT: 2BrightSparks cannot provide technical support for helping you create regular expressions.**
### Simple matches
Any single character matches itself, unless it is a [meta-character](ExpressionFilters.md#metachars) with a special meaning described below.
A series of characters matches that series of characters in the target string, so the pattern **blah** would match **blah** in the target string.
You can cause characters that normally function as meta-characters or escape sequences to be interpreted literally by 'escaping' them by preceding them with a backslash (**\**), for instance: meta-character **^** match beginning of string, but **\^** match character **^**, **\\** match **\** and so on.
Examples:
**foobar** matches string **foobar**
**\^FooBarPtr** matches **^FooBarPtr**
### Escape sequences
Characters may be specified using escape sequences syntax much like that used in C and Perl: **\n** matches a newline, **\t** a tab, etc. More generally, **\xnn**, where **nn** is a string of hexadecimal digits, matches the character whose ASCII value is **nn**. If you need a Unicode character code, you can use **\x{nnnn}** where **nnnn** is one or more hexadecimal digits.
**\xnn** character with hex code nn
**\x{nnnn}** character with hex code nnnn (one byte for plain text and two bytes for Unicode)
**\t** tab (HT/TAB), same as \x09
**\n** newline (NL), same as \x0a
**\r** carriage return (CR), same as \x0d
**\f** form feed (FF), same as \x0c
**\a** alarm (bell) (BEL), same as \x07
**\e** escape (ESC), same as \x1b
Examples:
**foo\x20bar** matches **foo bar** (note space in the middle)
**\tfoobar** matches **foobar** predefined by tab
### Character classes
You can specify a character class, by enclosing a list of characters in square brackets (**[ ]**), which will match any one character from the list.
If the first character after the opening square bracket **[** is **^**, the class matches any character not in the list.
Examples:
**foob[aeiou]r** finds strings **foobar**, **foober**, etc. but not **foobbr**, **foobcr**, etc.
**foob[^aeiou]r** finds strings **foobbr**, **foobcr**, etc. but not **foobar**, **foober**, etc.
Within a list, the dash/minus character **-** is used to specify a range, so that **a-z** represents all characters between **a** and **z**, inclusive.
If you want **-** itself to be a member of a class, put it at the start or end of the list, or escape it with a backslash. If you want a closing square bracket **]** then you may place it at the start of list or escape it with a backslash.
Examples:
**[-az]** matches **a**, **z** and **-**
**[az-]** matches **a**, **z** and **-**
**[a\-z]** matches **a**, **z** and **-**
**[a-z]** matches all twenty six small characters from **a** to **z**
**[\n-\x0D]** matches any of **#10**, **#11**, **#12**, **#13**
**[\d-t]** matches any digit, **-** or **t**
**[]-a]** matches any character from **]** to **a**
### Meta-characters
Meta-characters are special characters which are the essence of Regular Expressions. There are different types of meta-characters, described below.
**Meta-characters - line separators**
**^** start of line
**$** end of line
**\A** start of text
**\Z** end of text
**.** any character in line
Examples:
**^foobar** matches string **foobar** only if it's at the beginning of line
**foobar$** matches string **foobar** only if it's at the end of line
**^foobar$** matches string **foobar** only if it's the only string in line
**foob.r** matches strings like **foobar**, **foobbr**, **foob1r** and so on
The **^** meta-character by default is only guaranteed to match at the beginning of the input string/text, the **$** meta-character only at the end. Embedded line separators will not be matched by **^** or **$**.
You may, however, wish to treat a string as a multi-line buffer, such that the **^** will match after any line separator within the string, and **$** will match before any line separator. You can do this by switching on the modifier **m**.
The **\A** and **\Z** are just like **^** and **$**, except that they won't match multiple times when the modifier **m** is used, while **^** and **$** will match at every internal line separator.
The **.** meta-character by default matches any character, but if you switch off the modifier **s**, then **.** won't match embedded line separators.
**^** is at the beginning of a input string, and, if modifier **m** is on, also immediately following any occurrence of **\**, **\x0D\x0A**, **\x0A**, **\x0D**, **\x2028**, **\x2029**, **\x0B**, **\x0C**, or **\x85**. Note that there is no empty line within the sequence **\x0D\x0A**.
**$** is at the end of a input string, and, if modifier **m** is on, also immediately preceding any occurrence of **\**, **\x0D\x0A**, **\x0A**, **\x0D**, **\x2028**, **\x2029**, **\x0B**, **\x0C**, or **\x85**. Note that there is no empty line within the sequence **\x0D\x0A**.
**.** matches any character, but if you switch off modifier **s** then **.** doesn't match **\**, **\x0D\x0A**, **\x0A**, **\x0D**, **\x2028**, **\x2029**, **\x0B**, **\x0C**, or **\x85**.
Note that **^.*$** (an empty line pattern) does not match the empty string within the sequence **\x0D\x0A**, but matches the empty string within the sequence **\x0A\x0D**.
### Meta-characters - predefined classes
**\w** an alphanumeric character (including underscore **_**)
**\W** a non-alphanumeric
**\d** a numeric character
**\D** a non-numeric
**\s** any space (same as **[ \t\n\r\f]**)
**\S** a non space
You may use **\w**, **\d** and **\s** within custom character classes.
Examples:
**foob\dr** matches strings like **foob1r**, **foob6r** and so on but not **foobar**, **foobbr** and so on
**foob[\w\s]r** matches strings like **foobar**, **foob r**, **foobbr** and so on but not **foob1r**, **foob=r** and so on
### Meta-characters - word boundaries
**\b** Match a word boundary
**\B** Match a non-(word boundary)
A word boundary (**\b**) is a spot between two characters that has a **\w** on one side of it and a **\W** on the other side of it (in either order), counting the imaginary characters off the beginning and end of the string as matching a **\W**.
### Meta-characters - iterators
Any item of a regular expression may be followed by another type of meta-characters - iterators. Using these meta-characters you can specify number of occurrences of previous characters, meta-characters or sub-expressions.
* zero or more ("greedy"), similar to **{0,}**
**+** one or more ("greedy"), similar to **{1,}**
**?** zero or one ("greedy"), similar to **{0,1}**
**{n}** exactly n times ("greedy")
**{n,}** at least n times ("greedy")
**{n,m}** at least n but not more than m times ("greedy")
***?** zero or more ("non-greedy"), similar to **{0,}?**
**+?** one or more ("non-greedy"), similar to **{1,}?**
**??** zero or one ("non-greedy"), similar to **{0,1}?**
**{n}?** exactly n times ("non-greedy")
**{n,}?** at least n times ("non-greedy")
**{n,m}?** at least n but not more than m times ("non-greedy")
So, digits in curly brackets of the form **{n,m}** specify the minimum number of times to match the item **n** and the maximum **m**. The form **{n}** is equivalent to **{n,n}** and matches exactly n times. The form **{n,}** matches n or more times. There is no limit to the size of **n** or **m**, but large numbers will chew up more memory and slow down execution.
If a curly bracket occurs in any other context, it is treated as a regular character.
Examples:
**foob.*r** matches strings like **foobar**, **foobalkjdflkj9r** and **foobr**
**foob.+r** matches strings like **foobar**, **foobalkjdflkj9r** but not **foobr**
**foob.?r** matches strings like **foobar**, **foobbr** and **foobr** but not **foobalkj9r**
**fooba{2}r** matches the string **foobaar**
**fooba{2,}r** matches strings like **foobaar**, **foobaaar**, **foobaaaar** etc.
**fooba{2,3}r** matches strings like **foobaar**, or **foobaaar** but not **foobaaaar**
A little explanation about *greediness*. "Greedy" takes as many as possible, "non-greedy" takes as few as possible. For example, **b+** and **b*** applied to string **abbbbc** return **bbbb**, **b+?** returns **b**, **b*?** returns empty string, **b{2,3}?** returns **bb**, **b{2,3}** returns **bbb**.
You can switch all iterators into "non-greedy" mode (see the modifier **g**).
### Meta-characters - alternatives
You can specify a series of alternatives for a pattern using **|** to separate them, so that **fee|fie|foe** will match any of **fee**, **fie**, or **foe** in the target string (as would **f(e|i|o)e**). The first alternative includes everything from the last pattern delimiter (**(**, **[**, or the beginning of the pattern) up to the first **|**, and the last alternative contains everything from the last **|** to the next pattern delimiter. For this reason, it's common practice to include alternatives in parentheses, to minimize confusion about where they start and end.
Alternatives are tried from left to right, so the first alternative found for which the entire expression matches, is the one that is chosen. This means that alternatives are not necessarily greedy. For example: when matching **foo|foot** against **barefoot**, only the **foo** part will match, as that is the first alternative tried, and it successfully matches the target string. (This might not seem important, but it is important when you are capturing matched text using parentheses.)
Also remember that **|** is interpreted as a literal within square brackets, so if you write **[fee|fie|foe]** you're really only matching **[feio|]**.
Examples:
**foo(bar|foo)** matches strings **foobar** or **foofoo**
### Meta-characters - sub-expressions
The bracketing construct (...) may also be used for defining sub-expressions. Sub-expressions are numbered based on the left to right order of their opening parenthesis. First sub-expression has number '1'.
Examples:
**(foobar){8,10}** matches strings which contain 8, 9 or 10 instances of the **foobar**
**foob([0-9]|a+)r** matches **foob0r**, **foob1r**, **foobar**, **foobaar**, **foobaar** etc.
### Meta-characters - back-references
Meta-characters \1 through \9 are interpreted as back-references. \ matches previously matched sub-expression #.
Examples:
**(.)\1+** matches **aaaa** and **cc**
**(.+)\1+** also match **abab** and **123123**
**(['"]?)(\d+)\1** matches **"13"** (in double quotes), or **'4'** (in single quotes) or **77** (without quotes) etc
### Modifiers
Modifiers are for changing behaviour of the regular expression engine. Any of these modifiers may be embedded within the regular expression itself using the (?...) construct. If the construction is in-lined into a sub-expression then it affects only that sub-expression.
**i** By default this is on. Do case-insensitive pattern matching (using installed in your system locale settings). **SyncBackPro uses case insensitive searches by default and it is not recommended that you use case sensitivity.**
**m** By default this is off. Treat string as multiple lines. That is, change **^** and **$** from matching at only the very start or end of the string to the start or end of any line anywhere within the string. This is important because in SyncBackPro a backslash is treated as a line separator. See the [Line Separator](ExpressionFilters.md#linesep) section.
**s** By default this is on. Treat string as single line. That is, change **.** to match any character whatsoever, even a line separators, which it normally would not match. This is important because in SyncBackPro a backslash is treated as a line separator. See the [Line Separator](ExpressionFilters.md#linesep) section.
**g** Non standard modifier. Switching it **off** will switch all following operators into non-greedy mode (by default this modifier is **on**). So, if modifier **g** is off then **+** works as **+?**, * as ***?** and so on. By default this is on.
Examples:
**(?i)Saint-Petersburg** matches **Saint-petersburg** and **Saint-Petersburg**
**(?i)Saint-(?-i)Petersburg** matches **Saint-Petersburg** but not **Saint-petersburg**
**(?i)(Saint-)?Petersburg** matches **Saint-petersburg** and **saint-petersburg**
**((?i)Saint-)?Petersburg** matches **saint-Petersburg**, but not **saint-petersburg**
**(?#text)**
A comment, the text is ignored. Note that comment is closed at the first close bracket **)**, so there is no way to put a literal close bracket **)** in the comment.
### Line Separator
SyncBackPro treats the backslash character as a line separator. All filenames start with a backslash, and all folders end with a backslash. The backslash character also delineates the parts of a file. By treating the backslash character as a line separator you can change how the **.** meta-character works and so have more flexibility. For example, let's say you only want text files in any folder that start with the name **temp**. A first attempt would be:
\\$
.*\\temp.*\.*\.txt
The first one (**\\$**) makes sure all folders are scanned, which is the same as the DOS expression ***\**. Although the second expression looks correct, it won't work correctly. It would match **\temp\folder\test.txt**. A second try could be:
\\temp.*?\\[^\\]*\.txt$
But this would also match **\temp\folder\test.txt**. Why? The part **\\temp.*?\\** will correctly match **\temp\** but **[^\\]*\.txt$** will match **test.txt** no matter what is after **\temp\**. This is where the point about the backslash being a line separator is important. Because it's a line separator you can change the way the meta-character **.** works. Normally it will match any character at all. But using the **s** modifier you can stop it matching line separators, so the following will work:
(?-s)\\temp.*\\.*\.txt$
To explain why this would work, let's use the example filename of **\temp\folder\text.txt** and see why it would not match:
**(?-s)** is a modifier that tells SyncBackPro to treat the filename as separate lines. Because backslash is a line separator it means you can think of the filename as being broken up into its parts with each part effectively on its own line:
temp
folder
text.txt
**\\temp.*\\** matches \temp\, so we are now onto the next line/part (folder)
**.*\.txt$** means the end of the current line must match any number of characters (but not backslash) and end with .txt. You could also have **.*\.txt\Z**
If the expression was **(?-s)\\temp.*\\.*\.txt** (so it doesn't have $ at the end) then it would wrongly match **\temp\folder.txt\test.txt** because **folder.txt** matches **.*\.txt**
What if you only wanted root temp* folders? The expression would be:
(?-s)\A\\temp.*\\.*\.txt$
The meta-character **\A** ensures that **\temp\** must be at the beginning.
## SyncBackPro Examples
Notice that many of the examples below also include filters to include folders.
| \\$ \.txt$ | All text files (.txt) in all folders. The \\$ filter ensures all folders are looked at. |
| --- | --- |
| \\$ (?-s)\\temp\\.*\.txt$ | All text files in all folders called **temp**. It would not include .txt files in any sub-folders of folders called **temp**. To include all .txt files in all sub-folders of folders called temp you would omit the (?-s) |
| \\temp\\$ (?-s)\\temp\\.*\.txt$ | All text files in the root folder called **temp**. For example, if your source directory is C:\My Documents\ then this filter is for all text files in C:\My Documents\temp\ |
| .*\\test\\$ | All folders called **test**. Note that no files will be copied unless another filter is added to include files. |
| .*\\parent\\$ .*\\parent\\child\\$ | All folders called **child** whose parent directory is called **parent**. Notice the filter *\ is required otherwise it will never look inside folders called parent. Note that no files will be copied unless another filter is added to include files. |
| (?-s)\A\\temp.*?\\$ | All root folders whose name starts with **temp** or is called **temp**. Note that no files will be copied unless another filter is added to include files. If you omit (?-s) then it would wrongly also match anything inside \temp\ |
**Further reading:** [A Brief Introduction to Regular Expressions](https://www.2brightsparks.com/resources/articles/a-brief-introduction-to-regular-expressions.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Invalid Profiles
If you import or run a profile that has settings which cannot be used in your version of SyncBackPro, or is from a newer version of SyncBackPro, then you will receive one of the following error messages:
**The profile "*profile name*" contains settings that cannot be used with this version of SyncBackPro**
**The profile "*profile name*" is from a newer version of SyncBackPro. It is unlikely that the profile will function correctly.**
There are several possible settings that could cause this:
- The profile is using Amazon S3, or a compatible service (e.g. Google Storage), and it has the option set to split files into chunks when uploading. This feature is no longer supported as the size restriction was greatly increased in SyncBackPro V6.1. Using that feature had a large performance impact, and with the size restriction effectively removed, the feature was removed. SyncBackPro has automatically disabled profiles using the "split files" setting to stop their accidental use. There are two options if you have split files in a bucket:
1. If you do not need the split files on the cloud (e.g. you have a local copy or another backup) then you could re-enable the profile (right-click on it in the main user interface and select **Enable** from the pop-up menu) and run it. SyncBackPro will automatically delete all the split files on the cloud, including any versions which are split. Depending on the configuration of your profile, it will then upload your local copies of those split files.
1. If you do not have another copy of the split files on the cloud (i.e. the cloud copies are the only copy) then you will need to restore the split files using an older version of SyncBackPro:
- Download and install [SyncBackPro V6.0](http://www.2brightsparks.com/assets/software/V6.0.12.0/SyncBackPro_Setup.exe). Install over your current version. Do not uninstall.
- Re-enable the disabled cloud profiles that are using the "split files" setting (you can re-enable the profile(s) by right-clicking on them and selecting **Enable** from the pop-up menu).
- Restore your split files by running the cloud profiles in [Restore](Restore.md) mode. From the [Differences](TheDifferencesWindow.md) window you could then choose only the split files (which files are split depends upon their size, there is no way to tell from the Differences window if a file is split or not).
- Now you have a local copy of your split files.
- Download and install [SyncBackPro V6.1](http://www.2brightsparks.com/assets/software/SyncBackPro_Setup.exe) or newer. Install over the V6.0 version. Do not uninstall.
- Depending on the configuration of your profile, when the new cloud profiles are run they will upload the files.
If you are unsure about what to do please contact [2BrightSparks Technical Support](http://www.2brightsparks.com/help/) before you do anything.
- The profile is from a newer version of SyncBackPro. It is not recommended that you import profiles from newer versions as the settings may not be compatible. SyncBackPro is backwards compatible with older versions, but it is not forwards compatible, i.e. it cannot know how future versions will store or name their settings. You should update your version of SyncBackPro (via **Help -> Update Check** in the main menu).
- It is an [Intelligent Synchronization](IntelligentSynchronization.md) profile and this version of SyncBack does not support Intelligent Synchronization.
- It is a [Fast Backup](FastBackup.md) profile and this version of SyncBack does not support that.
- It is a [Group Queue](Groups.md) profile and this version of SyncBack does not support that.
- You are using email (backup [from](BackupEmail.md)) and this version of SyncBack does not support that.
- You are using [MTP](MTP.md) and this version of SyncBack does not support that.
- You are using [SyncBack Touch](SyncBackTouch.md) and this version of SyncBack does not support that.
- You are using the [cloud](Cloud.md) and this version of SyncBack does not support that.
- You are using [scripting](Scripting.md) and this version of SyncBack does not support that.
- You are using [versioning](CopyDeleteVersioning.md#whatisversioning) and this version of SyncBack does not support that.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Restoring and Selections
- This section is rather complex, so in simple terms: if you are running a [restore](RestoringaBackup.md) and have chosen to restore from a sub-directory of your destination directory then you should switch off the selections and filters when asked in the restore wizard.
One of the configuration options for a profile is the ability to [select which files and folders](SubDirectoriesandFiles.md) to include or exclude and also [filter out](FilterSettings.md) certain files and folders. The selections and filters use relative paths, i.e. they don't specify a specific folder on a specific drive but instead specify a sub-folder. This is so that the selections and filters apply to both the source and destination. If the folder used the entire path then it would only apply to one side, e.g. the source, and that wouldn't make any sense.
For example, you have a backup profile and your source is **C:\My Files\Pictures\** and your destination is **D:\My Backup\Media\Pictures\**. You decide to exclude a folder from the backup, e.g. **C:\My Files\Pictures\Drafts\**. Using the file & folder selection window you actually deselect **\Drafts\** because the file & folder selection window shows sub-directories. So when you run the profile SyncBackPro knows to ignore **C:\My Files\Pictures\Drafts\** and **D:\My Backup\Media\Pictures\Drafts**. In other words, when you make selections you should keep in mind that you are choosing from sub-directories. Filters are the same in that you specify a filter using a relative path, e.g. **\Drafts\*** (or similar).
Generally when you are [restoring](RestoringaBackup.md) then you will not choose a different folder to restore from or to. However, if you do you may decide to restore to an empty folder. Or perhaps your destination is using variables, e.g. %DAY%, and so you want to restore from a specific day and so need to choose which folder to restore from. This is fine and won't cause any problems. If you aren't using selections or filters then there won't be any issues. However, if you have file & folder selections and decide to restore from a sub-folder, or restore to a sub-folder, then issues will arise.
For example, let's say your backup directory is **D:\My Backup\Media\Pictures\**. You decide to restore from a specific sub-folder in the backup directory instead, e.g. **D:\My Backup\Media\Pictures\2012\June\**. In your file & folder selections you've de-selected **\Drafts\**. So let's say you have the folder **D:\My Backup\Media\Pictures\2012\June\Drafts**. SyncBackPro will skip that folder entirely during the restore because the selections specify that the **\Drafts\** sub-folder should be ignored. However, you actually wanted **D:\My Backup\Media\Pictures\Drafts\** to be ignored, but you've changed the base folder and the selections are relative to the base folder. This is why SyncBackPro will suggest that filters and selections be switched off when restoring and the source and/or destination has been changed. With them switched off you won't be accidentally skipping any files and folders.
This same situation would occur if you use the [-source](CommandLineParameters.md#source) or [-dest](CommandLineParameters.md#dest) command line parameters and are using a sub-folder of the profiles base folders. In that case you should use the [-noselect](CommandLineParameters.md#noselect) and [-nofilter](CommandLineParameters.md#nofilter) command line parameters.
**Further reading:** [Special Restore Cases](https://www.2brightsparks.com/resources/articles/special-restore-cases.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Windows System Restore Point
If you are running [elevated](MiscellaneousElevate.md), and are **not** using a server version of Windows, when running a profile as a **restore**, SyncBack will prompt to ask if you would like to create a Windows System Restore Point:
If you press **Cancel** then you are returned to the [Restore Wizard](RestoringaBackup.md). If you press **Yes** then a Windows System Restore Point is created. It may take some time (seconds to a few minutes) for Windows to create a restore point.
When a restore point is created, Windows takes a "snapshot" of the system files and the Windows registry and saves them as a restore point. When an install failure or data corruption occurs, System Restore can return a system to working condition without you having to reinstall the operating system. It repairs the Windows environment by reverting back to the files and settings that were saved in the restore point.
System restore points only affect operating system and application files, but not user data. System restore is not the same as *Reset this PC* or going back to previous Windows versions.
It is important to note that a restore point can only be created **once every 24 hours**. This means if you want a restore point created, and one has already been created within the last 24 hours, then a new restore point is not created. No error message or warning is given.
If your Windows system becomes unstable or corrupted, you can restore it to a previous restore point (see below).
### Cannot Create Restore Point
If you receive the following error:
it is likely that system protection is not enabled, so SyncBack can optionally enable it. If you click **Yes** then SyncBack will try to enable it, and if successful, another attempt is made to create a restore point. If you press **Cancel** then you are returned to the [Restore Wizard](RestoringaBackup.md).
### Manually Enabling System Protection
If SyncBack cannot enable system protection, or you want to do it manually:
- Open the **Settings** app and go to the **System** page.
- From the system page open the **About** tab (at the bottom of the window)
- Click the button labeled **System Restore…**
- Click the **Configure...** button, select **Turn on system protection**, and click **Apply**
### Using a Restore Point
If your Windows system becomes unstable or corrupted, you can restore it to a previous restore point. To do this in Windows 10 or Windows 11:
- Open the **Settings** app and go to the **System** page.
- From the system page open the **About** tab (at the bottom of the window)
- Click the button labeled **System Restore…** A window will open with the option to use the most recent automatic restore point or to select a different point:
- If you select **Choose a different restore point** then you should be able to see the restore point that SyncBack requested be created. If you cannot it is because a restore point had already been created within 24 hours of the request and so a new one was not created by Windows:
- Select a restore point. click **Next** and then **Finish** to start the restore.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Power Management
SyncBackPro monitors the power state of the computer and will pause (or resume) profiles based on that state:
### Display
You can have profiles [run automatically](WhenDisplay.md) when the display is powered off.
### Battery Saver
If the **battery saver** (energy saver) is enabled in Windows then SyncBackPro will automatically pause all running profiles and stop new background profiles from starting, e.g. profiles set to run [periodically](WhenPeriodically.md). For [scheduled tasks](CreatingaSchedule.md) you need to configure the task to only run when on AC power, for example.
When the battery saver is disabled, the profiles that were paused are automatically resumed and background profiles can now be started.
### UPS (Uninterruptible Power Supply)
If the power switches to UPS (Uninterruptible Power Supply) then SyncBackPro will automatically pause all running profiles and stop new background profiles from starting. This is the same as if battery saver mode was enabled.
When the power switches back to AC/DC power, the profiles that were paused are automatically resumed and background profiles can now be started.
### Suspended (Standby, Hibernate)
If the computer is suspended, then SyncBackPro will automatically pause all running profiles and stop new background profiles from starting. This is the same as if battery saver mode was enabled.
Once the computer resumes from suspension the profiles that were paused are automatically resumed and background profiles can now be started.
You can [configure](PreferencesMainMenu.md#disablestandby) SyncBackPro to stop the computer suspending while profiles are running (this is ignored if the computer is not on mains power, e.g. using batteries).
You can also [configure](PreferencesMainMenu.md#donotautopause) SyncBackPro to not automatically pause profiles, and stop new background profiles from starting, when the computer is suspended.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SyncBack Management Service
Remote installations of SyncBackPro (Pro version only) can now be managed and monitored from a central location. A server, the SyncBack Management Service (**SBM Service**), must be installed on a Windows server. You can then configure your installations of SyncBackPro to communicate with your SBM Service so that they can report on when profiles are run and also update their profiles. The communication between SyncBackPro and the SBM Service is done over the network and is encrypted. This means an installation of SyncBackPro can communicate with your SBM Service over an intranet or the Internet.
Configuration and management of the SBM Service is done via the SyncBack Management Console (**SBM Console**). The console can be used from any computer as it communicates with the SBM Service in the same way as SyncBackPro, i.e. over a network connection. The console allows you to view the profile run history of remote SyncBackPro installations, for example. For detailed information on how to use the console please refer to the console help file. The SBM Console is free software which can be downloaded from the 2BrightSparks web site.
- SBMS is **free** when used with the current version of SyncBackPro. To use it for free with SyncBackPro you must enter a SyncBackPro V10 or newer serial number into SBMS Server via the SBMS Console.
## Management Service Settings
To set the connection details for SyncBackPro to connect to the SBM Service select **Management Service Settings** from the [burger menu](PreferencesMainMenu.md)
- **Hostname**: This is the hostname of the SBM Service that you want to connect to. Simply enter the hostname or IP address, e.g. **myserver.com**.
- **Port**: The default port number is 8100
- **Username**: The login username for the SBM Service. You must have a username to login to the SBM Service.
- **Password**: The login password for the SBM Service.
To test the settings click the **Test Server** button. SyncBackPro will then attempt to connect and login to the SBM Service.
Once these settings have been set (and validated) you may not have the access rights to change them. If not then the settings will be read-only and the **Modify** button will be visible. To change them you must click the **Modify** button and then you will be asked for the username and password of a user, e.g. an administrator, that has the access rights to change these settings.
## Upload Profile to SBM Service
To upload profiles to the SBM Service first select the profile to upload then select **Export / Import -> Upload Profile to SBM Service**. Optionally right-click on the profile and select **Upload Profile to SBM Service** from the pop-up menu. You can only upload profiles if you are an administrator (using the **admin** role). You must enter a description for the profile and then specify if the schedule for the profile should also be exported. After the profile has been uploaded a message will be displayed giving the unique GUID for the profile. This is for information purposes only so that when you edit the profiles details using the SBM Console you can check to make sure that the profile is the same one you uploaded. Every profile has a universally unique GUID.
If you are using profile groups, it is best to upload the profiles first, and then finally upload the profile groups.
If the menu item **Upload Profile to SBM Service** is not enabled then you are either not logged into SBMS or your user account in SBMS is not using the **admin** role.
**Important:** Once a profile has been uploaded you must use the **SBM Console** to assign the profile to one or more user groups. If you are updating an existing profile then the profile will still be in the same user groups as it was before the update.
## Managed Profiles
Every hour a check is made to see if there are any new or updated managed profiles. It also checks to see if any managed profiles should be deleted. If so they are downloaded from the SBM Service and installed, or deleted as necessary. This is only done when online. You can do an immediate check by pressing **Ctrl-F5**.
## Offline
If SyncBackPro cannot connect to the SBM Service, e.g. there is no network connection, then it will proceed in offline mode. The window caption for SyncBackPro will show if it is in offline mode. When in offline mode it will use the cached security settings (retrieved during the last online login) so that the user will still be restricted in what they can or cannot do. Any profile history created while in offline mode will be automatically and silently uploaded once SyncBackPro can connect to the SBM Service and it has been an hour or more since it last uploaded cached history. You can do an immediate upload by pressing **Ctrl-F5**.
## Group Policies
An alternative to using SBMS is to use [Windows Group Policies](GroupPolicies.md).
**Further reading:** [SyncBack Management System (SBMS)](https://www.2brightsparks.com/resources/articles/syncback-management-system-sbms.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Group Policies
Windows Group Policies allow IT administrators to centrally control what users can and cannot do in SyncBackPro. This is useful in enterprise environments where administrators need to restrict users from modifying backup configurations, deleting profiles, or changing global settings.
If using the [SyncBack Management Service (SBMS)](SBMService.md) is not practical or possible, Windows Group Policies are an alternative for restricting user actions. Both approaches can also be used together.
In the current version, only security settings are defined in the group policy (i.e. what users are allowed to do), not default values for profile or application settings. If you have suggestions for additional policies, please [contact us](https://www.2brightsparks.com/contact.html).
## Installing the ADMX Templates
The SyncBackPro installation includes ADMX and ADML template files in the ADMX sub-directory of the SyncBackPro installation folder. Two pairs of template files are provided:
- **2BrightSparks.admx** — policies that apply at the computer (machine) level, under Computer Configuration in the Group Policy Editor
- **2BrightSparksUsr.admx** — policies that apply at the user level, under User Configuration in the Group Policy Editor
Each ADMX file has a corresponding ADML language file in the en-US sub-directory.
To install the templates on a local computer:
1. Copy the .admx files to **C:\Windows\PolicyDefinitions\**
2. Copy the .adml files to **C:\Windows\PolicyDefinitions\en-US\**
In a domain environment with a central policy store, copy the files to the corresponding locations in the SYSVOL PolicyDefinitions folder on your domain controller instead.
Once installed, the policies appear in the Group Policy Editor under **2BrightSparks Policy > SyncBackPro** in both Computer Configuration and User Configuration.
## Available Policies
Each policy has three states: **Not Configured** (the default, no restriction is applied), **Enabled** (the action is explicitly allowed), and **Disabled** (the action is blocked). To restrict a user from performing an action, set the corresponding policy to Disabled.
The following policies are available:
- **CanCreateProfiles:** Controls whether the user can create new profiles.
- **CanDeleteProfiles:** Controls whether the user can delete profiles.
- **CanModifyProfiles:** Controls whether the user can modify the settings of existing profiles.
- **CanRenameProfiles:** Controls whether the user can rename profiles.
- **CanExportProfiles:** Controls whether the user can export profiles. Disabling this prevents users from copying profile configurations out of SyncBackPro.
- **CanImportProfiles:** Controls whether the user can import profiles.
- **CanModifyGlobalSettings:** Controls whether the user can modify the [Global Settings](GlobalSettings.md).
- **CanModifyLoginSettings:** Controls whether the user can modify the [SBMS](SBMService.md) login settings. Disabling this prevents users from changing the SBMS server connection, which is useful when SBMS is used alongside group policies.
- **CanRunProfilesManually:** Controls whether the user can manually run profiles. When disabled, profiles can only run via schedules or triggers.
- **CanRunProfilesToRestore:** Controls whether the user can run profiles in restore mode. Disabling this prevents users from performing restore operations.
## Policy Priority
When both SBMS and group policies are used, the group policy setting takes priority over the SBMS setting. Within group policy itself, User Configuration policies override Computer Configuration policies. The full priority order, from highest to lowest, is:
1. Group Policy — User Configuration (highest priority)
2. Group Policy — Computer Configuration
3. [SyncBack Management Service (SBMS)](SBMService.md)
4. Local user settings (lowest priority)
This means, for example, that if SBMS allows a user to create profiles but a Computer Configuration group policy disables CanCreateProfiles, the group policy takes precedence and the user will not be able to create profiles. If a User Configuration policy then enables CanCreateProfiles for a specific user, that user will be able to create profiles despite the machine-level restriction.
## Registry Path
The policies are stored in the Windows registry under the following path:
**SOFTWARE\Policies\2BrightSparks\SyncBackPro**
Computer Configuration policies are written under HKEY_LOCAL_MACHINE and User Configuration policies under HKEY_CURRENT_USER. Each policy is a DWORD value: 1 means the action is allowed, 0 means it is blocked. If the value does not exist, the policy is not configured and no restriction is applied.
This registry path can also be used to deploy policies through other management tools (such as Microsoft Intune or registry scripts) without requiring the ADMX templates.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SyncBack Touch
By using the [SyncBack Management Service](SBMService.md) (SBMS) you can manage remote installations of SyncBackPro. An alternative is instead of installing SyncBackPro on each computer you install **SyncBack Touch** on each device (Windows, macOS, Linux or Android). SyncBack then talks to SyncBack Touch on those devices to backup or synchronize with them. SyncBack Touch can also be configured to use SBMS for security (so credentials are centralized).
SyncBack Touch is a cross-platform service (Windows, macOS, Linux and Android) that allows SyncBackPro and SyncBackSE to remotely access a device’s file system in order to perform backup/restore and sync operations.
- SyncBack Touch is completely **free** if you are using it with SyncBackPro or SyncBackSE V10 or newer.
Install SyncBack Touch on the device you want to access then create a profile on SyncBackPro to copy files to and from that device. For example, backup all your photos as soon as your mobile device connects to your local Wi-Fi!
The benefits of using SyncBack Touch are:
- Cross platform support (Windows, macOS, Linux or Android)
- There's no need to install SyncBack and configure on each device, instead you install SyncBack Touch on each device
- You can backup multiple devices using one installation of SyncBack
- As all the profiles are in SyncBack you don't need to do any on the devices using SyncBack Touch
- It's free (when used with SyncBackPro or SyncBackSE V10 or newer).
## SyncBack Touch In The Home
Let's say you have a family and that in addition to your Windows computer, there are several other devices in your home.
You've bought a license to use SyncBackSE to backup your home computer. Your partner uses an iMac so you download and install the macOS SyncBack Touch App. You've got a wi-fi network at home, and so you run SyncBack Touch on the iMac, then make a new backup profile to backup your iMac in SyncBackSE. Your kids also have an Android tablet so you download the SyncBack Touch App and presto - You backup that too - All for the price of a single license of SyncBackSE!
## SyncBack Touch At The Office
You're a business user and have Windows, macOS, Linux and Android devices. If you've only got Windows computers, that's fine too. You buy SyncBackPro to give you Cloud support and all the flexibility a professional backup solution delivers.
SyncBack Touch (V1.7.7.0 and newer) can be configured to work both with [SBMS](SBMService.md) and Windows for security. This way you can let users connect to Touch using their Windows username and password, but also configure SBMS to specify which users are allowed to login (each with their own separate SBMS username and password).
**Further reading:** [Create a SyncBack Touch Profile](https://www.2brightsparks.com/resources/articles/create-syncback-touch-profile.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Connection Problems
For SyncBackPro to connect to SyncBack Touch, it needs to connect to the computer that SyncBack Touch is installed on. This means it is very important that the connection details are correct.
### Automatically Finding SyncBack Touch
If SyncBack Touch is on the same local network as SyncBackPro, e.g. the computer your are using SyncBackPro on and the computer SyncBack Touch is running on are both at home or both in the same office, then SyncBackPro should be able to automatically find SyncBack Touch on your network. To do this simply click the **Find** button (the magnifying glass) when creating your profile or [modifying it](SyncBackTouch.md). If SyncBackPro cannot find your SyncBack Touch installation then it could be that your firewall is blocking UDP port **24671**. Also, it could be that SyncBack Touch is on a different subnet. Sometimes, if you connect to your Touch device using the I.P. address (see manual connection below), **Find** will then work. This is often because a network device (e.g. router) or the device Touch itself is installed on, will block the broadcast until a connection is made.
If SyncBackPro is not on the same local network then you will need to enter the connection details manually (see below).
### Manually Entering SyncBack Touch Connection Details
If SyncBack Touch is not on the same local network as SyncBackPro, e.g. it's on a computer you need to access via the Internet, or you SyncBackPro cannot automatically find your SyncBack Touch installation (e.g. it's on a different subnet), then you'll need to enter the connection details manually.
For SyncBackPro to connect to SyncBack Touch it needs two things:
1. The I.P. address, or hostname, of the remote computer SyncBack Touch is running on.
2. The TCP port number the remote SyncBack Touch is listening on. By default, it is port **8080**.
Make sure to **untick** the checkbox "Find and connect to the SyncBack Touch device using its name".
### Cannot connect while screen locked (Android)
If SyncBackPro cannot connect to SyncBack Touch on an Android device, while the Android device is locked, and SyncBackPro is connecting using the name, then you may need to connect using the IP address (see above).
### Port 8080 and 8081
By default SyncBack Touch listens for connections on port **8080** and also uses port **8081** if Rapid Transfer is being used. However, port 8080 may also be used by some web servers (typically for testing or development). Because of this you may need to change the base port number SyncBack Touch listens on. If your are using SyncBack Touch on Android or macOS then you can change the port number via the user interface on SyncBack Touch itself.
With Linux, you need to use the command line to set the listening port:
- Using the command prompt, go to the directory that SyncBack Touch is installed in, e.g. cd /home/username
- Run the SyncBack Touch executable and pass the new port number using -port *portnumber*, e.g. SyncBackTouch -port 8081 (which means port 8082 will be used for Rapid Transfer)
- Restart SyncBack Touch
Alternatively, you can specify the port number [during installation](SyncBackTouch.md) of SyncBack Touch.
If you can connect to SyncBack Touch using SyncBackPro then you can using SyncBackPro itself to change the port. To do this, modify a profile that connects to SyncBack Touch, go to the SyncBack Touch settings page and click the **Configure** button.
If you are using **Rapid Transfer**, then an extra TCP port is required. It will also use the port above the port you defined. For example, if you are using port 8080 then port 8081 will be used for Rapid Transfer.
### Firewalls and Routers
By default SyncBack Touch uses TCP port **8080** for all communication with SyncBack and also port **8081** if Rapid Transfer is being used. The base port number can be changed/set during the installation (see below) or [by using SyncBack](SyncBackTouch.md). If you want to access SyncBack Touch through a firewall then you must open this port (and the next one above if using Rapid Transfer). If SyncBack Touch is behind a router then you may need to enable port forwarding. Refer to your routers documentation for details.
To discover SyncBack Touch installations broadcasts are made on the UDP port **24671**. You may need to open this port on your firewall (not your router as broadcasts are only made on the local network).
### Virtual Private Network (VPN)
If you are using a VPN (either on the device running SyncBackTouch and/or on the device running SyncBackPro) then it's very likely that either broadcasting will not work and/or the connection will not work.
### Running?
Check to make sure SyncBack Touch is actually running on the device you are connecting to. If it's on Android, then simply start SyncBack Touch. If it's in Windows then check the Windows services to see if the SyncBack Touch service is running.
### Accessing SD Card and/or USB storage on Android
To access the SD card (in an Android device) you may need to set your profile path to use the variable **%SBT_EXTSDCARD%**
If you are also using USB storage, with your Android device, you may need to set your profile path to use the variable **%SBT_EXTSDCARD2%**
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# SyncBack Monitor
SyncBack Monitor is a free [Android app](https://play.google.com/store/apps/details?id=com.twobrightsparks.SyncBackMonitor) that lets you remotely monitor and control SyncBackPro installations running on computers on your local network. From your Android device you can see the status of all your profiles and start, stop, pause, or resume them.
## Setting Up SyncBack Monitor
**On your computer:**
1. Open SyncBackPro and go to the [Remote Control](GlobalSettings.md#syncbackmonitor) section in [Global Settings](GlobalSettings.md).
2. Tick **Allow remote control connections**.
3. Enter a password. This password is required and is used to authenticate connections from the Android app.
4. Repeat these steps on each computer you want to monitor. Use the same password on every computer you want to manage from the same device.
**On your Android device:**
1. Install SyncBack Monitor from the [Google Play Store](https://play.google.com/store/apps/details?id=com.twobrightsparks.SyncBackMonitor).
2. Open the app and enter the same password you configured in SyncBackPro. Passwords are case-sensitive.
3. The app will automatically discover any running instances of SyncBackPro on the network that use the same password. Discovered instances appear in a drop-down list.
4. Select the instance you want to connect to and tap the green connect button next to it.
## What You Can Do
Once connected to a SyncBackPro instance, the app displays a grid showing all profiles and their current status. From the app you can:
- View the status of all profiles (idle, running, paused, etc.)
- **Start** a profile to begin a backup or synchronization
- **Stop** a running profile
- **Pause** a running profile temporarily
- **Resume** a paused profile
These controls appear as buttons at the bottom of the app screen. Select a profile in the grid, then tap the appropriate button.
- Profiles started via SyncBack Monitor are always run **unattended**. This means no dialogs or prompts will be shown on the computer and files that would require user interaction will be skipped. See [Dialogs](Dialogs.md) for more information about unattended runs.
- SyncBack Monitor does not display groups. Profiles started via the app are **run stand-alone and not as part of a group**. This may be important if your profiles depend on group settings such as [group variables](Groups.md) or group queues.
## Network Requirements
SyncBack Monitor uses network broadcast to discover running instances of SyncBackPro on the local network. For this to work:
- Your Android device must be connected to the **same local network** (Wi-Fi) as the computer(s) running SyncBackPro.
- If a **VPN** is active on either the Android device or the computer, it is very likely to prevent SyncBack Monitor from working. VPNs typically redirect network traffic so that broadcast messages do not reach devices on the local network.
- The Windows Firewall on the computer may need to allow SyncBackPro to accept incoming connections. If the app cannot discover or connect to a SyncBackPro instance, check that the firewall is not blocking the connection.
- SyncBack Monitor does not work across different subnets or over the internet. Both devices must be on the same local network segment.
## Troubleshooting
If SyncBack Monitor cannot find or connect to your computer, check the following:
- SyncBackPro is running on the computer. It may be minimized to the Windows notification area (system tray), but the program itself must be running — SyncBack Monitor cannot start SyncBackPro for you.
- **Allow remote control connections** is ticked in [Global Settings > Remote Control](GlobalSettings.md#syncbackmonitor).
- The password in the app matches exactly (passwords are case-sensitive).
- Both devices are on the same Wi-Fi network (not different subnets or VLANs).
- No VPN is active on either device.
- The Windows Firewall (or any third-party firewall) on the computer is not blocking incoming connections for SyncBackPro.
- Your Wi-Fi router allows broadcast traffic between devices (some routers have client isolation or AP isolation enabled, which prevents this).
**Further reading:** [Beginner's Guide to SyncBack Monitor](https://www.2brightsparks.com/resources/articles/beginners-guide-to-syncback-monitor.html) on the 2BrightSparks website.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Scheduler Monitor Service
The **Scheduler Monitor Service** is a background Windows service that is installed with SyncBack. It works, in the background, with SyncBack to support two important features:
- Detect profiles that are not being run by the Windows Task Scheduler. You can check if the service is installed and running by visiting the **Expert** settings page in [Global Settings](GlobalSettings.md). If you do not want the service to inform you of problems then enable the option **Do not prompt me again**.
- Let users who are using SyncBackPro or SyncBackSE unelevated [copy locked/open files](OpenandLockedFileCopying.md). You can disable this on the [Copy/Delete -> VSS](CopyDeleteVSS.md) settings page for a profile.
If a scheduler is not being run, see the [Scheduling Problems](SchedulingProblems.md) page.
- The Scheduler Monitor Service is only installed if you used the [All Users installer](InstallerOptions.md).
## How It Works
The Scheduler Monitor Service is a Windows service that runs silently in the background. When you schedule a profile in SyncBack it informs the service of when the profile should next run, and when the Windows Task Scheduler runs the profile, SyncBack informs the service.
This way, if a scheduled task has not been run at the expected time, the service can inform SyncBack, which will then prompt the user:
The date & time is when the scheduler was supposed to run the profile but it did not. Keep in mind that the scheduler may succeed in running it at a later time (while this window is being displayed), but this will not be reflected in this window (i.e. it is not updated). You can then [investigate](SchedulingProblems.md) why the profile was not run by the Windows Task Scheduler (click the **Help** button for details). If you never want to be prompted again then you can tick the **Do not prompt me again** checkbox. This can be reset on the **Expert** settings page in [Global Settings](GlobalSettings.md).
Note that the monitor service is Windows user specific and you must log into Windows to receive the notification. If you have multiple users on the computer then it will only inform the appropriate user. After you log into Windows, the service will wait **12 minutes** before notifying you of any failed profiles.
There are other options to be notified when a profile is run, e.g. [email](EmailSettings.md), [webhook](SetupWebhook.md), [Pushover](Pushover.md), [SysLog](GlobalSettings.md#syslog), etc. Please keep in mind that if a profile is not run by the Windows Task Scheduler then it will not send an email, for example, because SyncBack will not have even been called. For this reason you should configure your profile to always send an email, for example, as that way you will know if it has not run as you will not receive an email.
## Caveats
There are cases where you will not be notified of a missed schedule:
- The Scheduler Monitor Service waits for at least **12 minutes** after the user logs in before checking if scheduled tasks have been missed. This means if you log in and out in less than 12 minutes then you will not be notified of any missed schedules.
- If you have multiple schedules for the same profile then the result is undefined.
- If you schedule a group, and a profile is part of that group, and the profile itself also has its own schedule, then you would only be notified of failure if both schedules failed.
- By default, the Windows Task Scheduler will try to run a scheduled task as soon as possible if a scheduled start is missed. For example, if a scheduled task is to run at 1pm, but your computer is physically powered off at the time, then it will run try to run it when you next start Windows, e.g. you switch on the computer at 2pm. By default, there is a 10 minute delay before it tries. This means it is possible that the Scheduler Monitor Service will correctly inform you that a profile was not run. However, the Windows Task Scheduler may start the task while the warning is displayed (or up to 10 minutes after).
- The purpose of the Scheduler Monitor Service is to inform you if a profile has not been run. This means that if a profile is **disabled**, or the scheduled task to run a profile is disabled, then the result is the same: the profile has not been run. Therefore, the service will inform you that the profile has not been run. If you do not wish to be notified, in these situations, then you must delete the schedule (within SyncBack).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# All Volumes Path (\\?\)
Starting with SyncBackPro V11, the special path **\\?\** can be used with file systems, i.e. not with cloud, FTP, etc. This special path gives you access to all the volumes on your system, including volumes with no drive letter assigned to them.
For example, if you set your **source** to \\?\ and then click select directory button...
...you will see all the volumes on your system:
The first column is the unique volume GUID that is assigned by Windows. In the second column you can see the drive letter, or folder, that the volume is mounted on (if any). You could now drill down into any of the volumes to choose your source directory, or you could leave it at **\\?\** and instead click the **Choose sub-directories and files** button:
You can now copy from multiple drives by picking and choosing what to copy.
Note that locked files cannot be copied when using \\?\. Also, if the [Windows Explorer file copying method](CopyDeleteSettings.md) is used, then it will silently use Standard Windows file copying instead (as the Windows Explorer method cannot be used with these kinds of paths).
**Tip:** You can also use Shadow Copy Volume paths, e.g. \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1, in the source and/or destination. Note that shadow volumes are read-only.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Upgrading Cloud Service
### Upgrading Dropbox and OneDrive Cloud API
When you upgrade from an earlier version of SyncBackPro, or import a profile from an earlier version of SyncBackPro, and the profile is using **Dropbox**, **OneDrive** (**Personal** or **Business**) or **SharePoint**, then SyncBackPro will continue using the old (legacy) interface with that cloud service. This ensures your profile continues to work. However, it is recommended that you update the profile to use the new cloud API.
Dropbox V1 (legacy) profiles stopped working 28th September 2017.
To do this:
- Run the profile to make sure all changed files are copied etc. to or from the cloud.
- Make a copy of the profile (select the profile in the main window and press **Ctrl-C**, or right-click on the profile and select **Copy** from the pop-up menu) and give the copy a new name, e.g. **New Cloud Backup Profile**
- Modify your original profile, go to the **Cloud** settings page and click the **Delete DB** button.
- You may then be prompted to ask if you would like to switch from the old cloud API. If so, click **Yes**.
- After the cloud database has been deleted, if you already have a [linked cloud account](LinkedCloudAccounts.md) for the new cloud service then you will be prompted if you would like to use that account. If you do not have a linked account then you must re-authorize SyncBackPro with the cloud service.
- Save the profile and run it **attended** (it is critical it is run attended and **not** unattended). To do this, select the profile in the main window and press **Ctrl-R**.
- When the [Differences](TheDifferencesWindow.md) window appears you need to change the **Action** for all the files to **Use details from Source** (or whatever your source is called) then let the profile continue. Note that you can choose all files by pressing **Ctrl-A** or you can do multiple selections using the **Ctrl** and **Shift** keys with mouse clicks. To change the Action for your selected files, right-click on the selection and choose the action from the pop-up menu.
If there are no problems you can delete the copy of the profile.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Google Drive
Prior to **April 2024**, SyncBackPro connected to Google Drive using a special 2BrightSparks Client ID and Client Secret. A Client ID and Client Secret is like a username and password. It identified that it was SyncBackPro connecting to Google Drive. This made it very simple to use Google Drive as you only needed to approve that SyncBackPro could access your files.
However, due to ever tightening security constraints, Google has severely restricted which applications can access Google Drive using their own Client ID and Client Secret. Because of this, users of SyncBackPro must now create their own Client ID and Client Secret to allow SyncBackPro to access their Google Drive files.
To create your own Client ID and Client Secret for SyncBackPro please [read our article online](https://www.2brightsparks.com/resources/articles/google-drive-oauth.html).
Once you have a Client ID and Client Secret you can use it in the [Cloud Accounts](LinkedCloudAccounts.md) so that you no longer need to enter it again.
In the future, you can retrieve the ID and secret by going to the Google Cloud Console, selecting this project, and going to [Clients](https://console.cloud.google.com/auth/clients).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Egnyte
- Support for Egnyte is deprecated and may be removed in a future version of SyncBackPro.
Prior to **March 2024**, SyncBackPro connected to Egnyte using a special 2BrightSparks Key and Secret. A Key and Secret is like a username and password. It identified that it was SyncBackPro connecting to Egnyte. However, due to policy changes at Egnyte, software that uses Egnyte **must** supply their own credentials which **you** must retrieve from Egnyte.
Please [contact Egnyte](https://helpdesk.egnyte.com/hc/en-us/requests/new) about getting an API Key and Secret. SyncBackPro is a *public application* that uses the *Authorization Code* method. During the application registration ensure that the application is marked as "Publicly Available Application":
For the "*Registered OAuth Redirect URI*" you can use ours: https://www.2brightsparks.com/syncback/syncbackpro/egnyte.php
If during the authorization procedure (through SyncBackPro) you receive the following error then most likely you have registered the API Key as being Private:
*{"errorMessage":"Incorrect request type GET for resource owner flow. Please check the documentation and try again."}*
Once you have a Key and Secret you can use it in the [Cloud Accounts](LinkedCloudAccounts.md) so that you no longer need to enter it again.
**IMPORTANT:** The [Egnyte plan you have](https://helpdesk.egnyte.com/hc/en-us/articles/17683455594125) limits how frequently SyncBackPro can call the Egnyte cloud service. If you are being throttled (receiving HTTP 429 errors) please [contact Egnyte](https://helpdesk.egnyte.com/hc/en-us/requests/new) to increase your limits. State that you are using SyncBackPro and ask to increase the number of calls to the desired amount, and the reason it is needed, e.g. migration.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Gmail
For **Gmail**, you can either use [application passwords](https://support.google.com/mail/answer/185833?hl=en), which are simpler to create but potentially less secure, or you can create a [ClientID and Client Secret](https://www.2brightsparks.com/resources/articles/gmail-oauth.html). It is possible that at a future date, Google will disallow application passwords.
Once you have a Client ID and Client Secret you can use it in the [Linked Cloud Accounts](LinkedCloudAccounts.md) so that you no longer need to enter it again.
We have an article online that explains in detail how to create a [ClientID and Client Secret](https://www.2brightsparks.com/resources/articles/gmail-oauth.html).
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Administrator Protection
[Administrator Protection](https://learn.microsoft.com/windows/security/application-security/application-control/administrator-protection/) is a Windows 11 security feature that has an impact on any software that runs elevated. It is available in Windows 11 24H2 and 25H2 from the August 2026 update (KB5120998) onwards. It is off by default, and Windows must be restarted after it is enabled. Although it is configured as a type of UAC (User Account Control) Admin Approval Mode, it works very differently from standard UAC prompts.
To enable Administrator Protection, open Local Security Policy (secpol.msc) or Group Policy, go to Security Settings -> Local Policies -> Security Options, and set **User Account Control: Configure type of Admin Approval Mode** to **Admin Approval Mode with Administrator protection**. Organizations can also deploy this setting with Microsoft Intune. On some devices it can instead be turned on in Windows Security -> Account protection (shown below).
If Administrator Protection is enabled, then any software that is run elevated will require the user verify their identity (via Windows Hello or via the account password). With UAC, you only needed to verify you wanted to start the software elevated. Now you must re-authenticate. However, Administrator Protection adds another layer of security: the software will be run elevated but using a shadow/virtual administrator account and **not your account**.
For example, if you are a Windows administrator and your account name is **BOB**, then when you run any software elevated, and administrator protection is enabled, the software will be run by Windows as **ADMIN_BOB**, i.e. a different account. This can have a serious impact on software which is run elevated, such as SyncBackPro:
- SyncBackPro will not have access to your profiles and settings as those are probably stored in your actual administrator account. To avoid this, SyncBackPro will start an un-elevated instance of SyncBackPro and get details on where the settings are. It will then have access to the profiles and settings (assuming Windows does not block access, e.g. due to NTFS security).
- SyncBackPro is run as a different user account, so the [environment variables](Variables.md) are completely different (as you are running as a different user account).
- SyncBackPro is run as a different user account, so your Documents folder, for example, is completely different (as you are running as a different user account).
- SyncBackPro is run as a different user account, so you may not have access to files and folders you would have with your actual account.
- SyncBackPro is run as a different user account, so mapped network drives, and network credentials from your normal Windows session, may not be available. Profiles that use network shares or NAS devices may therefore fail when run elevated.
If SyncBackPro is not run elevated, then these issues will not occur as it will be run using your account, as per normal.
Administrator Protection is not currently available on Windows Server, Windows 365 Cloud PCs or Azure Virtual Desktop session hosts.
Also, any existing scheduled tasks will run as the correct user account and not as the shadow/virtual administrator account. Unlike when software is run manually, any tasks started from the Windows Task Scheduler are run as the user account specified and not as the shadow/virtual administrator account.
**Further reading:** [Administrator Protection](https://www.2brightsparks.com/resources/articles/administrator-protection.html) on the 2BrightSparks website.
## SyncBack Settings
By default, if SyncBackPro is run as the shadow/virtual administrator account then a warning will appear. You can disable this in [Global Settings -> Security](GlobalSettings.md#security).
Also by default, no profiles will run using the shadow/virtual administrator account. If you want to allow this then you need to allow it in the profiles settings ([Misc. -> Elevation](MiscellaneousElevate.md)).
## Web Browsers and Cloud Sign-in
When SyncBackPro is run elevated with Administrator Protection enabled, any web page it opens, including the sign-in page for cloud storage accounts, is opened in your web browser as your normal Windows user account. This means your usual default browser, saved passwords and existing sign-ins are available. If the browser cannot be started that way, it is started as the virtual administrator account instead, which has none of your browser settings or sign-ins.
## Windows Data Protection API
If the option [Store sensitive settings using the Windows Data Protection API](GlobalSettings.md#encryption) is enabled, your sensitive settings can only be decrypted by your own Windows user account. The virtual administrator account used by Administrator Protection is a different account and cannot decrypt them, so SyncBackPro will not start when run elevated. Either run SyncBackPro without elevation, or turn off the option (while running without elevation) before running it elevated.
## SyncBackFree
SyncBackFree cannot be run elevated when Administrator Protection is enabled, as it cannot use your settings and profiles from the virtual administrator account. Run SyncBackFree without elevation.
## Task Scheduler
If you are using the shadow/virtual administrator account, then when you schedule a profile, SyncBackPro will schedule it to use your actual account.
Administrator Protection has an impact on how the Windows Task Scheduler works with **elevated** processes. Basically, an elevated scheduled task (i.e. run with highest privileges) cannot be run **interactively**, which means:
- The trick to use a [shortcut](GlobalSettings.md#security) to run SyncBack elevated without a UAC prompt, via the Windows Task Scheduler, will not work if Administrator Protection is enabled.
- SyncBack cannot be run elevated on login if Administrator Protection is enabled.
- You cannot run a profile [on login](WhenLoginLogout.md) elevated if Administrator Protection is enabled.
- Drag & drop may not work if Administrator Protection is enabled. For example, if SyncBack is elevated, and you try and drag a profile to the desktop (to create a shortcut), it may silently fail.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Installing
## Checking for a Newer Version
If the setup program you are running is more than 120 days old, the installer asks whether you would like to check online for a newer version of SyncBackPro before installing. The check only happens if you click **Check now**. It sends the product name, version number, whether it is 32-bit or 64-bit, and the installation type (all users or current user) to 2BrightSparks. Nothing else is sent.
If a newer version is available, the installer can open the download page for you and then asks whether you want to exit setup. You can also continue installing the version you have. If the check fails, for example because you are offline, setup continues as normal. For details of what the check sends, see our [privacy policy](https://www.2brightsparks.com/privacy.html).
Tick **Do not ask again** to stop being asked for this major version of SyncBackPro. The check is not normally made during a silent install, and you can switch it off with the **/NOUPDATECHECK** command line parameter. To be asked even when setup would not normally ask, for example during a silent install, use **/FORCEUPDATECHECK** (see below).
## Silent Install
To install SyncBackPro without any prompts or messages on the screen use the **/verysilent** command line parameter with the installation executable, e.g.
**SyncBackPro64_Setup.exe /verysilent**
It is important that it is the *first* command line parameter.
If you are using the non-elevated installer (the install filename ends with **_NE**, e.g. SyncBackPro64_Setup_NE.exe), and this is the first time you are installing (i.e. SyncBackPro is not already installed), then you must specify which installation you wish. If you want to install just for yourself (which does not require you to be a Windows administrator):
**SyncBackPro64_Setup_NE.exe /verysilent /currentuser**
If you want to install just for all users (which requires you to be a Windows administrator):
**SyncBackPro64_Setup_NE.exe /verysilent /allusers**
With the non-elevated installers there is no need to specify /currentuser or /allusers if SyncBackPro is already installed. If already installed then it will use the previous setting, i.e. if it is already installed for all users then it will install for all users.
**WARNING: When using a silent installation, no prompting can be done. Therefore, if the installer cannot replace a file because it is being used, then it will replace it on reboot. If it needs to reboot to replace the file then it will immediately reboot, without prompting, once the installation is complete.** **To stop it rebooting use /NORESTART:**
**SyncBackPro64_Setup.exe /verysilent /norestart**
**You may also want to use /CloseApplications or /ForceCloseApplications (see below).**
**You should also bear in mind that if you disable prompting, it is assumed you tacitly agree to those prompts that would normally be displayed (for example, our** [terms & conditions](http://www.2brightsparks.com/terms.html)**) and/or that you are aware of the issues that would normally be mentioned. If in doubt, you should manually install a test instance first and satisfy yourself there are no contentious issues.**
## Other Parameters
**/language=*"language_code"*** **:** You can specify which language the program should use when run. This is a two-character language and is the same as shown in [burger menu](PreferencesMainMenu.md) -> Language. For example, to use French: **SyncBackSE_Setup.exe /language="FR"**
**/SN=*"serial_number"*** **:** The serial number to use. For example: **SyncBackPro_Setup.exe /SN="*serial number*"**
**/UAO=*"offline UA serial_number"*** **:** If you have [Upgrade Assurance](UpgradeAssurance.md), this is the offline Upgrade Assurance serial number**, e.g. SyncBackPro_Setup.exe /SN="*serial number*" /UAO="offline UA serial"**
**/SettingsFolder=*"folder"*** **:** This can be used to specify the folder to use to get settings and profiles settings from, e.g. **/SettingsFolder="C:\My Folder\"**
**/Counter=*"value"*** **:** Set to 5 to not be prompted about visiting the introduction web page, e.g. **/Counter="5"**
**/UpdCheckDays=*"days"*** **:** The number of days between automatic update checks. Use 0 to disable update checks. The default value is 30. The **/UpdCheckDays** parameter is only used for new installations. So if SyncBackPro is already installed then this value is ignored and it will continue to use the existing setting.
**/NOUPDATECHECK** **:** Instructs the installer not to ask about, or check for, a newer version before installing. This only affects the installer. To control update checks made by SyncBackPro itself, use **/UpdCheckDays**.
**/FORCEUPDATECHECK** **:** Instructs the installer to ask whether you would like to check for a newer version even when it would not normally ask: during a silent install, when the setup program is less than 120 days old, or when **Do not ask again** was ticked. You are still asked before anything is sent, and the result is shown, so a silent install will stop to show these messages. If **/NOUPDATECHECK** is also given, no check is made.
**/StopBg=*"value"*** **:** By default, background backups are not started. To enable background backups pass "N", e.g. **/StopBg="N"**
**/NoBackupPrompt=*"value"*** **:** You can also switch off the prompting about the backup folder when upgrading from one major version to another, e.g. **/NoBackupPrompt="Y"**
**/CloseApplications** **:** Instructs the installer to close applications using files that need to be updated (if possible).
**/ForceCloseApplications** **:** Instructs the installer to forcibly close applications using files that need to be updated (if possible).
**/currentuser** **:** This is only valid with the non-elevated installers (the install filename ends with **_NE**). Instructs the installer to install the software for the current user only. It can be used be standard Windows users and does not required you to be a Windows administrator.
**/allusers** **:** This is only valid with the non-elevated installers (the install filename ends with **_NE**). Instructs the installer to install the software for all users. You must be a Windows administrator. If not, use **/currentuser** instead.
**/SUPPRESSMSGBOXES** **:** Instructs the installer to suppress message boxes. It only has an effect when combined with **/SILENT** or **/VERYSILENT**. If you are using a non-elevated installer (the install filename ends with **_NE**), and this is the first time you are installing SyncBackPro, then it will default to **/currentuser** unless you specify **/allusers**. If SyncBackPro is already installed, then it will use the previous setting, i.e. if it is already installed for all users then it will install for all users.
For example, for a silent install of SyncBackPro 64-bit, to use French, pass a serial number, switch off update checks, not be prompted about a backup folder for old profiles, and not be prompted about visiting the introduction page:
**SyncBackPro64_Setup.exe /verysilent /language="FR" /SN="*serial number*" /UpdCheckDays="0" /NoBackupPrompt="Y" /Counter="5"**
## SBMS Parameters
For the SyncBackPro installation there are a number of optional installation command line parameters related to the SBM Service (if used):
**/SBMS_Hostname="***hostname*" : This is the hostname, IP address, or URL of the SyncBack Management Service (SBM Service). If you are using a HTTP connection type then this is the complete URL include the port number. For example: **/SBMS_Hostname="http://myserver.com:8099/BIN/**". If you are using a TCP or Named Pipe connection type then this is the hostname or IP address. For example: **/SBMS_Hostname="192.168.0.1"**.
**/SBMS_Port="**port number**"** : This is the port number of the SBM Service. It is only used when the connection type is TCP, and the default port number is 8095. For example: **/SBMS_Port="8095"**
**/SBMS_Username="***username***"** : This is the login username for the SBM Service. Typically each user has their own login username for the SBM Service.
**/SBMS_Password=**"password" : This is the login password for the SBM Service.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Installer Options
There are four different ways to install SyncBackPro:
- The standard installer that requires a **Windows administrator** to install and installs for **All Users**, e.g. SyncBackPro64_Setup.exe
- There is also an installer that can be used by **standard Windows users** that installs for the current user only and does not require you to be an administrator, e.g. SyncBackPro64_Setup_NE.exe
- A "No Install" Zip file that you can unzip to any folder you wish, e.g. on a USB key, that can be used by a **standard Windows user**, e.g. SyncBackPro64_Setup_NI.zip
- If you prefer to use the **Windows Package Manager**, SyncBackPro can be installed using **winget** or other package managers, e.g. **UniGetUI**. Note that for SyncBackPro and SyncBackSE only the 64-bit version that installs for **All Users** is available. For SyncBackFree it is only 32-bit and installs for **All Users**. To install SyncBackPro, for example, go to the command line and enter **winget install** **syncbackpro**
There are a number of parameters that can be passed to the installer, e.g. to silently install. See the [Installing](Installing.md) section for details.
If you choose to install only for the current user then it is important to note that SyncBack will [not run elevated](MiscellaneousElevate.md). This means some functionality cannot be used. Also, the [Scheduler Monitor Service](SchedulerMonitorService.md) will not be installed (services can only be installed by Windows administrators).
## 32-bit and 64-bit
64-bit versions of SyncBackPro and SyncBackSE were introduced in SyncBackPro/SE V8.
You should not have 32-bit and 64-bit versions installed at the same time. To switch from one version to another (e.g. 32-bit to 64-bit) you should export your profiles, uninstall the old version, install the new version and then import your profiles.
Be aware that there are [differences between the 32-bit and 64-bit versions](32bit64bit.md) due to how Windows itself acts differently.
---
# Uninstalling SyncBackPro
As with all Windows software, SyncBackPro can be uninstalled via Apps (in Settings) or via the Windows Control Panel in older versions of Windows. The exception to this is if you installed the program in a custom location, in which case you will have to find out where SyncBackPro is located. You can easily find this using the Windows search facility.
**Newer versions of** **SyncBackPro** **will prompt you, during the uninstall, if you want to delete your settings and profiles. However, if you are not using the latest version then uninstalling SyncBackPro may delete your profiles and settings.**
All versions of SyncBackPro can safely be installed over an existing installation. By doing this, you will ensure any profiles you have created continue to be active. The exception to this rule is if you are switching from [32-bit to 64-bit](32bit64bit.md) or vice versa.
Lastly, make sure that SyncBackPro is not running while you attempt to uninstall. Remember that SyncBackPro can be seen in the task bar on the lower right when active (you may need to click the little left pointing arrow to see the SyncBackPro icon). You may have also created a scheduled task which you will need to disable if uninstalling.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Legal Information and Trademarks
Please read the following legal documentation which presents 2BrightSparks Pte Ltd's policies on licensing and distribution.
[Distribution](Distribution.md)
[Privacy Statement](PrivacyStatement.md)
[General Terms](GeneralTerms.md)
[Translators](Credits.md)
## Trademarks
Amazon S3™ and Amazon Glacier™ are trademarks of Amazon.com, Inc.
Azure™, OneDrive™, Office 365™ and SharePoint™ are trademarks of Microsoft Corporation.
Backblaze B2™ is a trademark of Backblaze.
Box is a trademark or registered trademark of Box, Inc.
Dropbox™ is a trademark of Dropbox, Inc.
Egnyte™ is a trademark of Egnyte, Inc.
Google Drive™, Google Storage™ and Google Photos™ are trademarks of Google, Inc.
hubiC is a trademark or registered trademark of OVH group.
Microsoft® is a registered trademark of Microsoft Corporation.
OpenStack™ are trademarks of OpenStack Foundation.
OVH is a trademark or registered trademark of OVH group.
Rackspace™ is a trademark of Rackspace, Inc.
ShareFile™ is a trademark of Citrix, Inc.
SugarSync™ is a trademark of SugarSync, Inc.
Pushover is a trademark and product of Superblock, LLC.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Distribution
This Software Distribution Agreement (hereinafter referred to as "AGREEMENT") is a legal AGREEMENT between you, and 2BrightSparks Pte Ltd (hereinafter referred to as "AUTHOR") for distributing the computer software program entitled SyncBackPro (hereinafter referred to as "SOFTWARE").
This AGREEMENT describes the terms and conditions by which AUTHOR will license other parties to distribute the SOFTWARE which is intended solely for distribution as SHAREWARE. No use, distribution or reproduction of the SOFTWARE or copies of the SOFTWARE is authorized except in compliance with the terms and conditions herein. Distribution of the SOFTWARE in accordance with the provisions of this Software Licence Agreement is encouraged.
You should carefully read the following terms and conditions before distributing this SOFTWARE. Unless you have a different licence AGREEMENT signed by AUTHOR, your use of this SOFTWARE indicated your acceptance of this licence AGREEMENT.
By copying or distributing this SOFTWARE, you agree to be bound by the terms and conditions of this AGREEMENT as well as those of the "Software Licence Agreement".
**GENERAL DEFINITIONS**
As stated, the SOFTWARE is marketed as SHAREWARE.
**Definition of Shareware**
Shareware distribution gives users a chance to try software before buying it. If you try a Shareware program and continue using it, you are required to register it (or purchase the Licensed version).
Copyright laws apply to both Shareware and retail software, and the copyright holder retains all rights, with a few specific exceptions as stated below. The author specifically grants the right to copy and distribute the software, either to all and sundry or to a specific group.
Shareware is a distribution method, not a type of software.
**GENERAL TERMS AND CONDITIONS**
• AUTHOR shall be credited as the owner of the SOFTWARE in all distribution of the SOFTWARE. AUTHOR is the exclusive world-wide licenser of the SOFTWARE, and the copyrights and other proprietary rights therein. The SOFTWARE is intended solely for distribution as SHAREWARE (i.e., try-before-you-buy software); it is not public domain or free software or freeware.
• The SOFTWARE shall be identified by name and shall be identified as SHAREWARE in all distribution.
• You may copy and/or distribute the SOFTWARE only in its original, unaltered form, with all files included unmodified, and without making any additions, modifications or deletions except as provided in this paragraph. You may not modify the SOFTWARE or any of its files, and the SOFTWARE must be distributed as a complete package. You may not change, delete, merge or rename any files or elements of the SOFTWARE in any manner, and you may not add any files or new elements (except for installation routines which do not interfere with the proper operation or installation of the SOFTWARE).
• Since the SOFTWARE is intended for distribution only as SHAREWARE, you shall not charge any fee or other compensation for the SOFTWARE, although you may charge a distribution fee for costs associated with distributing the SOFTWARE. You are permitted, and encouraged, to make and distribute copies of the SOFTWARE to your friends, family members and co-workers for your and their private non-commercial use, in compliance with the terms and conditions hereof.
• You recognize that your right to distribute the SOFTWARE is nonexclusive and that AUTHOR can terminate the license granted to you at any time for any reason upon notice. AUTHOR reserves the right to withhold or withdraw permission to distribute the SOFTWARE from anyone at any time for any reason. The other provisions hereof shall survive any expiration or termination of this AGREEMENT.
• You shall take reasonable steps to ensure that the SOFTWARE and any other software, documentation and other materials distributed with the SOFTWARE are free from viruses.
• You may not use, copy, modify, distribute or transfer the SOFTWARE or any element thereof in whole or in part, except as expressly provided for herein.
• You may not rent or lease the SOFTWARE to anyone.
• AUTHOR reserves the right to update the contents of the SOFTWARE and its associated files, documentation and/or other elements, at its discretion from time to time, without the consent of, or any obligation to, any licensed users or distributors.
• You will hold AUTHOR, family members, distributors, licensees, sub-licensees and lawyers harmless from and against any and all claims, actions, damages, losses, liabilities, costs and expenses arising directly or indirectly from your acts and omissions in copying and distributing the SOFTWARE.
• If any provision of this AGREEMENT is held to be void, invalid or unenforceable, it will not affect the validity of the balance of this AGREEMENT, which shall remain valid and enforceable according to its terms and conditions.
• This agreement shall be governed by the laws of the United Kingdom.
**SPECIAL TERMS AND CONDITIONS**
• Distribution by BBS, on-line Services, FTP, FSP, News, WWW, Satellite, Other File Transfer Protocols: The SOFTWARE and associated files may be copied, used and posted without charge and permission as long as the "General Terms and Conditions" set forth above are complied with.
• Distribution on Floppy Disk / CD-ROM / DVD / Other Disk Types in a non-retail environment: The SOFTWARE and associated files may be copied, and used and posted without charge and permission as long as the "General Terms and Conditions" set forth above are complied with.
• Distribution on Floppy Disk / CD-ROM / DVD / Other Disk Types by Anonymous access FTP/WWW Shareware Archives: The SOFTWARE and associated files may be copied, used and posted without charge and permission as long as the "General Terms and Conditions" set forth above are complied with.
• Distribution on Magazine Companion Disk / CD-ROM / Other Disk Types: The program and associated files may be copied, used and posted without charge and permission as long as the "General Terms and Conditions" set forth above are complied with. We would greatly appreciate if you would inform 2BrightSparks about any review(s) you write about the SOFTWARE. Thanks.
• Distribution in a Retail Environment, Book Companion Disk / CD-ROM / Other Disk Types (Book): You may not distribute the program without obtaining explicit permission from AUTHOR.
• Other (e.g. Retail not covered above) CD-ROM Shareware Distribution: You may not distribute the program without obtaining explicit permission from AUTHOR.
• Internet Providers Disk / CD-ROM / Demo Disks / Connection Kits / etc.: You may distribute this SOFTWARE on your disk/CD only as bundled shareware with other programs without charge and permission as long as the "General Terms and Conditions" set forth above are complied with. If you intend to provide the program for your own diagnostic purposes then you may not distribute the program without obtaining explicit permission from the AUTHOR.
• Software/Hardware Manufacturers & Suppliers: You may not distribute the program pre-installed or otherwise on the machines you manufacture/distribute/etc. or bundled with your own products without obtaining explicit permission from AUTHOR.
• Other Type of Distribution: Please contact AUTHOR for details.
BY DISTRIBUTING THE SOFTWARE YOU ACKNOWLEDGE THAT YOU HAVE READ AND UNDERSTOOD THIS AGREEMENT AND YOU AGREE TO BE BOUND BY THIS AGREEMENT'S TERMS AND CONDITIONS. YOU ALSO AGREE THAT THIS AGREEMENT IS THE COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND LIABILITIES OF THE PARTIES AND SUPERSEDES ALL PROPOSALS OR PRIOR AGREEMENTS, ORAL OR WRITTEN AND ANY OTHER COMMUNICATION BETWEEN THE PARTIES RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Privacy Statement
Our **Privacy Statement** is available online at https://www.2brightsparks.com/privacy.html
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# General Terms
## Products, Services, and Conditions of Use
You should carefully read the following Terms and Conditions before using our software products. Unless you have a different license agreement signed by 2BrightSparks, your use of our software indicates your acceptance of this license agreement and warranty.
Use of all software available from 2BrightSparks (hereinafter 'SOFTWARE') is contingent on your agreement our software licensing terms found on this web page.
We also provide a detail description of our Support Policy which applies to all software produced by 2BrightSparks Pte Ltd.
As part of our service, we agree to provide you with software, information, and other services that we may decide to offer, subject to the terms of this agreement. Upon notice published through the service, we may modify this agreement at any time. You agree and continue to agree to use our products and services in a manner consistent with all applicable laws and regulations and in accordance with the terms and conditions set out in the policies and guidelines outlined below. Please note that you will be referred to as 'customer' in this agreement.
## Rules For Online Conduct
By using the service, you agree that you will not attempt to undermine the integrity of this web site.
## Limitation Of Liability And Warranty
## The customer agrees that use of the services and products provided by 2BrightSparks is entirely at the customer's own risk. Services and products are provided 'as is,' without warranty of any kind, either express or implied, including without limitation any warranty for information, services, uninterrupted access, or products provided through or in connection with the service, including without limitation the software licensed to the customer and the results obtained through the service. Specifically, we disclaim any and all warranties, including without limitation: 1) any warranties concerning the availability, accuracy or content of information, products or services; and 2) any warranties of title or warranties of merchantability or fitness for a particular purpose.
This disclaimer of liability applies to any damages or injury caused by any failure of performance, error, omission, interruption, deletion, defect, delay in operation or transmission, computer virus, communication line failure, theft or destruction or unauthorized access to, alteration of, or use of record, whether for breach of contract, tortious behavior, negligence, or under any other cause of action. Customer specifically acknowledges the service is not liable for the defamatory, offensive or illegal conduct of other customers or third-parties and that the risk of injury from the foregoing rests entirely with customer.
Neither the software, products or services delivered by 2BrightSparks, nor any of its agents, affiliates or content providers shall be liable for any direct, indirect, incidental, special or consequential damages arising out of use of it or inability to gain access to or use the software or out of any breach of any warranty. Customer hereby acknowledges that the provisions of this section shall apply to all content on the service.
## Governing Law
This agreement shall be governed by the laws of Singapore.
## Trademarks
All trademarks appearing on the service are trademarks of their respective owners.
## Modification
2BrightSparks reserves the right, at its discretion, to revise these Terms and Conditions at any time and without prior notice, and such revision shall be effective immediately upon the posting of the revised Terms and Conditions at this website (http://www.2brightsparks.com).
## Commercial Licensing Terms and Conditions
When used in a commercial setting, a separate license must be purchased for each installation of the program. Installing the program on a server, or on a single workstation used non-simultaneously by multiple people, counts as one installation.
You are advised to revisit this page periodically as we reserve the right to change these terms and conditions at any time and without notification.
## CONDITIONS OF USE
You agree and continue to agree to use our software in a manner consistent with all applicable laws and regulations and in accordance with the terms and conditions set out in the policies and guidelines outlined below.
Please note that you will be referred to as 'customer' in this agreement.
## SOFTWARE LICENSE AGREEMENT
Use of all software available from 2BrightSparks Pte Ltd, including (but not limited to) SyncBackFree, SyncBackLite, SyncBackSE, SyncBackPro, SyncBack Touch, SyncBack Management Service (SBMS) or OnClick Utilities (hereinafter 'SOFTWARE') is contingent on your agreement to the following terms:
You should carefully read the following Terms and Conditions before using SOFTWARE provided by 2BrightSparks. Unless you have a different license agreement signed by 2BrightSparks Pte Ltd, your use of our software indicates your acceptance of this license agreement.
## LIMITATION OF LIABILITY
The use of all software available from 2BrightSparks Pte Ltd ('SOFTWARE') is contingent on your agreement to the following Limitation of Liability:
SOFTWARE is provided as is, and without warranty of any kind. To the maximum extent permitted by applicable law, 2BrightSparks Pte Ltd its suppliers, its distributors, and its affiliates, or others who may offer SOFTWARE, will not be liable for any damages whatsoever, whether direct or indirect, special, incidental, consequential, or punitive of any kind (including but not limited to damages for: loss of profits, loss of confidential or other information, business interruption, personal injury, loss of privacy, failure to meet any duty - including of good faith or of reasonable care - negligence, and any other pecuniary or other loss whatsoever) arising out of, or in any way related to the use of, or inability to use our SOFTWARE or support services, or the provision of or failure to provide support services, or otherwise under, or in connection with SOFTWARE documentation, or any provision of these terms and conditions, even if 2BrightSparks Pte Ltd or any supplier, distributor, or its affiliates has been advised of the possibility of such damages.
The Limitations on, and Exclusions of liability for damages in this agreement apply regardless of whether liability is based on breach of contract, tort (including negligence), delict, strict liability, breach of warranties or conditions, or any other legal theory. 2BrightSparks Pte Ltd furthermore disclaims all warranties, including without limitation any implied warranties of merchantability, fitness for a particular purpose, and on infringement.
The entire risk arising out of the use or performance of the SOFTWARE and documentation remains with the recipient. To the maximum extent permitted by applicable law, in no event shall 2BrightSparks Pte Ltd be liable for any consequential, incidental, direct, indirect, special, punitive, or other damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of this agreement or the use of or inability to use the product, even if 2BrightSparks Pte Ltd has been advised of the possibility of such damages.
The SOFTWARE and the accompanying files are sold "as is" and without warranties as to performance or merchantability or any other warranties whether expressed or implied. Because of the various hardware and software environments into which SOFTWARE may be put, no warranty of fitness for a particular purpose is offered.
Good data processing procedure dictates that any program be thoroughly tested with non-critical data before relying on it. The user must assume the entire risk of using the SOFTWARE. Any liability of the seller will be limited exclusively to product replacement or refund of purchase price.
## OWNERSHIP
You may not reverse engineer, decompile or disassemble the SOFTWARE. 2BrightSparks Pte Ltd shall retain title and all ownership rights to the SOFTWARE.
## COPYRIGHT
This SOFTWARE is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties.
## MAINTENANCE
2BrightSparks Pte Ltd is not obligated to provide support, maintenance, or updates for the SOFTWARE (either by email, phone, or otherwise). However, any maintenance or updates provided by 2BrightSparks Pte Ltd shall be covered by this Agreement.
## SOFTWARE USAGE AGREEMENT
One registered copy of SyncBackPro or SyncBackSE may be used by a single person who uses the software personally on up to 5 computers to process personal data (home use). One registered copy of SyncBackLite may be used by a single person who uses the software personally on up to 2 computers to process personal data (home use). When used to process non-personal data (e.g. the workplace, but including processing non-personal data on a personal computer), or the SOFTWARE is not SyncBackPro, SyncBackSE, or SyncBackLite, a separate license must be purchased for each installation of the program. Installing the program on a server, or on a single workstation used non-simultaneously by multiple people, counts as one installation.
In a commercial setting you may access the registered version of the SOFTWARE through a network, provided that you have obtained individual licenses for the SOFTWARE covering all workstations that will access the software through the network. For instance, if 4 different workstations access the SOFTWARE on the network, each workstation must have its own SOFTWARE license, regardless of whether they use the SOFTWARE at different times or concurrently.
## RETURNS POLICY
Before purchasing software from 2BrightSparks Pte Ltd, you are strongly encouraged to 'test drive' it using the evaluation version. In the event you encounter a problem with the product, contact our support department for assistance. You may do this by submitting a Support Ticket in our Support Area at:
https://help.2brightsparks.com/
After your purchase, refunds will only be given at the discretion of the Company Management.
## EVALUATION AND REGISTRATION
Subject to the terms of this agreement, you are hereby licensed to use the SOFTWARE for evaluation purposes without charge. The evaluation version of the SOFTWARE has limitations and reminders that the SOFTWARE is in use. For a full-featured, unrestricted version, a registration fee is required. Upon payment you will be sent an email that will provide the Serial Number to unlock the SOFTWARE.
## DISTRIBUTION AGREEMENT
This Software Distribution Agreement (hereinafter referred to as "AGREEMENT") is a legal AGREEMENT between you, and 2BrightSparks Pte Ltd (hereinafter referred to as "AUTHOR") for distributing the computer software programs entitled SyncBackFree, SyncBackLite, SyncBackSE, SyncBackPro, SyncBack Touch, SyncBack Management Service (SBMS) and OnClick Utilities (hereinafter referred to as "SOFTWARE").
This AGREEMENT describes the terms and conditions by which AUTHOR will license other parties to distribute the SOFTWARE which is intended solely for distribution as commercial software. No use, distribution or reproduction of the SOFTWARE or copies of the SOFTWARE is authorised except in compliance with the terms and conditions herein. Distribution of the SOFTWARE in accordance with the provisions of this Software Licence Agreement is encouraged.
You should carefully read the following terms and conditions before distributing this SOFTWARE. Unless you have a different licence AGREEMENT signed by AUTHOR, your use of this SOFTWARE indicated your acceptance of this licence AGREEMENT.
By copying or distributing this SOFTWARE, you agree to be bound by the terms and conditions of this AGREEMENT as well as those of the "Software Licence Agreement".
We distribute our commercial software as a trial version so that users have a chance to evaluate the software before buying it. If the program is used past the trial expiration date you are required to purchase the Licensed version.
Copyright laws apply to both Shareware and retail software, and the copyright holder retains all rights, with a few specific exceptions as stated below. The author specifically grants the right to copy and distribute the software, either to all and sundry or to a specific group.
## GENERAL TERMS AND CONDITIONS
• AUTHOR shall be credited as the owner of the SOFTWARE in all distribution of the SOFTWARE. AUTHOR is the exclusive world-wide licenser of the SOFTWARE, and the copyrights and other proprietary rights therein. The SOFTWARE is intended solely for distribution as try-before-you-buy software; it is not public domain or free software or freeware.
• The SOFTWARE shall be identified by name and shall be identified as SHAREWARE in all distribution.
• You may copy and/or distribute the SOFTWARE only in its original, unaltered form, with all files included unmodified, and without making any additions, modifications or deletions except as provided in this paragraph. You may not modify the SOFTWARE or any of its files, and the SOFTWARE must be distributed as a complete package. You may not change, delete, merge or rename any files or elements of the SOFTWARE in any manner, and you may not add any files or new elements (except for installation routines which do not interfere with the proper operation or installation of the SOFTWARE).
• Since the SOFTWARE is intended for distribution only as SHAREWARE, you shall not charge any fee or other compensation for the SOFTWARE, although you may charge a distribution fee for costs associated with distributing the SOFTWARE. You are permitted, and encouraged, to make and distribute copies of the SOFTWARE to your friends, family members and co-workers for your and their private non-commercial use, in compliance with the terms and conditions hereof.
• You recognise that your right to distribute the SOFTWARE is nonexclusive and that AUTHOR can terminate the license granted to you at any time for any reason upon notice. AUTHOR reserves the right to withhold or withdraw permission to distribute the SOFTWARE from anyone at any time for any reason. The other provisions hereof shall survive any expiration or termination of this AGREEMENT.
• You shall take reasonable steps to ensure that the SOFTWARE and any other software, documentation and other materials distributed with the SOFTWARE are free from viruses.
• You may not use, copy, modify, distribute or transfer the SOFTWARE or any element thereof in whole or in part, except as expressly provided for herein.
• You may not rent or lease the SOFTWARE to anyone.
• AUTHOR reserves the right to update the contents of the SOFTWARE and its associated files, documentation and/or other elements, at its discretion from time to time, without the consent of, or any obligation to, any licensed users or distributors.
• You will hold AUTHOR, family members, distributors, licensees, sub-licensees and lawyers harmless from and against any and all claims, actions, damages, losses, liabilities, costs and expenses arising directly or indirectly from your acts and omissions in copying and distributing the SOFTWARE.
• If any provision of this AGREEMENT is held to be void, invalid or unenforceable, it will not affect the validity of the balance of this AGREEMENT, which shall remain valid and enforceable according to its terms and conditions.
• This agreement shall be governed by the laws of the Singapore.
## SPECIAL TERMS AND CONDITIONS
• Distribution by BBS, on-line Services, FTP, FSP, News, WWW, Satellite, Other File Transfer Protocols: The SOFTWARE and associated files may be copied, used and posted without charge and permission as long as the "General Terms and Conditions" set forth above are complied with.
• Distribution on Floppy Disk / CD-ROM / DVD / Other Disk Types in a non-retail environment: The SOFTWARE and associated files may be copied, and used and posted without charge and permission as long as the "General Terms and Conditions" set forth above are complied with.
• Distribution on Floppy Disk / CD-ROM / DVD / Other Disk Types by Anonymous access FTP/WWW Shareware Archives: The SOFTWARE and associated files may be copied, used and posted without charge and permission as long as the "General Terms and Conditions" set forth above are complied with.
• Distribution on Magazine Companion Disk / CD-ROM / Other Disk Types: The program and associated files may be copied, used and posted without charge and permission as long as the "General Terms and Conditions" set forth above are complied with. We would greatly appreciate if you would contact us about any review(s) you write about the SOFTWARE at http://www.2brightsparks.com/contact.html
• Distribution in a Retail Environment, Book Companion Disk / CD-ROM / Other Disk Types (Book): You may not distribute the program without obtaining explicit permission from AUTHOR.
• Other (e.g. Retail not covered above) CD-ROM SOFTWARE Distribution: You may not distribute the program without obtaining explicit permission from AUTHOR.
• Internet Providers Disk / CD-ROM / Demo Disks / Connection Kits / etc.: You may distribute this SOFTWARE on your disk/CD only as bundled SOFTWARE with other programs without charge and permission as long as the "General Terms and Conditions" set forth above are complied with. If you intend to provide the program for your own diagnostic purposes then you may not distribute the program without obtaining explicit permission from the AUTHOR.
• Software/Hardware Manufacturers & Suppliers: You may not distribute the program pre-installed or otherwise on the machines you manufacture/distribute/etc. or bundled with your own products without obtaining explicit permission from AUTHOR.
• Other Type of Distribution: Please contact AUTHOR for details.
BY DISTRIBUTING THE SOFTWARE YOU ACKNOWLEDGE THAT YOU HAVE READ AND UNDERSTOOD THIS AGREEMENT AND YOU AGREE TO BE BOUND BY THIS AGREEMENT'S TERMS AND CONDITIONS. YOU ALSO AGREE THAT THIS AGREEMENT IS THE COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND LIABILITIES OF THE PARTIES AND SUPERSEDES ALL PROPOSALS OR PRIOR AGREEMENTS, ORAL OR WRITTEN AND ANY OTHER COMMUNICATION BETWEEN THE PARTIES RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.
## Freeware Licensing Terms and Conditions
2BrightSparks grants you a limited non-exclusive license to use FREEWARE downloadable from 2BrightSparks for personal, educational, charity, and commercial use, and donations are entirely optional. This includes SyncBackFree and InfoHesiveEP.
If you are using the SOFTWARE free of charge under the terms of this Agreement, you are not entitled to support although we will respond to support requests if they relate to any SOFTWARE that is not performing its task correctly (bugs etc).
Our Freeware is licensed to you in accordance with the terms and conditions of this Agreement. You represent and warrant that you will not violate any of the requirements of this Agreement and further represent and warrant that:
• You will not, and will not permit others to:
(i) reverse engineer, decompile, disassemble, derive the source code of, modify, or create derivative works from our Freeware, or
(ii) copy, distribute, publicly display, or publicly perform content contained in this Freeware other than as expressly authorized by this Agreement.
• You will not use our Freeware to engage in or allow others to engage in any illegal activity.
• You will not engage in using our Freeware that will interfere with or damage the operation of the services of any third parties by overburdening/disabling network resources through automated queries, excessive usage or similar conduct.
• You will not sell our Freeware or charge others for use of it (either for profit or merely to recover your media and distribution costs) whether as a stand-alone product, or as part of a compilation or anthology, without explicit prior written permission.
• You will not use our Freeware to engage in any activity that will violate the rights of third parties, including, without limitation, through the use, public display, public performance, reproduction, distribution, or modification of communications or materials that infringe copyrights, trademarks, publicity rights, privacy rights, other proprietary rights, or rights against defamation of third parties.
• You may not claim any sponsorship by, endorsement by, or affiliation with our company.
## Freeware Limitation of Liability
Please read the LIMITATION OF LIABILITY above which applies to Freeware and Commercial software provided by 2BrightSparks.
**2BrightSparks Pte Ltd**
**https://www.2brightsparks.com**
**Last Modified: 24th February 2025**
---
# Translators
Over the years, SyncBack has been translated into a number of other languages thanks to the following individuals:
- Armenian translation by Hrant Ohanyan
- Catalan translation by Jordi Rodellar Fustero
- Chinese (Simplified) translation by W. Jordan (Zuo Weiming)
- Chinese (Traditional) translation by Ming-Yuan Lee, Larry Ho and Danfong Hsieh
- Czech translation by Gerhard Svec and Vlamo
- Danish translation by Mads Andersen
- Dutch translation by René Diepenbroek, Gerard Entius and Hans Fraiponts
- Finnish translation by Sami Hurmerinta and Jarkko Mäkineva
- French translation by Pascal Thirion and Philippe Septier
- German translation by Sascha Brathe (Brathe IT (B-IT)) and Stefan Aicher
- Greek translation by Kostas Basileioy
- Hungarian translation by Öreg Róbert and Jozsef Tamas Herczeg
- Italian translation by Roberto Boriotti, Massimo Pedrazzoli and Roberto Lodigiani
- Japanese translation by Kawai & Tsu_Kun
- Korean translation by Jongun Ha
- Norwegian translation by Kjetil Birkeland Moe
- Polish translation by Andrzej KRK, Lukasz Puzon Brodowski and Grzegorz Miros
- Portuguese (Brazilian) translation by Walter Tabacniks and Edson Wunderlich
- Romanian translation by Cătălin Truţă
- Russian translation by Evgeny Badalian and Igor Pavlov
- Spanish (Argentinean) translation by Gustavo Santiago
- Swedish translation by Peter Larsen and Linus Rörstad
- Turkish translation by Ekmel Kutukcu
- Ukrainian translation by Ambartsumyan Eduard
All of the translations have also been updated using Artificial Intelligence.
If you'd like to contribute to the translations, visit https://www.2brightsparks.com/syncback/translate/
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Glossary
**7-Zip**
7-Zip is an open-source file archiver with a high compression ratio. It uses its own 7z archive format and also supports other common formats including ZIP, TAR and GZIP. SyncBackSE/Pro can backup to and restore from 7-Zip archives (see also **Compression** and **Zip**).
**AES**
**Advanced Encryption Standard**
This is an encryption method used to secure communications or files. It is very hard to crack; to the extent that the U.S. Government use it for top secret documents.
**Alt Tag**
The alt tag is a label describing an image. It appears when the mouse is rolled over an image on a webpage (text within a small yellow window in Windows, white in Macs). It is particularly helpful for people who view pages in text-only mode and/or who have special software that converts the text to an audio equivalent.
**AFTP**
**Anonymous file transfer protocol**
Abbreviation: anonymous FTP; AFTP. A system for using the standard FTP without requiring a user ID or password (see also **FTP** and **SFTP**).
**Amazon S3**
**Amazon Simple Storage Service**
Amazon S3 is a cloud-based object storage service provided by Amazon Web Services (AWS). It stores data as objects within containers called buckets. SyncBackSE/Pro can use Amazon S3 as a source or destination for backup and synchronization profiles (see also **Bucket**).
**API**
**Application Programming Interface**
An API is a set of rules and protocols that allows different software applications to communicate with each other. Cloud storage services such as Amazon S3, Microsoft Azure and Google Drive provide APIs that SyncBackPro uses to transfer files.
**Anti-Virus**
**Anti-virus software**
Anti-virus software is used to scan files for possible rogue instructions (viruses) that may have been attached to them. These instructions, if run by an application, might perform unwanted actions.
**Applet**
Small Java programs that 'auto install' when browsing (given the browser has Java enabled). Applets are designed to run on any system. Unlike an application, applets cannot be executed directly from the operating system. Sun Microsystems certifies applets or applications written in 100% pure Java will run in all systems equipped with a Java Virtual Machine, not just in Microsoft Windows environments.
**ASCII**
**American Standard Code for Information Interchange**
ASCII is the standard method for encoding characters as 8-bit sequences of binary numbers, allowing a maximum of 256 characters. Text files are customarily called 'ASCII files'. ASCII also includes control characters such as carriage return and tab (see also Unicode).
**ASP**
**Active Server Pages**
ASP stands for Active Server Pages. A blend of traditional HTML and database server language. When a server accesses an active content page, the requested page is passed through the database server where the code is processed, and a new HTML page is generated. This page is then returned to the regular web server and sent on to the user.
**Attachment**
A file which is 'attached' and sent as part of an e-mail message, e.g. much in the same way as one would attach a photo to a written letter with a paper clip.
**Attribute**
**Read-only attribute**
Describes a file that may only be read and not changed, e.g. a files on a CD-ROM are by default read-only. This attribute can be assigned to most files or folders. A read-only file or folder cannot be modified or deleted, but a read-only folder may have its contents modified or deleted. If the device (e.g. CDROM) is not read-only in nature (e.g. a hard disk drive) then the read-only attribute may be removed to make the file or folder writeable if desired.
**Archive attribute**
The file has been marked by the operating system as an archive file. Applications or the operating system use this attribute to mark files ready for backup or removal. Every time a file is changed, or created, the file is marked with the archive attribute.
**Hidden attribute**
The file is hidden. It is not included in an ordinary directory listing. The hidden attribute is typically given to important operating system files, the reason being that they don’t normally need to be seen or changed by the user.
**System attribute**
The file is part of the operating system or is used exclusively by it. As with the hidden attribute, this is typically given to important operating system files.
**Temporary attribute**
The file is being used for temporary storage.
**Offline attribute**
The data of the file is not immediately available. This attribute indicates that the file data has been physically moved to offline storage, e.g. tape, CD or DVD storage.
**Not indexed attribute (not content indexed)**
The file will not be indexed by the Windows content indexing service.
**Encrypted attribute**
A Microsoft file-based encryption technology that enables users to encrypt files and folders on NTFS-formatted volumes. EFS helps protect the confidentiality of data by ensuring that only authorized users can decrypt the encrypted files or folders.
**Compressed attribute**
This attribute denotes that the file has been compressed by the operating system to make it generally much smaller than the original size. Supported by NTFS volumes (Windows NT and newer). The benefits are the saving of disk space and under certain conditions, increased speed of access.
**Creation date attribute**
This attribute specifies the original creation date and time of file or folder. When the file or folder is created / newly made, creation date and time are recorded in file system.
**Last modified date attribute**
Indicates at the file system level when the last time the file or folder was modified. When the file’s contents are modified or saved, the last modified date and time stamp is set to correspond with the time of those changes.
**Last accessed date attribute**
Indicates at the file system level when a file was last accessed. If the file is only opened for viewing, copying, moving, etc., the last accessed date is changed to when the operation took place.
**AVI**
**Audio Video Interleave**
AVI is a common format on the Internet for movies and videos (typically Windows based). Contrary to popular belief, an AVI file is simply a container for any number of different video formats (see also **MPG**).
**Background Backup (SyncBack/SE/Pro)**
The process of running a backup profile in the background, i.e. without user-intervention. Running profiles in the background is similar to running profiles via the Windows Task Scheduler, except SyncBack must be running for them to run. Also background profiles typically run much more frequently than scheduled tasks, e.g. every 30 minutes.
**Backup**
A Backup is where files are copied one-way from the Source to the Destination. The backup process prohibits files being copied the other way round (see also **Mirror** and **Synchronize**).
**Backblaze B2**
Backblaze B2 is an S3-compatible cloud storage service designed for backup and archival. SyncBackPro can use it as a source or destination via its S3-compatible API (see also **Amazon S3** and **Bucket**).
**Bandwidth**
This is the maximum amount of data which can be carried at a given time by your Internet connection. Generally, the larger the bandwidth, the quicker data the data will be received or sent. Example: ADSL Broadband has a higher bandwidth than an analog modem.
**BMP**
**Bitmap**
A type of lossless graphic file format used to save a digital image containing a color value for each pixel in a picture. It is a simpler format than a JPEG or GIF (see also **GIF**, **JPG** and **TIFF**).
**Boolean Search**
A Boolean search is one formed by joining simple terms in a logical way with "AND", "OR" and "NOT". Boolean terms can also be expressed in symbols like "-" instead of "minus" or "+" instead of "plus".
**Bug**
An unintentional programming error that causes a program or computer system to perform erratically, produce incorrect results, or crash.
**Bucket**
In cloud storage services such as Amazon S3 and Backblaze B2, a bucket is a container used to store objects (files). Each bucket has a globally unique name and serves as the top-level organizational unit for stored data.
**BWT**
**Burrows-Wheeler Transform**
A compression algorithm used in BZip2 (see **BZip2**, **Compression** and **Zip**).
**BZip2**
BZip2 is a compression technique. It compresses most files more effectively than more traditional GZip or Zip, but it is slower (see also **BWT**, **Compression** and **Zip**).
**C and C++**
These are both widely used computer programming languages.
**Cache**
A small area of fast memory provided to increase the effective speed of a large amount of slower memory. Your browser uses a 'cache' to store web pages and parts of web pages you have visited during a session. Instead of retrieving the page again from the Internet, your browser will get it faster from the cache.
**CAD**
**Computer aided design**
CAD is the process of using a computer to assist in the design process, usually by automating the production of drawings. CAD techniques are widely used in engineering and architecture.
**CGI**
**Common Gateway Interface**
CGI is the standard for running programs on a server from a Web page. Gateway programs,or scripts, are executable programs which can be run by themselves.
**CHMOD**
Originally from the UNIX world, CHMOD is used by FTP (File Transfer Protocol) programs for PC and Mac that allow the directory and file permissions to be changed over the Internet.
**Character Set**
The basic set of letters and symbols that a computer uses, or are included in a particular font.
**Compression**
Compression is the process of making a file smaller by using a complex algorithm of bit reduction (see also **BWT**, **BZip2** and **Zip**).
**Command Line**
A text-based interface for interacting with an operating system or application by typing commands. SyncBackPro provides command line support, allowing profiles to be run from a command prompt, batch file, or script without needing the graphical user interface.
**Cookie**
A cookie is a small data file that certain web sites write to your hard drive when you visit them with your browser. A cookie file can contain information such as a user ID that the site uses to track the pages you have visited. The only personal information a cookie can contain is information you supply yourself. A cookie can't read data off your hard disk or read cookie files created by other sites.
**CSS**
**Cascading Style Sheets**
Cascading Style Sheets (CSS) refers to a style 'language' used by web designers to define presentational aspects of a web document (typeface, background, text, link colors, margin controls, and the placement of objects on a web page).
**Database**
A collection of data that is organized so that its contents can easily be accessed, managed, and updated.
**Delphi**
Delphi is a programming language and software development environment. It is produced by Embarcadero (formerly CodeGear, formerly Inprise, and originally Borland). The Delphi language, formerly known as Object Pascal (Pascal with object-oriented extensions) originally targeted only Microsoft Windows, but now also builds native applications for Linux and the Microsoft .NET framework.
**Delta Copying**
Delta copying is a method of transferring only the changed portions of a file rather than the entire file. This significantly reduces the amount of data transferred, saving time and bandwidth, particularly for large files over slow or metered connections.
**Destination**
The Destination is where files and directories are copied to in a backup profile (they are copied from the Source). In a synchronize profile the destination can generically be thought of as the "right side".
**Differences Window (SyncBack products)**
During a profile run, the Differences Window shows what will happen to files (whether they will be copied, deleted, or moved). For example, it will show you how many “collisions” have occurred. A collision is when a file in the source and destination differ but have the same name. In other words, the file is in both the source and destination but is modified in some way, perhaps by date, size etc. The differences window will help you decide what course of action to take based upon these results.
**Differential Backup**
Differential backups include backing up all files that have changed since the last full backup. Hence to restore all your data, all you would need are the last full and differential backups. The difference between differential and incremental backups is that incremental backups include only the files that have changed since the last full or incremental backup (see also [Incremental Backup](Glossary.md#incremental)). In SyncBackPro, differential backups are possible using [Fast Backup](FastBackup.md) profiles.
**Directory (another name for Folder)**
In computing, a directory, catalog, or folder, is an entity in a file system which contains a group of files and other directories. A typical file system contains thousands of files, and directories help organize them by keeping related files together. A directory contained inside another directory is called a subdirectory (or sub-folder) of that directory. Together, the directories form a hierarchy, or tree structure.
**DLL**
**Dynamic Link Library**
DLL files are a method for storing a program’s components in separate files to the main program. DLL files typically have the extension .DLL and cannot be launched directly.
**DNS**
**Domain Name System**
When you type in a website address (e.g. www.2brightsparks.com) into your browser, a domain name server (typically at your ISP) translates this into a numerical address, known as an IP Address, so your request can be routed to the correct site.
**Domain**
**Internet Domain**
An Internet Domain A 'logical' region of the Internet. People sometimes refer to them loosely as 'sites. Generally, a domain corresponds to one or more IP addresses or an area on a host. A domain is organized in levels. The top level identifies geographic or purpose commonality. The second level identifies a unique place within the top level domain and is, in fact, equivalent to a unique address on the Internet (an IP address).
**Windows Domain**
In Windows NT and newer, a domain binds together a set of network resources (applications, printers, and so forth) for a group of users. The user only has to log in once to the domain to gain access to the resources, as opposed to having to authenticate to each one.
**Download**
Downloading is typically the transfer of data from the Internet down to a computer. A download in its widest definition is the calling up of web pages from a browser. The more usual and focused use for the term download is when a user requests a file from a location on the Internet and makes a copy of that file onto their own computer (see also **Upload**).
**Dropbox**
Dropbox is a cloud-based file hosting and synchronization service. SyncBackPro can use Dropbox as a source or destination for backup and synchronization profiles.
**Encryption**
Encryption is a process whereby information is scrambled so no unauthorized person can access it (see also **EFS** and **TrueCrypt**).
**EFS**
**Encrypting File System**
The Encrypting File System (EFS) is a file system driver that provides filesystem-level encryption in Microsoft Windows (2000 and later) operating systems, except Windows XP Home Edition, Windows Vista Basic, and Windows Vista Home Premium. The technology enables files to be transparently encrypted on NTFS file systems to protect confidential data from attackers with physical access to the computer.
**Egnyte**
Egnyte is an enterprise cloud storage and file sharing platform. SyncBackPro can use Egnyte as a source or destination for backup and synchronization profiles.
**Ethernet**
Ethernet is one of the most popular standards for connecting PC's to form a local area network. It can be carried over a wide number of media, including copper, fiber-optics and wireless.
**Extension**
On computers using MSDOS or Windows, the last part of a filename, after a dot (period) is known as the extension These systems use the extension for indicating the type of information that the file contains. For example, the main program file for SyncBackPro is called SncBackPro.exe, the ‘exe’ indicating that it is an executable program. A file called ReadMe.txt is a text file.
**exFAT**
**Extended File Allocation Table**
exFAT is a file system introduced by Microsoft, optimized for flash memory such as USB drives and SD cards. It overcomes the 4 GB file size limitation of FAT32 while remaining compatible across Windows, macOS, and Linux (see also **FAT** and **FAT32**).
**FAQ**
**Frequently Asked Questions**
This is simply a compilation of frequently asked questions, the intention being that it should be the first port of call when a user is looking for answers to a problem.
**Fast Backup**
This is an option within SyncBackSE/Pro to greatly improve the performance of a backup profile by not scanning the destination first. This allows for other backup methods such as Incremental and Differential. It is recommended that the FAQ is read carefully before using this feature.
**FAT**
**File Allocation Table**
File Allocation Table (FAT, FAT12, FAT16 and FAT32) are file systems that were developed for MS-DOS and used in consumer versions of Microsoft Windows up to and including Windows 7. The FAT file system is considered relatively uncomplicated, and because of that, it is a popular format for floppy disks; moreover, it is supported by virtually all existing operating systems for personal computers, and because of that it is often used to share data between several operating systems booting on the same computer (a multi-boot environment). It is also used on removable memory cards and other similar devices. It is important to note that the different variants of FAT have their various limitations. For
example, the maximum file size you can store on a FAT system is 32MB, 2GB on FAT16 and 4GB on FAT32 (see also FAT32).
**FAT32**
This is the last in the line of Microsoft’s FAT file systems. In order to overcome the volume size limit of FAT while still allowing memory-constrained DOS real-mode code to handle the format, Microsoft decided to implement a newer generation of FAT, known as FAT32, with 32-bit cluster numbers, of which 28 bits are currently used.
**File Versioning**
See Versioning
**Firewall**
Firewalls are special devices, computers or computer programs that are installed on a network to prevent intruders from stealing files, snooping or disabling the host computer(s). In the home environment the firewall is usually a piece of software installed on the individual’s computer. In the corporate environment it is an ‘appliance’ type device that intercepts, blocks or allows, all data coming in and out of the whole organization.
**Folder (another name for Directory)**
A folder is a file container on a disk. Like a folder in a filing cabinet, you can store related files in the same folder to help organize your information.
**FTP**
**File Transfer Protocol**
The most widely-used method of downloading and uploading (getting and putting) files between two computers on the Internet. FTP is a simple network protocol based on Internet Protocol and also a term used when referring to the process of copying files when using FTP technology (see also **AFTP** and **SFTP**).
**FTPS**
**File Transfer Protocol Secure**
FTPS (also known as FTP Secure and FTP-SSL) is an extension to the commonly used File Transfer Protocol (**FTP**) that adds support for the Transport Layer Security (TLS) and the Secure Sockets Layer (SSL) cryptographic protocols. FTPS should not be confused with the SSH File Transfer Protocol (**SFTP**), an incompatible secure file transfer subsystem for the Secure Shell (SSH) protocol. It is also different from Secure FTP, the practice of tunneling FTP through an SSH connection. (see also **SFTP** and **FTP**).
**Full Backup**
A full backup copies all selected files from the source to the destination, regardless of whether they have changed since the last backup. It provides a complete standalone copy of the data. Full backups take longer and require more storage than incremental or differential backups but are simpler to restore from (see also [Differential Backup](Glossary.md#differential) and [Incremental Backup](Glossary.md#incremental)).
**GIF**
**Graphics Interchange Format**
A type of image file format. It is the most common way to compress and store images for transfer over the Internet. It supports animations and allows a separate palette of 256 colors for each frame. Color palette limitations makes the GIF format unsuitable for reproducing color photographs, but it is well-suited for simpler images such as graphics or logos with solid areas of color (see also **BMP** and **JPG** and **TIFF**).
**Google Drive**
Google Drive is a cloud-based file storage and synchronization service provided by Google. SyncBackPro can use Google Drive as a source or destination for backup and synchronization profiles.
**Google Photos**
Google Photos is a cloud-based photo and video storage service provided by Google.
**Group Profile**
In the SyncBack series of products, a Group Profile is a collection (set) of Profiles. They allow you to run a number of profiles in parallel or a specific order.
**Hash (as in CRC32 or MD5 value)**
A hash function is a process that converts an input from a (typically) large domain into an output in a (typically) smaller range (the hash value, often a subset of the integers). Hash functions vary in the domain of their inputs and the range of their outputs and in how patterns and similarities of input data affect output data. It is typically used in the verification of file provenance – e.g. as a checksum to detect accidental data corruption during a download.
**CRC**
A cyclic redundancy check (CRC) is a type of hash function used to produce a checksum, which is a small number of bits, from a large block of data, such as a packet of network traffic or a block of a computer file, in order to detect errors in transmission or storage. A CRC is computed and appended before transmission or storage, and verified afterwards to confirm that no changes occurred.
**MD5**
In cryptography, MD5 (Message-Digest algorithm 5) is a widely-used cryptographic hash function with a 128-bit hash value. As an Internet standard, MD5 has been employed in a wide variety of security applications, and is also commonly used to check the integrity of files.
**Hard Link**
A hard link is a directory entry that associates a name with a file on a file system. Multiple hard links to the same file can exist, meaning the file can be accessed using different names or paths. Unlike symbolic links, hard links refer directly to the file's data on disk and cannot span different volumes (see also **Symbolic Link** and **Junction Point**).
**Host**
1. A company that rents out space on the Internet to allow you to place web pages on it (see also Web Host)
2. The generic name for a computing device connected to a network, be it a LAN or the Internet.
**Hot-Key**
A Hot-Key is the name given to a keyboard shortcut (also known as an accelerator key, shortcut key, or hot-key). It comprises a set of keyboard keys that when pressed simultaneously, perform a predefined task. Such a task could be done with the mouse (or other analog input such as a trackball), but would require much longer. Hence, they are a shortcut in that they save the user time.
**HTML**
**Hypertext Mark-up Language**
HTML is the common language that lies behind most web sites and their pages found on the on the World Wide Web. It defines a set of standards that enable the author to format a page in a variety of different styles and appearances.
**HTTP**
**Hypertext Transfer Protocol**
This is the name given to the Internet protocol standard for defining the way computers transmit data on the Internet during a browser session. An exchange between your browser and web site will consist of an HTTP ‘conversation’ that finally results in you receiving and displaying web pages. Many Internet addresses begin http, for example: http://www.2brightsparks.com
**HTTPS**
**Hypertext Transfer Protocol Secure**
This protocol elevates HTTP to a secure level and is required for pages that require a SSL (secure sockets layer) connection.
**Hypertext**
A hypertext link is a special word or phrase in a web page that 'points' to another page. When clicked upon, you are taken to the page the link refers to, thus enabling navigation. Visually, links are typically underlined or contained within graphic elements.
**Icon**
A small image on the computer's display which represents some action or object.
**IMAP4**
**Internet Message Access Protocol**
This is an Internet protocol that defines and controls how emails are received by an email program from an email server that supports IMAP4. It is primarily used by users who don’t have permanent connections to their email server (delivery on demand). The ISP’s IMAP4 server receives and holds messages that have been sent to the user until their email program connects up and retrieves them (see also POP3 and SMTP).
**IP Address**
**Internet Protocol Address**
The 32-bit address defined by the Internet Protocol. Every resource on the Internet has a unique numerical IP address, represented in dotted decimal notation. IP addresses are the closest thing the Internet has to phone numbers. By calling that number you get connected to the computer that 'owns' that IP address (see also **IP**).
**Incremental Backup**
An Incremental Backup just backs up the data which has its Archive bit set, or has been changed since the last full or incremental backup (see also [Differential Backup](Glossary.md#differential)). In SyncBackPro, incremental backups are possible using [Fast Backup](FastBackup.md) profiles.
**InterNIC**
**Internet Information Centre**
InterNIC is the combined name for the regulatory body that provide registration, information, and database services to the Internet.
**Intranet**
A private network inside a company or organization that uses the same kinds of software and resources that you would find on the public Internet, but which is only for internal use.
**IP**
**Internet Protocol**
An industry standard, connectionless, best-effort packet switching protocol used as the network layer in the TCP/IP Protocol Suite. It has the task of delivering distinguished protocol datagrams (packets) from the source host to the destination host solely based on their addresses.
**ISO (file format)**
**International Organization for Standardization**
An ISO file is an archive file (also known as a disk image) of an optical disc such as a CD or DVD. The term ISO has been somewhat hijacked simply because the format is defined by the International Organization for Standardization (ISO). ISO image files typically have a file extension of .ISO.
**ISP**
**Internet Service Provider**
Primarily a company that gives you access to the Internet, but will normally offer other services such as email, website hosting and online databases.
**Jar**
**Java Archive**
A file format used to bundle all components required by a Java applet. JAR files simplify the downloading of applets since all components (.class files, images, sounds, etc.) can be packaged into a single file.
**Java**
A programming language developed by Sun Microsystems. Java is an object-oriented language similar to C++, but simplified to eliminate language features that cause common programming errors. Many websites rely upon the applications it produces, and whilst being a predominantly Internet-based language, it can also be found in devices such as mobile phones.
**Joliet**
Joliet is a file system extension designed by Microsoft for storing long filenames on optical media. It extends the previous standard (ISO9660 Level 1) which was only able to store filenames with 8.3 filenames (an 8 character filename followed by a 3 character extension).
**JVM**
**Java Virtual Machine**
A self-contained operating environment that behaves like a separate computer and is designed to minimize the effects of badly-behaved programs. For example, Java applets run in a Java virtual machine (JVM) that has no access to the host operating system.
**Java Bean**
JavaBeans are reusable software components for Java that can be manipulated visually in a programming tool.
**JavaScript**
Not to be confused or associated in any way with Java, JavaScript is a scripting language which is used to embed small programs such as pop-up windows into the HTML code of a webpage.
**JPG / JPEG**
**Joint Photographic Experts Group**
A standard type of image file commonly found on the Web. It uses a variable compression technique to reduce the size of the file and is especially suitable for photographic images (see also **BMP**, **GIF** and **TIFF**).
**JSON**
**JavaScript Object Notation**
JSON is a lightweight, text-based data interchange format. It is commonly used for configuration files and for transferring data between applications and web services.
**Junction Point (also called a Reparse Point)**
In computing, an NTFS junction point (JP) is a type of NTFS reparse point in the NTFS file system. It requires an NTFS 5.0 file system, which can be created (or converted from a FAT partition) under Windows 2000 or newer. It can be used in a similar way to symbolic links - allowing you to create a link to a folder that is, for most intents and purposes, the same as the folder itself. This has many benefits over a windows shortcut (.lnk) file, such as allowing you to access files within the shortcut via explorer, the console, etc.
**KB**
**Kilobyte**
A kilobyte is a unit of memory capacity equal to 1024 bytes. It isn't 1000 bytes as might be expected because computers tend to favor sizes that are a power of two (1024 is two to the power of 10).
**LAN**
**Local Area Network**
A LAN is a Local Area Network allowing several connected computers and/or peripherals to work together and share resources. The various devices are typically connected using a high speed link (10mb/s or greater) over cabled or wireless Ethernet.
**Locale**
A subset of a user's environment that defines conventions for a specified culture, such as time formatting, numeric formatting, monetary formatting, and character classification, conversion, and collation.
**Locked files**
A file becomes locked when an application opens it for writing. SyncBackSE/Pro is able to backup these files by utilizing Windows’ VSS (see also **VSS**).
**Log-in**
A user or program logs in by providing a user name and password to gain access to a restricted area of a network, web site or computer.
**Malware**
Software which is specifically designed to disrupt, damage, or gain authorized access to a computer system.
**MB**
**Megabyte**
A megabyte is a unit of memory capacity equal to 1,048,576 bytes. It isn't 1,000,000 bytes as might be expected because computers tend to favor sizes that are a power of two (1024 is two to the power of 10).
**Merchant**
The organization accepting credit card or other e-payments for the goods or services they provide.
**MDTM**
**MoDification TiMe [of a file]**
When communicating with an FTP server, this command returns the last-modified time of the given file. A few types of FTP server allow *setting* the last-modified time of a file using this command (see also **MFMT**).
**MFMT**
**MODIFY FACT: MODIFICATION TIME**
MFMT is a command used in FTP to modify the last modification time of a folder or file on the destination file system.
**MIME**
**Multipurpose Internet Mail Extensions**
An extension to the Simple Mail Transfer Protocol (SMTP) that allows different forms of data including video, audio, or binary data to attach to e-mail, without requiring translation into plain ASCII text.
**Microsoft Azure**
**Azure Blob Storage**
Microsoft Azure is a cloud computing platform that includes Azure Blob Storage, an object storage service for storing large amounts of unstructured data. SyncBackPro can use Azure Blob Storage as a source or destination for backup and synchronization profiles.
**Microsoft OneDrive**
Microsoft OneDrive is a cloud-based file hosting and synchronization service. SyncBackPro can use OneDrive as a source or destination for backup and synchronization profiles.
**Microsoft SharePoint**
Microsoft SharePoint is a web-based collaboration and document management platform. SyncBackPro can use SharePoint as a source or destination for backup and synchronization profiles.
**Mirroring**
Mirroring is the process whereby the source is copied in its entirety to the destination. During this process, extraneous files are also deleted from the destination until it is identical to the source.
**MLSD**
MLSD is a machine readable format for directory listings. MLST and MLSD are FTP commands intended to provide detailed, standardized directory listings across different server platforms.
**MODE Z Compression**
Mode Z compression compresses files-on-the-fly as they are being transferred from the local computer to the remote computer and remote to local, saving bandwidth and improving transfer time.
**MPG, MPEG**
**Motion Picture Experts Group**
MPG is a common video format for movies and videos, especially those on DVD. Any computer with DVD playing facilities will be able to play MPG files (see also **AVI**).
**MTP**
**Media Transfer Protocol**
MTP is a communication protocol used for transferring files to and from portable devices such as smartphones, tablets, and digital cameras. SyncBackPro can use MTP to backup files from connected mobile devices.
**NAS**
**Network Attached Storage**
A NAS device is a server that runs an operating system specifically designed for the storage and serving of files Network-attached storage is accessible directly on the network through protocols such as TCP/IP. Think of it as a dedicated Windows computer that serves little or no other role than to store and serve files (see also **Server**).
**NAT**
**Network Address Translation**
NAT is a technique that hides a private IP address behind a single IP address in another, often public address space. It is commonly used in home ADSL broadband routers for adding an extra layer of protection from the Internet.
**Network**
Two or more computers working together so they can exchange information with each other (see also **LAN**).
**Network Drive**
See **Share**
**NTFS**
**New Technology File System**
The NTFS File System is the standard file system of Windows NT and its descendants. Windows version 95, 98, 98SE and ME, cannot natively read NTFS file systems, although utilities do exist for this purpose. NTFS replaced Microsoft's previous FAT file system, used in MS-DOS and early versions of Windows. NTFS has several improvements over FAT such as improved support for meta-data and the use of advanced data structures to improve performance, reliability and disk space utilization plus additional extensions such as security access control lists and file system journaling.
**OAuth**
**Open Authorization**
OAuth is an open standard for token-based authentication and authorization. It allows applications like SyncBackPro to access cloud services such as Google Drive, OneDrive, and Dropbox on behalf of the user without requiring them to share their password directly (see also **Token**).
**OSP**
**Online Service Provider**
An OSP offers specific proprietary content in addition to the usual World Wide Web and Internet access, for example, AOL.
**Payment Service Provider**
A third party service provider directly linked with credit-card authorization network for the acceptance of credit cards and e-payments for orders placed online.
**PGP**
**Pretty Good Privacy**
Software that encrypts important information so it can be sent over the Internet securely. PGP offers strong encryption and is available free to home users.
**PDF**
**Portable Document Format**
Adobe® Portable Document Format (PDF) is the cross-platform standard for electronic document distribution worldwide. Adobe PDF is a universal file format that preserves all the fonts, formatting, graphics, and color of any source document, regardless of the application and platform used to create it.
**POP3**
**Post Office Protocol 3**
This is an Internet protocol that defines and controls how emails are received by an email program from a POP3 server. It is primarily used by users who don’t have permanent connections to their email server (delivery on demand). The ISP’s POP3 server receives and holds messages that have been sent to the user until their email program connects up and retrieves them (see also **IMAP4** and **SMTP**).
**Port**
In TCP/IP communications, devices communicate with each other over certain port numbers. Each side of a TCP connection has an associated 16-bit port number assigned by the sending or receiving application. For example, web pages are sent over port 80 (HTTP), FTP communications are sent over port 21.
**Profile (as in a SyncBack/SE/Pro profile)**
A Profile defines and stores information about the folders or files you would like to backup or synchronize using SyncBack/SE/Pro. Once you've created a Profile you'll be able to click a single button on the toolbar to carry out a specified task in the future. They can be edited to fine-tune any type of backup process.
**Protected Files**
Protected files are critical system files that are installed as part of Windows (for example, files with a .dll, .exe, .ocx, and .sys extension and some True Type fonts). Windows uses a system to verify if protected system files are the correct Microsoft versions. If a program tries to replace these files, Windows will restore the original ones.
**Protocol**
Protocol is the term used to describe the standard for communication between computers. If two computers have a protocol in common, then they should be able to communicate even if they are completely different. There are a range of standard protocols to cover the different types of communication application. For example: DNS (naming); FTP (file transfer); HTTP (World-Wide Web documents); NNTP (news); POP, SMTP (e-mail).
**Proxy Server**
A proxy server is a computer network service which allows clients to make indirect network connections to other network services. A client connects to the proxy server, then requests a connection, file, or other resource available on a different server. The proxy provides the resource, possibly by connecting to the specified server, or by serving it from a cache. In some cases, the proxy may alter the client's request or the server's response for various purposes. One of the benefits of such a scheme is in the speeding up of web content to the client.
**Public Domain**
If a work is in the 'public domain' it is generally freely distributable although at times companies may have rights over distribution.
**Public Key / Private Key**
In cryptography, a key pair consists of a public key and a private key. The public key can be shared freely, while the private key must be kept secret. They are used together for secure authentication and encryption, for example when connecting to an SFTP server using key-based authentication instead of a password (see also **SFTP** and **SSH**).
**Ransomware**
A type of malicious software designed to block access to a computer system until a sum of money is paid. See also **virus** and **malware**.
**Redirect URL**
A Web site address that when called redirects the user to a different URL. For example when a user enters www.bbc.com into their web browser they will be automatically redirected to www.bbc.co.uk
**ReFS**
**Resilient File System**
A new file system introduced by Microsoft with Windows Server 2012. It is based upon the NTFS file system but is not a replacement for it. ReFS is typically used to store large amounts of data, e.g. to be used with file or archive servers.
**Registry**
The Registry is a storage area in Windows that keeps a record of nearly every Windows setting you are able to change, plus all the user-invisible settings that it needs to keep track of the operating system itself. For example, your desktop settings, such as the screen saver, screen color and background image are all stored here so that when you log in to Windows these will be applied as per the settings you previously defined. It should not be manually
edited unless you are confident you know what you are doing.
**Regular Expression**
A regular expression (abbreviated as regexp, regex, or regxp, with plural forms regexps, regexes, or regexen) is a string that describes or matches a set of strings, according to certain syntax rules. Regular expressions are used by many text editors and utilities to search and manipulate bodies of text based on certain patterns.
**Relational Database**
A relational database is one whose structure is made up of numerous separate but linked tables. The key advantage of a relational database is that duplication of entries is significantly reduced or even eliminated, allowing for the efficient management of larger databases.
**Removable Media**
This is a type of storage device that may be physically inserted and removed from the computer, assuming the operating system allows it. Examples of this are: USB memory sticks, external hard drives, CDs, DVD’s or tapes. These can be especially useful if simple offsite backups are required.
**Reparse Point**
Reparse points provide a way to extend the NTFS file system by adding extra information to the directory entry, so a file system filter can interpret how the operating system will treat the data. This allows the creation of junction points and NTFS symbolic links. They also can act as hard links, but aren't limited to point to files on the same volume: they can point to directories on any local volume.
**Restore**
A Restore copies files from a previous backup on the Destination back to the Source, such as in the event of a file being accidentally deleted. It is the opposite of a Backup therefore no files are copied from the Source to the Destination.
**SAMBA**
Samba is a piece of free software that allows file and print sharing between computers running Windows and computers running UNIX. It is widely used on NAS servers to provide compatibility with Windows clients (see also **NAS**).
**SBMS**
**SyncBack Management Service**
SBMS is a centralized management tool that allows administrators to remotely configure, monitor, and manage SyncBackPro installations across multiple computers from a single location.
**Schedule (as in scheduling using Windows Task Scheduler)**
SyncBack/SE/Pro interfaces with the Windows Task Scheduler to allow you to run profiles automatically at certain times, e.g. run a backup profile every day at 5am. On Windows XP you can access the task scheduler via the Start menu (All Programs > Accessories > System Tools > Scheduled Tasks).
**Scripting**
Scripting is a method of automating or tailoring a process by means of a sequence of commands contained within a script file. SyncBackPro may be controlled in this way, negating the need for manual user input. This is particularly useful where repetitive tasks are called for, or functionality needs to be extended or changed.
**Secrets Manager**
The Secrets Manager in SyncBackPro is a feature that provides secure, encrypted storage for sensitive credentials such as passwords, encryption keys, and authentication tokens used by profiles.
**Secure Credit Card Transactions**
When goods are bought on the Internet, there are two main systems which are used to transfer credit card details securely: SSL (Secure Sockets Layer) and SET (Secure Electronic Transactions). These processes encrypt the transaction details in order for them to be sent securely over the internet and then decrypt them at the sales point.
**Share**
A network or file share is a resource on a computer network, typically allowing multiple computer users on the same network to have a centralized space on which to store files (documents, spreadsheets, etc) and share amongst each other.
**Server**
A server is a powerful, high-storage capacity computer or device on a network that contains and publishes resources, such as file shares and printers for users to utilize. Its only role is to serve and is not used as a traditional computer, thus keeping its responsiveness and availability high at all times.
**Servlet**
A servlet is an applet that runs on a server. The term usually refers to a Java applet that runs within a Web server environment. This is analogous to a Java applet that runs within a Web browser environment.
**SFTP**
**Secure File Transfer Protocol**
A secure version of FTP: the most widely-used method of downloading and uploading (getting and putting) files between two computers on the Internet. It makes use of the SSH protocol to secure the data (see also **FTP** and **FTPS**).
**SHA-1**
In cryptography, SHA-1 (Secure Hash Algorithm 1) is a cryptographic hash function which takes an input and produces a 160-bit (20-byte) hash value known as a message digest – typically rendered as a hexadecimal number, 40 digits long.
**SHA-2**
SHA-2 (Secure Hash Algorithm 2) is a set of cryptographic hash functions designed by the United States National Security Agency (NSA).[3] They are built using the Merkle–Damgård structure, from a one-way compression function itself built using the Davies–Meyer structure from a (classified) specialized block cipher. SHA-2 includes significant changes from its predecessor, SHA-1. The SHA-2 family consists of six hash functions with digests (hash values) that are 224, 256, 384 or 512 bits: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
**Shareware**
Shareware is software distributed on the basis of an honor system. Most shareware is delivered free of charge, but the author usually requests that you pay a fee if you like the program and use it regularly or after a specified trial period.
**Simulation**
A Simulation (also known as a simulated run) is a feature in SyncBackPro that allows you to preview what a profile will do without actually copying, moving, or deleting any files. It provides a risk-free way to verify that a profile is correctly configured before running it.
**S.M.A.R.T.**
**Self-Monitoring, Analysis, and Reporting Technology**
This technology is built in to many hard disk drives and if monitored by software, provides an early warning of impending failure, based upon various status indicators.
**Intelligent Synchronization**
SyncBackSE/Pro uses this method to copy files in both directions, whilst keeping a history of where files were during the last synchronization. This allows for much finer control over what actions to take based on what has changed, and also allows it to detect changes such as the file only being modified in the source or destination (see also **Synchronize**).
**SMTP**
**Simple Mail Transfer Protocol**
The Internet protocol responsible for specifying how two mail systems interact and the format of control messages they exchange to transfer mail. Most ISP's will have one of more SMTP servers that receive and forward emails from other SMTP servers around the world. From a home user point of view they send email using SMTP and receive it using POP3.
**Sparse file**
A file containing large sections of data composed only of zeros, which is marked as such in the NTFS. The file system saves disk space by only allocating as many ranges on disk as are required to completely reconstruct the non-zero data. When an attempt is made to read in the non-allocated portions of the file (also known as holes), the file system automatically returns zeros to the caller.
**SQL**
**Structured Query Language**
SQL Server is Microsoft's relational database management system (RDBMS). It uses a client/server model whereby the data access logic is executed on the server. This is as opposed to a file-based database like Microsoft Access where queries are executed on the user’s PC.
**SSH**
**Secure Shell**
SSH is a cryptographic network protocol for secure communication over an unsecured network. It is commonly used for remote command-line access and secure file transfers. SFTP (Secure File Transfer Protocol) operates over an SSH connection (see also **SFTP**).
**SSL**
**Secure Sockets Layer**
SSL is a process encrypts the channel between a Web browser and Web server to ensure the privacy and reliability of data. It is used extensively in online banking and purchases.
**Symbolic Link**
A symbolic link (also known as a symlink or soft link) is a file system object that points to another file or directory by its path. Unlike a hard link, a symbolic link can span different volumes and can point to directories. If the target is moved or deleted, the symbolic link becomes broken (see also **Hard Link** and **Junction Point**).
**SyncBack Touch**
SyncBack Touch is a cross-platform companion application that runs on Windows, macOS, Linux, and Android devices. It enables SyncBackSE and SyncBackPro to backup, restore, and synchronize files with those devices over a network connection.
**Synchronize**
The Synchronize operation is when files are copied to and from the source and destination. The aim of this process is to maintain identical copies of the data on both machines, regardless of which side the data changed. One of the caveats of using this method is the possibility of collisions (conflicts). For example if the same file is changed on both sides SyncBack will prompt the user for a decision, or it can be configured for an automated action for convenience. After synchronization, the source and destination should contain the same files and directories, i.e. are a mirror of each other.
**TCP-IP**
**Transport Control Program/Internet protocol**
TCP/IP is the well-defined and almost exclusive system of protocols used for communication over the Internet. Whereas the IP packet portion of the protocol is connectionless and only makes a best-effort attempt to communicate, TCP makes sure the packets have arrived and that the message is complete.
**Throttling**
Throttling (also known as bandwidth throttling) is a feature that limits the rate of data transfer during a profile run. This prevents SyncBackPro from consuming all available network bandwidth, allowing other applications and users to continue using the network without disruption.
**TIFF**
**Tagged image file format**
A type of image file format. TIFF files may contain multiple images, and support a variety of color depths and may use lossless compression, making the file sizes a good deal bigger than the same with JPG formatting. There are several variations and cross-compatibility is sometimes a problem (see also **BMP** and **JPG**).
**TLS**
TLS is a cryptographic protocol that supersedes SSL. Like SSL it provide high security and data integrity for communications between computers (see also **SSL**).
**Token**
In the context of authentication, a token is a piece of data issued by a service to grant temporary access. OAuth tokens, for example, allow SyncBackPro to access cloud storage services without storing the user's password. Tokens may expire and need to be refreshed periodically (see also **OAuth**).
**Tray Icon**
Tray icons appear in the Windows System Tray (Taskbar corner). This is the small bar at the bottom right-hand area of your screen. It is normally used to show the status of "utility" type programs running in the background. Usually, if you double-click or right-click them, they'll open up or bring up a menu. SyncBack can be minimized or ‘closed’ to appear in this area.
**TrueCrypt**
TrueCrypt is a proprietary software application used for real-time on-the-fly encryption (see also **EFS** and **Encryption**).
**UDF**
**Universal Disk Format**
UDF is a standardized common file system for all optical media, e.g. CDs and DVDs. The format is designed to make a common file system for read-only and re-writable optical media.
**UAC**
**User Account Control**
User Account Control is a security component in Windows Vista and newer. UAC elevates the user’s account privileges thus enabling them to perform common tasks as non-administrators (called standard users in Windows Vista) as administrators without having to switch users, log off, or use Run As.
**UNC**
**Universal Naming Convention** or **Uniform Naming Convention**
A UNC specifies a common syntax to describe the location of a network resource, such as a shared file, directory, or printer. The Windows UNC syntax is as follows:
\\ComputerName\SharedFolder\Resource
Additionally, one can connect a drive letter to the UNC for ease of access in Windows, but the raw UNC name can be used to access resources in the same location just as well.
**Unicode**
Unicode is a character encoding standard developed by the Unicode Consortium. The aim of the standard is to provide universal way of encoding characters of any language, regardless of the computer system, or platform, being used. The system achieves this by using two bytes (16 bits) for every character rather than the one byte (8 bits) as used by ASCII.
**UNIX**
An old but venerable operating system very widely used on medium sized, multi-user servers, and in top-of-the-range desktop computers. Its characteristics are reliability and efficient use of computer hardware but some variations have a somewhat arcane user command-line interface. Most modern versions now have a graphical user interface that allows mouse input, but it is still the domain of the technically proficient. Modern day incarnations now include Linux and all its desktop variants.
**Upload**
Uploading is the process of sending bulk information from your computer to another computer or server on the Internet. For example if you use a photo sharing website, you are uploading your files to them (see also **Download**).
**URL**
**Universal Resource Locator**
A URL is the technical term for ‘Web site address’. This is usually the address of a website or document on the Web (e.g. http://www.2brightsparks.com)
**Usenet**
Usenet is short for *User's Network*. It is a collection of thousands of online bulletin boards residing on the Internet. Each bulletin board is arranged in a hierarchical fashion and contain discussion groups (or newsgroups) dedicated to a myriad of topics. Messages are posted and responded to by readers either as public or private emails.
**User Interface (or UI)**
That part of a computer program that controls interaction with the user. For example, in Windows, you are presented with a Start button, task bar, desktop, system tray and moveable mouse pointer. This whole experience is termed the User Interface. Another example is the 2BrightSparks series of products, which strive to give you the most attractive and useable User Interface possible.
**Variables**
In computer languages, a variable is simply a name assigned to a mathematical value, text, or multitude of other objects that exist within that environment. Windows has a set of predefined variables that the operating system uses to reference all sorts of values (type in *set* at a command prompt for an example). SyncBackSE/Pro use a range of variables that can be used in the Source and Destination settings for a profile when scripting a backup task.
**Versioning**
When this SyncBackSE/Pro feature is switched on, a backup version of a file is automatically created before it is moved, replaced or deleted. If one of these operations subsequently turned out to be a mistake then you can restore one of the previously saved versions.
**VHD**
VHD (Virtual Hard Disk) is a file format which represents a virtual hard disk drive (HDD). It may contain what is found on a physical HDD, such as disk partitions and a file system, which in turn can contain files and folders. It is typically used as the hard disk of a virtual machine.
**Virus**
A virus is an unwanted, malicious piece of software that is designed to reproduce itself and adversely affect data on your computer or its performance. New viruses are written and distributed around the Internet every day by unprincipled persons. If your computer is connected to the Internet you should always use Anti-Virus software and a firewall to combat these. Also ensure that it is up-to-date with your publisher’s latest anti-virus definitions. You should also download and install the latest Microsoft critical updates as they are published. Use the Security Center in Control Panel to configure your system appropriately. See also **malware** and **ransomware**.
**VSS**
**Volume Shadow Copy Service**
Volume Shadow Copy Service is a background service in Windows XP and newer that provides a method of creating snapshots of files and directories at predefined points in time. The service runs at the block-level, not the file level which means it is able to backup open or locked files. These snapshots can then be used to restore data files and folders from a previous point in time. It is used by the Windows Backup utility and of course SyncBackSE/SyncBackPro.
**WAV**
A WAV file is an audio format file and denoted by the extension .wav. It typically contains an uncompressed PCM (Pulse Coded Modulation) audio bit stream unlike MP3, which has various stages of compression to achieve smaller file sizes relative to the raw version.
**WebDAV**
**Web Distributed Authoring and Versioning**
WebDAV is an extension of the HTTP protocol that allows users to collaboratively edit and manage files on remote web servers. SyncBackPro can use WebDAV as a source or destination for backup and synchronization profiles.
**Webhook**
A webhook is an automated notification sent via HTTP when a specific event occurs. SyncBackSE and SyncBackPro can send webhook notifications to inform external services or applications about the status of profile runs.
**Web Host**
This is company that rents out space on the Internet to allow you to place your website on it. They provide the hardware, servers, backbone connections, backup system etc. where your data is housed. They also make sure your site is available to site visitors at all times.
**Webmaster**
A webmaster is someone who manages a web site. They make decisions about its content, style and administration. Large sites may employ additional content directors or editors. On smaller sites, webmasters may make these decisions and accept news releases directly.
**Web Site**
A Web Site is a collection of web pages, graphical images, videos and other digital resources that are hosted on one or more web servers. It is usually (but not always - see Intranet) accessible via the Internet. The content is constructed into a web page (normally an HTML document) that the web server sends to the user's web browser for display. The pages of a website can usually be accessed from a common root URL called the homepage. The URL's of these pages are organized into a structured hierarchy, although the hyperlinks between them control the orderly navigation of the whole site.
**WAN**
**Wide Area Network**
A WAN is network which covers a large geographical area. A well-designed WAN has some form of redundancy built in to allow for link faults between, or with, the various nodes. In the event of such a fault, the traffic will be re-routed through another node, thus maintaining resilience. The best-known wide area network is the Internet.
**WinRAR**
WinRAR is a shareware file archiver and data compression utility. It is one of the few applications that is able to create native RAR archives, because of its proprietary encoding algorithm (see also **BWT**, **BZip2, Compression** and **ZIP**).
**Windows Service**
A Windows Service is a program that runs in the background on a Windows operating system, typically without any user interaction.
**XCRC**
The XCRC is a CRC (Cyclic Redundancy Check) algorithm to calculate the hash value of the file being copied. This value can be used to verify the integrity of the file transfers. If the CRC values of the local and remote file match, both files are considered equal and therefore the transfer is successful.
**X-Window**
UNIX has traditionally been a command-line, text-based operating system and can be daunting for novices. For people seeking an easier way to use UNIX, X-Windows is a standard for providing it with a windowed user interface, much in the same way of Microsoft Windows. The ability to divide and order the screen into windows is an important feature in the provision of a graphical user interface, as is the use of a pointing device. X-Windows provides both in an effort to ease the learning UNIX curve.
**Zip Compression, Zip File**
Zip Compression is a method of compressing one of more files and folders into a single file with the aim of reducing the overall file size. This file can then be emailed, transmitted by FTP or copied onto removable media for the recipient to unzip (uncompress) it. Text files, such as Word and Notepad are highly compressible, as are other Microsoft Office documents. Photos and binary files are less so, but will nearly always compress a certain amount. SyncBack is able to backup data to and restore from a ZIP file. There are also a wide range of 3rd party tools that will unzip these files, ranging from WinZip to the command line PKUnzip (see also **BWT**, **Compression** and **BZip2**).
**Zip64**
Zip64 is an extension to the standard ZIP file format that removes the 4 GB file size limit and the 65,535 file count limit of the original ZIP specification. SyncBackPro supports Zip64, allowing backups to ZIP archives that exceed these original limitations (see also **Zip Compression**).
**Legal Information**
© 2003 – 2026 2BrightSparks Pte Ltd. All Rights Reserved.
No parts of this work may be reproduced in any form or by any means - graphic, electronic, or mechanical, including photocopying, recording, taping, or information storage and retrieval systems - without the written permission of 2BrightSparks Pte Ltd. Some portions of this glossary used sections from the open source encyclopedia http://www.wikipedia.org/
Products that are referred to in this document may be either trademarks and/or registered trademarks of the respective owners. The publisher and the author make no claim to these trademarks.
While every precaution has been taken in the preparation of this document, the publisher and the author assume no responsibility for errors or omissions, or for damages resulting from the use of information contained in this document or from the use of programs and source code that may accompany it. In no event shall the publisher and the author be liable for any loss of profit or any other commercial damage caused or alleged to have been caused directly or indirectly by this document.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# System Requirements
## System Requirements
SyncBackPro requires one of the following versions of Windows:
Both 32-bit and 64-bit versions of Windows are supported. SyncBackSE and SyncBackPro are available in 32-bit and 64-bit versions. SyncBackFree is only available as a 32-bit version. See the [32-bit vs 64-bit](32bit64bit.md) section for more details.
Windows XP, 2003 and earlier are **not** supported. Non-genuine versions of Windows are not supported, e.g. Wine.
- Refer to the [Open and Locked File Copying](OpenandLockedFileCopying.md) section for details on the requirements for copying open/locked files.
### How to find out what system a drive is using
- SyncBackPro produces log reports which will show what File System you are currently using. To view a log report select a profile, then **View Log** from the **Task** menu - you may also use the shortcut keys "Ctrl" and "L" after selecting a profile.
All Content: 2BrightSparks Pte Ltd © 2003-2026
---
# Company Information
2BrightSparks Pte Ltd was incorporated in 2004 and continues to deliver high quality utility software solutions used by individuals, IT professionals, corporations, educational institutions, and government agencies across the globe. View some of our many noted [customers](http://www.2brightsparks.com/customers.html) on our website.
In August 2008 2BrightSparks built upon the incredible success of SyncBack Freeware and the multi-award winning commercial program SyncBackSE by introducing SyncBackPro which has become the professional's choice for backup, synchronization, and restoration of Windows files.
The release of SyncBackFree in 2012 ensured everyone using a Windows computer now has the opportunity to enjoy a backup program that inherits the up to date, rock solid reliability of its more powerful namesakes.
- For more about the 2BrightSparks team go to: https://www.2brightsparks.com/about.html
### Company Website
[www.2brightsparks.com](http://www.2brightsparks.com/)
### Sales and Support
Sales and Support are available by submitting a support ticket from our [Support Area](https://help.2brightsparks.com/).
### Payment Processor
All payment transactions at 2BrightSparks are handled through the FastSpring payment system (merchant of record). At no time do we process or save customer payment card details on our website.
If you would like to learn about FastSpring visit their site at: https://www.fastspring.com/
All Content: 2BrightSparks Pte Ltd © 2003-2026