BitCopy by MollieSoft - Frequently Asked Questions
	- Updated April 3, 2023 for Version 1.3.6.0.

What is BitCopy?
	- Create copy sets (representing copy jobs) to copy files between any local or remote directories.
	- Select files to copy from each subdirectory using a filter expression involving file name/path/date/size.  Use AND/OR/NOT to build filters of arbitrary complexity.  Use different filters for different subdirectories.  Build and test filters interactively.
	- Efficient and robust design can handle millions of files and terabytes of data in a single copy set.
	- Copy all, newer, or just the missing files from the source to target directory.
	- Sync target with source directory to copy newer files from source and remove unmatched files from target.
	- Merge target and source directories to copy newer files from source to target, and from target to source.
	- Use "Try It!" mode to predict which files would be copied.
	- Verify the copy job by comparing the actual contents (bits) of each source and target file after a copy, if desired.
	- Each copy set can be run manually at any time, or automatically on a daily/weekly/monthly schedule; optionally wake the computer from sleep to run a scheduled copy.
	- Copy Journal shows the complete past results (files copied and any errors) for all copy runs.  See files being copied in real time for the current run.
	- Enable or disable any subdirectory of a copy set individually; this lets you turn on/off any part of the copy job at will.
	- Recognizes removable drives by their permanent volume serial or volume label, not by the drive letter (which can vary).
	- Secure storage of logon credentials for network folders if desired.

How do I install BitCopy?
	- Go to www.molliesoft.com/BitCopy to download the install package.  You will need administrator privileges on your machine to perform the install.

What operating systems will run BitCopy?
	- BitCopy runs on Windows 8.1, Windows 10, or Windows 11.
	- BitCopy requires the .NET Framework version 4.6.1 to run.  This should normally already be present; if the BitCopy installation process detects it is not installed, go to https://www.microsoft.com/en-us/download/details.aspx?id=49982 and install it.

How do I run BitCopy?
	- The install process will place a shortcut to BitCopy in your Startup folder, so it will start when you log on to your computer.
	- BitCopy should always be running so that it can automatically run your scheduled copy jobs; just minimize it to the system tray instead of closing BitCopy.
	- The install process also places a separate shortcut to BitCopy on your desktop, so that you can start BitCopy manually.

I clicked the "Minimize" button (on the upper right of BitCopy); where did it go?  
	- When minimized, the BitCopy icon will appear in the System Tray (normally at the bottom right of the desktop).  (If you do not see it there, click the small up-arrow in the tray marked "Show hidden icons".)  Just double-click the BitCopy tray icon to show BitCopy in a normal window again.  Note that Windows lets you customize the System Tray to make the BitCopy icon stay in the visible portion of the tray if desired.  You can also use the BitCopy desktop shortcut to make BitCopy appear on the screen again.

What will happen to BitCopy when the trial period expires?
	- After the 180-day trial period, BitCopy will start but only allow you to purchase a license if desired.  Without a license, BitCopy will no longer run as before.  A license entitles you to run BitCopy permanently on a single computer.

If I upgrade to the next version of BitCopy, will my permanent license still be valid?
	- Yes.  A permanent license for BitCopy is a license forever; you can safely upgrade to any new version and your license will still be valid.
	- Even if you only have a trial license, you can upgrade BitCopy to a new version without affecting the expiration date of your license.

How can I learn more about how BitCopy works?
	- This FAQ is the main source of information about BitCopy.
	- While running BitCopy, tooltips are available on most controls, including the column headings of most lists.  Hover the mouse on these areas to see the tooltips.
	- Some windows, such as the Edit Copy Set dialog, have a separate help window which can be made visible by checking the "Show help" box.
	- Please email support@molliesoft.com with any questions that the documentation does not address.

Copy Sets and Copy Runs

What is the difference between a copy set and a copy run?
	- A copy set describes files to be copied from a source folder to a target folder.  It can contain child copy sets with specifications for various subfolders of the source and target folders.
	- Each copy set can produce many copy runs.  A copy run is the result of a single copy operation performed for a specific top-level copy set.  Each copy run is timestamped according to its start time.  It contains details about the files copied or errors encountered during the run.
	-  Note: a copy run is always performed for an entire top-level copy set, never for a child copy set alone.

What is a copy set?
	- A copy set is a set of "canned" instructions about how to run a copy job.
	- A copy set can be a top-level copy set, or a child copy set (one that belongs to another copy set).  When you create a copy set initially in BitCopy using the "Add Copy Set" button, you are creating a new top-level copy set (no parent).
	- The source (or target) folder of a child copy set must be a subfolder of the source (or target) folder of its parent copy set.
	- A copy set contains:
•	The path of the source folder from which files will be copied.
•	The path of the destination folder to which these files will be copied.
•	A file filter that describes which files from the source folder will be copied.  This filter can be "all files", "no files", or a filter expression written in MFQL (MollieSoft File Query Language) that describes exactly which files are to be copied.
•	An optional setting to "copy all subfolders" of the source to the target.  If this is set, the same file filter will be applied to all subfolders of the source folder as well to determine which files to copy.
	- Each copy set has a distinct name that you give it when created; you can change this name later if desired.  Copy set names cannot be blank and must be unique.

What is a child copy set?
	- A copy set can optionally contain various children (child copy sets).  You create a child copy set using the "Add Child Copy Set" button; the child is added under the currently highlighted item in the copy set list.  You can add any number of children, to as many levels as you wish.
	- A child copy set is used to copy files from a subfolder of the parent copy set source folder, to a subfolder of the parent copy set target folder.  Note that the source/target folder names of a child copy set need not correspond (match) exactly!  When setting up a child copy set, just provide the name of the source subfolder within the parent source folder, and the name of the target subfolder within the parent target folder.  Then when a top-level copy is run, each child copy set will be examined in turn to find additional files to be copied, using the source/target folders of the child copy set and the file filter of the child copy set.
	- A child copy set has its own file filter (all, none, or some filter expression), and this child file filter can be combined with the parent file filter in various ways (replace parent filter, use parent filter, AND with parent filter, OR with parent filter).
	- In this way, you can descend down the folder hierarchy of the top-level source folder, and specify a different file filter at each subfolder level if desired.
	- The following diagram shows a folder hierarchy with multiple child copy sets, each with a different file filter:

What is a copy run?
	- A copy run is a single Copy operation invoked for a top-level copy set.  You cannot run Copy for a child copy set in isolation.
	- A copy run can be created either manually (via the Copy button or Try It! button), or automatically (via a copy schedule).  A scheduled run is always an actual copy run, not a "Try It" run.
	- The Settings dialog contains copy run history limits (by total space consumed, or runs per copy set) which control how many copy runs are retained for any copy set.
	- All retained copy runs can be examined at any time in the Copy Journal to see exactly which files were copied in the run. Also, when you select a copy set from the copy sets list in the main window, you will see a summary of its copy runs at the lower right of the main window.  Double click any of these copy runs to see its full details in Copy Journal.
	- The copy run is controlled by a copy mode setting. Of course, the source files under consideration for a copy operation are specified by the file filter of the top-level copy set, plus the file filters of all the child copy sets.  This results in some set of candidate source files under the top-level source directory.  Not all these will necessarily be copied, however.  For a particular copy run, the possible copy mode settings are:
•	Copy newer files - copy files newer than the corresponding target file.
•	Copy all files - copy all the files, overwriting any target file.
•	Copy missing files - only copy source files with no matching target file.
•	Sync target with source - copy newer source files to target, and remove any target file without a matching source file.
•	Merge target and source - copy newer source files to target, and also copy newer target files to source.
•	Use copy link modes (only available for a copy group) - uses the last manual copy mode of each copy link in the copy group.
Each copy set/group/link retains the last manual copy mode selected by the copy mode control (dropdown list of possible copy modes).  When you click on a different copy set/group/link the last manual copy mode will be automatically selected in the copy mode control.
	- Before performing a manual copy run, you can predict which files will be copied using the brown "Try It!" button.  This will use all child copy sets, their file filters, subfolder settings, and copy mode settings as above, but instead of actually performing the indicated file copies, it will show you which files would have been copied.  The details of this "Try It" run can be examined in the Copy Journal, and you will see exactly which files will be actually copied when you press the green Copy button.
	- You can verify any copy run (but only at the time the run is performed) by setting the "Verify" option.  If this is set, BitCopy will compare the actual content (bits) of each source and target file after copying.  You can verify a manual copy run by setting the Verify check box on the main window (at the right of the Copy button) before performing a manual copy, or for a scheduled copy run, via the Verify check box on the appropriate schedule.  If any error is encountered during file verification, the errors will be displayed at the bottom of the Copy Journal.  If all files verify successfully, no errors are displayed.
	- A copy run can be started manually (the user presses the Copy button on the main window), or automatically via a schedule (you can add schedules to any top-level copy set, or copy group, or copy set link).  Note that a scheduled copy run is always an actual file copy, not a "Try It" run.

Scheduling Copy Runs

How do I schedule automatic copy runs?
	- Any top-level copy set, or copy group, or copy set link can each contain any number of schedules.
	- The schedules of copy groups and copy set links are independent of those of the associated copy sets; the schedules of an associated copy set are ignored when determining the schedules of a copy group or copy set link.
	- Similarly, the schedules of a copy group are independent of the contained copy set link; the schedules of a contained copy set link are ignored when determining the schedules of the containing copy group.  However, if you set the copy mode of a copy group schedule to "Use copy link modes",  the last manual copy mode of each link will be used when the schedule is run.
	- Use the Add button above the Copy schedules list (bottom left of main window) to add a new schedule to the selected top-level copy set, or copy group, or copy set link.  The copy mode of the new schedule will default to the last manual copy mode of the copy set/group/link.
	- You can add as many schedules as you wish to each top-level copy set/group/link.  Remove a schedule using the Remove button next to the Add button.
	- Each schedule has a time of day when it will start the copy run, and a frequency that can be Daily, Weekly, Monthly or One-Time.  Daily runs at the specified time every day; Weekly runs at the specified time for the selected days of the week; Monthly runs at the specified time for the selected days of the month; One-Time runs at the specified time and date, then the one-time schedule is just removed since it will never run again.
Note that a monthly schedule with day 31 selected will just be skipped for a month with less than 31 days.
	- Each daily/weekly/monthly schedule can repeat within any scheduled day.  You can specify a "repeat interval" between 5 minutes and 24 hours.  You can enable or disable the repeat information using the "Then repeat every" check box (if repeat is disabled, the scheduled copy will still run at the specified start time).  You can also specify a "repeat until" time of day.  To summarize: a schedule runs at its start time on any scheduled day, and if repeat is enabled, will repeat at every "repeat interval" thereafter (adding successive repeat intervals to the start time), until the "repeat until" time of day is past.
	- The schedule also specifies the copy mode of the copy run.  This can be "Copy newer files", "Copy all files",  "Copy missing files", "Sync target with source", or "Merge target and source", just as when you perform a manual copy.  The special option "Use link copy modes" is only available for schedules belonging to copy groups.
	- A schedule will not run unless it is enabled, so you can turn it on or off as desired.  Also a schedule will not run (even if it is enabled) if the associated copy set/group/link is disabled.
	- If your computer happens to be asleep when the schedule should be run, you can make it wake up to run the schedule by checking "Wake computer at start time" for that schedule. Note: the ability to wake up Windows on a timer is usually dependent on a BIOS setting, which is typically enabled for desktops and disabled for laptops.  In the BIOS, look for Power Management. In here, ensure S3 is enabled. There should be an option called “Resume by alarm”, or “Wake-up on RTC”.
	- If there is at least one enabled schedule for some enabled copy set/group/link, the next scheduled copy time will be displayed at the top left of the main window.  You can also see a list of future scheduled runs (for about two months in the future) in the Copy Journal.
	- A scheduled copy will not run automatically while you are editing the associated copy set or group.  You must close the Edit dialog to allow scheduled copies to run.
	- If a scheduled copy has been prevented from running, e.g. if there is a dialog open as above, the copy will still run when the dialog is closed, assuming you are within a "grace period" of 2 minutes since the scheduled time; otherwise, the copy run will be skipped.  Similarly, if BitCopy is started within 2 minutes of a scheduled copy, the copy will run.  If another copy run for the same copy set is already in progress when a schedule is due to run, it will not run at that time; once the copy run has ended, the schedule that was due to run will be run if within the 2 minute grace period of its scheduled time.
	- A scheduled copy will run automatically even if BitCopy has been minimized and is only visible in the System Tray.  In this case, you will see a small pop-up notification next to the icon when the copy run starts and ends.  These can be hidden via the "Show tray notifications" check box in the Settings dialog.
	- To prevent a copy from running automatically, just disable all its schedules or remove them.  You can still run the copy manually if desired.  You can also disable the associated copy set/group/link, which will prevent any of its enabled schedules from running.
	- For any schedule, you can check "Ask to run at start time" if you want to be prompted when it is time for the schedule to run the copy.  When it is time for the schedule to run you will see the "Run Scheduled Copy" dialog:

As you can see, you can just run the scheduled copy immediately, skip it entirely, or reschedule it with a delay.  If you reschedule using "Ask me again" or "Just run it", a new One-Time schedule for the specified future time will be created and will be visible in the schedules list for this copy set.  This schedule can be freely edited or removed, just as for any other schedule.  If you selected "Ask me again", the new One-Time schedule will have "Ask to run at start time" checked and you will see the dialog again when the schedule expires; if you selected "Just run it", the new schedule will not have this checked, and the scheduled copy will run with no intervening dialog at the expiration time.

I have lots of copy sets and schedules for each.  How can I tell when automatic copies will be run?
	- The next scheduled copy is always shown at the top left of the main window, including the copy set name, when it will be run, and whether the computer will wake to run the copy.
	- Whenever the next scheduled copy time changes, an entry is added to the history log, containing the next scheduled time and the associated copy set/group/link.
	- The Copy Journal, in addition to listing past copy runs, can show all the future scheduled copy runs for all your copy sets (up to two months in the future).  Check the "Show scheduled future runs" box at the top of the Copy Journal; a list will appear at the upper right showing future run times, the associated copy set, the frequency, etc.  You can sort this list on any column by clicking on the column headers to see the data in a different order.

Building Copy Sets

How do I create a top-level copy set?
	- You create a copy set hierarchy from the top down.  Start by identifying which top-level source folder is to be copied to which top-level target folder; these folders can be any addressable path on your machine, whether a local drive or a remote network share.  You will create a new top-level copy set with this source and target folders.
	- Click the "Add Copy Set" button on the main window to show the add dialog.  Give your copy set a meaningful name instead of the default "NewCopySet", and specify the source and target folders for files.
	-  Note that only top-level copy sets have names since child copy sets are never used by themselves.  You invoke Copy on a top-level copy set, never on a child copy set.
	- Specify an appropriate file filter, used to select which source files will be included in a copy run.  This can be "all files", "no files", or some selective filter expression.  If you select "no files", nothing will be copied; this is useful if the actual work will only be done in the child copy sets of this top-level copy set.
	- Check the box "Copy all subfolders of source folder" if you also want to copy files from all the subfolders of the source folder, down to any level of containment.  Note the same file filter will also be applied to each subfolder.
	- What happens if the source or target folder of a top-level copy set is not available (e.g. a drive is not mounted, or a network share is on a remote computer that is asleep)?  Normally BitCopy will prompt you to mount the drive or wake the computer when a copy operation starts; this is controlled by the "Prompt to mount" setting for the drive or network share.  If you do not specify "Prompt to mount", and the drive or network share is not available at the time a copy is started, the copy will just fail without giving you a chance to mount the required drive or network share.
	- So as a first simple example, you can create a copy set that copies a source folder to a target folder, includes all files, and includes all subfolders.  When run, this copy set will just copy all the files and folders under the source folder to a corresponding folder hierarchy under the target, and will create all necessary target folders if they do not exist.

Top-level copy sets sound useful, but why do I need child copy sets?
	- You need child copy sets if you want different filters for different levels of the folder hierarchy.  A top-level copy set as above can only apply the exact same filter to every level of the folder hierarchy.  Let's say you only wanted to copy .log files from a certain source subfolder, and skip .log files found anywhere else.  You could create a child copy set for this subfolder, with a filter that includes .log files, whereas the top-level copy set would have a filter that excludes .log files.  This mechanism allows you to flexibly include/exclude files at any level of the folder hierarchy.
	- You can disable a child copy set individually, without disabling the top-level copy set.  Once a copy set is disabled, neither it nor any of its child copy sets will participate in a copy operation (whether manual or scheduled).  You can keep all file filters and settings the same, but just enable/disable a child copy set to turn this part of the copy operation on or off as desired.
	- You can enable/disable a child copy set (or top-level copy set) conveniently just by clicking the "Enabled" check box for it in the copy sets list in the main window, or alternatively via a check box in the "Edit copy set" dialog.  Similarly, you can easily turn on/off the setting "Copy all subfolders" using the check box in the copy sets list.
	- Using children of child copy sets to any desired level, you can construct very complex file specifications and rerun this complex copy at any time.

How do I create a child copy set?
	- Select the parent copy set in the copy sets list by clicking anywhere in its row.  Now press the "Add Child Copy set" button above the list to show the "Add child" dialog.  (You can also right-click on the parent copy set to show a context menu, then select "Add child copy set".)
	- Select a subfolder of the parent copy set source folder, to be used as the child copy set source folder.
	- Select a corresponding subfolder of the parent copy set target folder, to be used as the child copy set target folder.
	- Specify an appropriate file filter to be used with the child copy set; if desired, check "Copy all subfolders of source folder" to apply the file filter to all subfolders as well.
	- Click "OK"; the new child copy set will be shown in the copy sets list as a child of the parent copy set you selected.
	- Now, whenever you run a copy operation for the parent copy set, the child copy set will also be used to select source files.

How do I remove a copy set?
	- Select the copy set in the copy sets list by clicking anywhere in its row, then press the "Remove" button above the list.  This will remove the copy set and all its children.

Why are child copy sets nameless?
	- A child copy set can always be identified by its position in the source directory hierarchy, so no separate name is needed.
	- Example:
⦁	Say the top level copy set "MyCopySet" copies c:\data to d:\data.
1	Say a child copy set copies c:\data\subdir1 to d:\data\subdir1.
2	Then the child copy set is simply referred to as "MyCopySet-->subdir1".  
3	This arrow notation is used to identify child copy sets to any sublevel.

How do I tell BitCopy which source files to include in a copy set?
	- BitCopy uses several settings from a top-level copy set and its children to determine exactly which files are to be copied during a run.
	- Each copy set has a source folder from which files will be obtained.
	- If "Copy all subfolders" is checked for the copy set, files will also be obtained (using the file filter of the copy set) from all subfolders of the source folder (down to all levels).  These files are copied to the corresponding subfolders of the target directory.
	- If a file filter is specified, the source files will be restricted to only those satisfying the filter.  See the section below on Filter Expressions for more details.
	- Children of the top-level copy set are examined to find additional files to be copied.  For each child copy set, its settings are used as above to gather additional files for the copy operation.  A source file will be included at most once for any copy run.
	- If a copy set is disabled, no files will be copied from it or from any of its children.  You can enable/disable a copy set by clicking this check box in the copy sets list, or in the edit dialog for the copy set.

Copy Groups

I have lots of copy sets; how can I run several of them at once?
	- You can use a Copy Group, with links to any or all of your top-level copy sets.  
	- A Copy Set Link is just a reference to an existing top-level copy set.
	- A Copy Set Link can change (override) various settings of the top-level copy set, including its source directory and target directory.  However, you cannot override the source filter or child copy sets of the top-level copy set.  Think of the copy set as a recipe telling BitCopy how to copy a source directory to a target directory, with many possible filters specifying files to be included or excluded from the copy.  When you create a link to this copy set, you can change its source and target folders, and so can run the copy operation with exactly the same filters but between different top-level folders.  (Of course, the new source folder should have the same subfolders as the original source folder for the filters and child copy sets to be meaningful.)
	- You can add more than one link to the same copy set if desired, specifying different source/target folders. Multiple links to e.g. "MyCopySet" are named <MyCopySet>, <MyCopySet> (2), etc.
	- A Copy Group has its own copy schedules, and ignores the schedules of any of the linked copy sets.  If you want the copy schedule to run the last manual copy mode of each of the links, set the copy mode of the copy schedule to "Use link copy modes".
	- Optionally, you can create individual copy schedules for any copy set link within a copy group; these are independent of the schedules of the copy group, and will run just this link at the scheduled time instead of running all links in the copy group.
	- You can run a single copy set link manually if desired.  Running the copy group will run all copy set links within the group simultaneously.  (In the BitCopy Settings dialog, the setting "Allow X simultaneous copy runs" to control how many copy runs can be active at the same time.)
	- When a copy is performed for an entire copy group or copy set link, the Copy Journal will show the resulting runs for each link using the notation:
		 "MyCopyGroup -> <MyCopySet>".
	- Here are some scenarios in which copy groups are useful:
	- Run many copy sets together manually.  You have several copy sets that you wish to run manually as a unit.  Set up a copy group with links to each of these copy sets.  Now you can start the copy group with a single click of the Copy button; this will run the copy operations for each linked copy set simultaneously.  You can predict what would be copied by all these copy sets together using Try-It mode; you can also specify the copy mode setting (newer, all, missing, sync, merge, link modes) for all of these copy sets together.
	- Note: if you want to run each copy set in the group sequentially, you can set the number of simultaneous copy runs to "1" in the Settings dialog; when you run the copy group, all the copy sets in the group will be enqueued but they will be run sequentially instead of simultaneously.
	- Schedule many copy sets together.  You have several copy sets that you wish to schedule as a unit.  Set up a copy group with links to each of these copy sets as above, and provide appropriate daily/weekly/monthly schedules for the copy group.  The copy group ignores the schedules of the actual underlying copy sets of the copy set links, and instead only uses the copy group schedules.  The schedules also contain a copy mode, and indicate whether the copy run should be verified; these settings are applied uniformly to each of the copy set links within the copy group (except for a copy mode of "Use link copy modes"). 
	- Enable/Disable many copy sets together.  You can enable/disable a copy group with a single setting; this is a convenient way to turn all its schedules on or off.  You can also enable or disable any individual schedule of the copy group.  A schedule will run only if the schedule is enabled, and the copy group owning the schedule is enabled.  You can also disable an individual copy set link within the copy group; disabled links will be ignored during copy operations.
	- Copy a single source directory to many targets.  You have a copy set that you wish to run many times, but with a different target directory each time; this lets you propagate a given source directory (with appropriate filters) to many different target directories, e.g. to targets on different machines or on different drives.  Set up a copy group with many links to the SAME copy set, and change the target directory of each link as appropriate.  Now when you run this copy group, the links will run simultaneously and copy the same source directory to many different target directories.

Filter Expressions

What is a filter expression?
	- A filter expression is a file specifier used by a copy set to select source files for a copy operation.  Filter expressions are written in MFQL (MollieSoft File Query Language) and involve the file name, path, size, date written or other file properties; this expression is then matched against all possible source files.  However, you do not need to know anything about MFQL to build a filter expression since you can build one from a few simple controls in the Edit Copy Set dialog, which will usually accomplish what you want.

What is a simple filter?
	- A simple filter is a limited form of filter expression constructed via the "Build Expression" button in the Edit Copy Set dialog.  This button shows an expanded dialog allowing you to build simple filters, and to test any filter expression.
	- Type filter terms separated by spaces in the File name text field.  Use double-quotation marks around a term if it contains spaces or special words (and, or, not - words used in the query language described below).  If "Match ANY word" is not checked, the filter will only include files that have all these terms; if "Match ANY word" is checked, it will include files that have any of these terms; by default, all the terms are required for a match.  If "Match case" is not checked, capital letters will be treated the same as lower case letters (case-insensitive filter).
	- For other (non-text) fields, the check box in front of each field determines whether the field is actually used in the filter.  You can specify a range (or just an upper or lower limit) of file last-write date/times; similarly, you can specify a range of file sizes.  	- Just filling in the simple filter fields has no effect; however, once you press the tan "<== Use Simple Filter" button, a corresponding filter expression will be constructed and moved to the Filter Expression text area at the left of the dialog.  By default, the constructed filter expression will use AND to combine the conditions specified in the simple filter controls.
	- So a simple filter can be described as "match any (all) of the text terms in the file name" AND "match a range of file sizes" AND "match a range of file last-write times".
	- You can use a simple filter as above, or can use it as a starting point to construct more complex filters.

How can I test a filter expression to see what it would do?
	- Once you have constructed a filter expression (either using the Simple filter controls, or by typing it directly into the Filter Expression text area), you can test the files in the copy set source folder to see which ones will be included using this filter.
	- If the check box "Copy all subfolders of source folder" is checked, all files in the source folder and all its subfolders (to any level) will be included, assuming they satisfy the filter expression; if unchecked, only files in the top-level source folder itself will be included.
	- Press the green "Test Filter Expression" button at the top of the dialog to test the filter expression currently in the Filter Expression text area.  This will produce a list of the files that would be included by this expression.  If you do not check "Find included files only", all files under consideration will be listed, whether included or excluded, and in that case the special check box column "$InResults" will appear as the leftmost column in the file list to show you which files would be included.  This feature can help you construct an appropriate filter expression by showing you what other files are available in addition to those satisfying the filter expression.  Remember, you can sort the list by clicking on any column header; e.g., click the "$InResults" column header to group the included files separately from the excluded files.
	- In general, the columns in the resulting list of files consist of the variables (e.g. "$FileSize") present in the filter expression you are testing; each variable is evaluated for each file listed.  However, there are always columns for the variables $FileFolder and $FileName even if these are not present in the filter expression, so that you can identify which file an item in the list represents.  Consequently, the variable $FilePath will be omitted even if present in the filter expression, since it is redundant; however, you can force $FilePath to appear as an "extra column" (see below).
	- To help you create an appropriate filter expression, you can force more variables to appear in the files list.  Press the button "Extra Columns" to select some extra variables to be evaluated against the files in the list.  By sorting these new columns (click on their headers), and observing how their values are distributed, you may be able to decide how to use these extra variables in your filter expression.  The extra columns will appear with an orange background color, to help you distinguish them from normal columns.
	- Use the "Maximize" button above the list to make the list fill the entire dialog so that you can see more file details; then press the "Restore" button to change the list back to its normal position.
	- After you press the "Test Filter Expression" button, the status area at the bottom right of the dialog will show the number of files included by the current filter expression, and the total number of files examined.
	- Note: you are testing the filter expression for a copy set in isolation; the test does not consider any parent or child copy sets, nor how this file filter is combined with the parent copy set filter (Replace/Use/AND/OR), nor the copy mode of the copy.  This is just a facility allowing you to understand how an isolated filter expression will work to select source files for just one copy set.  To understand how your filters work in total, use the "Try It!" button on the main window of BitCopy, then examine the results of the run in the Copy Journal to predict which files will actually be included and copied.

What is a complex filter?
	- A complex filter is an arbitrary expression written in MFQL (MollieSoft File Query Language), used to select source files.
	- The field controls (simple filter controls) work by actually constructing a filter expression in MFQL.  For greater flexibility, you can write your own filter expression.  When using the simple filter controls, the generated filter is shown in the Filter expression text area; you can use this as a model and modify it as you wish.
 
OK, MFQL sounds pretty important.  What is the syntax of MFQL?

	- An MFQL statement is contained in square brackets, and compares a file variable with a constant.  (The value of a constant is independent of the file being considered.) Some examples:
•	[$FilePath has "Expenses"] looks for files whose name or folder contains the text "Expenses".
•	[$FileLastWriteTime > $DateTime.20171122_091152] looks for files whose last-write time (modified time) is after November 11, 2017 at 9:11:52 a.m.
•	[$FileExtension = ".mp3"] looks for files whose file type is .mp3.
•	[$FileSize > $MB.10] looks for files whose size is greater than 10 MB.

	- Statements (basic queries) can be combined using any combination of the logical operators AND, OR, NOT, and parentheses ( ) to form a complex query.  For example, the complex query:
	[$FileLastWriteTime < $Now - $Days.2] and not [$FilePath has "Expenses"]
looks for files last modified more than 2 days ago but whose name or folder does not contain the text "Expenses".

	- The file variables used in basic queries are of two types: text variables and arithmetic variables.  Text variables can only be compared with text values (contained in double-quotation marks), and arithmetic variables can only be compared with arithmetic values. 
	- Text variables can be compared with text values using the operators:
		= ,  != ,   "has", "startsWith", "endsWith", "regexMatch".
•	The "=" and "!=" operators test for equality and inequality respectively.
•	The "has" operator tests whether the text value of the second operand is present in the text value of the first operand.
•	 "startsWith" tests whether the first operand begins with the second operand.
•	"endsWith" tests whether the first operand ends with the second operand.
•	"regexMatch" matches the text variable with a regular expression.

	- Text value comparisons are case-sensitive only if the Match case check box is checked.
	- Arithmetic variables can be compared with arithmetic expressions using the operators: 	=,  !=, "<" (less than), and ">" (greater than).

	- Variable names are always case-insensitive.  Thus, the forms $filePath and $filepath are both valid and are the same variable.  Similarly, operators are case-insensitive: you can type "startsWith", "StartsWith", or "Startswith" and get the same result.

	- The text variable names (text property of files) used in MFQL are:

•	$FileName - the name of the file, without directory (folder).
•	$FilePath - the full path of the file (including folder).
•	$FileExtension - the extension of the file (e.g. ".mp3"), including the leading period.
•	$FileFolder - the file folder, omitting the file name.
•	$FileAttributes - the file attributes, consisting of letter codes:
R = Read only
H = Hidden
S = System
D = Directory
A = Archived
T = Temporary
P = Sparse file
C = Compressed
E = Encrypted
I = NotContentIndexed
For example, a particular file may have $FileAttributes = "HSA"; the letter codes for the attributes are just strung together in the standard order for attributes.  Thus, you could search for [$FileAttributes has "RH"] to find all read-only hidden files.

	- You can query the string length (number of characters) of any text variable by appending "#Length" to the variable name.  For example, the query 
		"[$FileName#Length > 25]"
searches for files whose name has more than 25 characters.

	- The arithmetic variable names (arithmetic properties of files) used in MFQL are:

•	$FileLastWriteTime - the date/time the file was last written to (modified).
•	$FileLastAccessTime - the date/time the file was last read or written.
•	$FileCreationTime - the date/time the file was created.
•	$FileSize - the size of the file in bytes; can be compared with a $KB, $MB or $GB value, e.g. "$KB.100".

	- Some arithmetic variables are used as convenient expressions for arithmetic constants.  These have the form:
•	$Now - the current date/time.
•	$DateTime.YYYYMMDD_hhmmss - where YYYY = year, MM = month, DD = day, hh = hour, mm = minute, ss = second.  The reduced form $DateTime.YYYYMMDD is also valid and represents midnight (start of the day).
•	$Days.N - where N is the number of days (N >= 1); can be added to or subtracted from a date/time.
•	$TimeSpan - can be any of the forms:
		$TimeSpan.ss
		$TimeSpan.mmss
		$TimeSpan.hhmmss
		$TimeSpan.d.hhmmss
	where ss = seconds, mm = minutes, hh = hours, d = days.
•	$KB.N - where N is the number of kilobytes.
•	$MB.N - where N is the number of megabytes.
•	$GB.N - where N is the number of gigabytes.

	- For example:
•	$DateTime.20170823_193033 - represents the date/time August 23, 2017, 7:30:33 p.m.
•	$Days.23 - represents a time span of 23 days.  This can be added to or subtracted from a $DateTime value.
•	$KB.40000 - represents 40000 kilobytes.
•	$MB.50 - represents 50 megabytes.

	- Here are some examples of complex expressions:
•	Find files modified less than a week ago, greater than 20 MB in size:
		[$FileLastWriteTime >$Now - $Days.7] 
			and [$FileSize > $MB.20]
•	Find files whose name contains "document", between 5 and 10 MB in size, last modified on August 23, 2017 (note the expression $DateTime.20170823 represents midnight on that day):
		([$FileName has "document"])
			 and [$FileSize > $MB.5] and [$FileSize < $MB.10]
			 and [$FileLastWriteTime > $DateTime.20170823] 
				and [$FileLastWriteTime < $DateTime.20170824]

It's hard to remember these variable and constant names!  Is there an easy way to show the correct form of a file variable or constant?
	- Yes.  Use the "Insert Term" button above the filter expression text area to show the filter expression helper menu.  Select a variable, operator, or constant from the menu, and it will be added into the text box at the current position.  Use these to form statements using brackets [ ], then connect your statements with the logical operators and/or/not to make complex expressions.
	- You can also show the filter expression helper menu by right-clicking in the filter expression text area.
	- You can check "Show help" above the filter group box to show the Filter Expression Help window.  This provides a convenient summary of filter expression syntax that you can use while composing filter expressions.  Note: press Ctrl-F in the Filter Expression Help window to show the Find Bar (at the bottom of the window) and find text within the help document.

How can I use regular expressions in the filter expression?
	- Warning!  Regular expressions are rather complicated and are intended for the "power user".  If you don't feel comfortable with them, just ignore this capability and use the plain text search operators "=", "!=", "has", "startsWith", "endsWith".
	- Example: to filter for files whose name starts with 2 numeric digits, use the expression  [$FileName regexMatch "^\d\d"].
	- When building a filter expression, you can use the "regexMatch" operator with any text variable, such as $FileName or $FilePath.  This will perform the match using the Microsoft version of regular expressions, explained at https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference.  You may also like the "cheat sheet" available at https://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.docx 
for quick reference.
	- Here are some examples of regular expression syntax.  These snippets are also available using the "regex builder" button  above the filter expression text box.
. 			- Match any single character
.* 			- Match any character zero or more times
.+ 			- Match any character one or more times
[abc]			- Match any character in the set 'abc'
[^abc] 		- Match any character NOT in the set 'abc'
[a-f] 			- Match any character in the range a to f
\d 			- Match any numeric character
? 			- Match preceding character zero or one times
* 			- Match preceding character zero or more times
+ 			- Match preceding character one or more times
\d{3} 			- Match three consecutive decimal digits
0[xX][0-9a-fA-F]+	- Match a hexadecimal number
[0-9]*\.*[0-9]+ 	- Match integers and decimals
^ 			- Match beginning of text
$ 			- Match end of text
You can select any of these entries from the regex builder dropdown menu, which will insert the selected expression into the filter expression text box at the cursor.  You can then modify the inserted expression as desired.

How can I save a filter expression once I have built one I want to keep?  How do I reload it?
	- The "File Menu" button above the filter expression text box shows a drop-down menu with a "Save as..." menu item, which brings up a "Save Filter Expression" dialog.  This lets you save a filter expression to disk as a small text file in the filters directory %localappdata%\BitCopy\Filters, with the extension ".flt".  Enter a valid file name for the filter, then press OK.  (Note: "%localappdata%" is a Windows shortcut that resolves to the local application data directory for the current logged-on user, for example "C:\Users\marvin\AppData\Local".)
	- To reload a saved filter, use the "File Menu" button again, and select the menu item "Load...".  This shows a "Load Filter Expression" dialog allowing you to select any previously created .flt file from the filters directory.  Select a filter from this dialog to paste it into the filter expression text box.
	- If you have already saved a filter to a file as above, you can rename it using the "Rename" menu item.  Enter a new name for the filter in the "Rename Filter" dialog that appears, then press OK.
	- When the cursor is in the filter expression text area, you can use the keyboard shortcut Control-S to save a modified filter.  This will either just save the filter, or bring up the "Save as..." dialog as appropriate.
	- You can remove a filter file using the "Remove" menu item.  Predefined filters (see below) cannot be removed.

Why are some filter expression names surrounded by angle brackets, e.g. <Large text files> in the "Filter name" dropdown list?
	- There are several useful predefined filters provided in the "Filter name" dropdown list; these also serve to demonstrate filter expression syntax. Angle brackets around the filter name are used to distinguish predefined filter expressions from filters that you write.  These include (among others):
•	<Large text files> - search for files with size > 10 megabytes and extension ".txt".
•	<Files modified in last 7 days> - search for files last written to in the last 7 days.
	- You can use these as written, or modify them to make your own filters.
	- Modified predefined filters cannot be saved as such; if you change a predefined filter, select "Save as..." in the File Menu to save it to disk with a new name.
	- If you do not want to see the predefined filters in the list, open the BitCopy Settings dialog and turn off "Show sample filters".

Running BitCopy Commands

What is a command?
	- Commands in BitCopy are tasks that involve copy runs, and may take a while.
	- The possible command types are:
•	Copy - Run an actual file copy operation for a top-level copy set.
•	Try It - Run a "predict only" copy operation for a top-level copy set.  This does not copy any files, but just tells you (in the Copy Journal) which files would be copied.

How do I run a command?
	- You can run commands manually by using the "Copy" or "Try It!" buttons on the main window.
	- The Copy command can be scheduled to run automatically, by adding an enabled schedule associated with a top-level copy set.
	- Many commands can be run simultaneously, although only one command for a specific copy set can run at a time.   While a command is running for the currently selected copy set, the buttons used to run commands manually are disabled, and automatically scheduled commands for that copy set will not be started until the current command has completed.  Also, while a command is running, the Stop button in the main window is enabled (the Stop button will be red when enabled) allowing you to terminate the command.  You can also terminate all running commands using the Stop All button in the main window.

How do I know if a command is running?
	- During a command, the number of running commands is displayed in blue text at the top of the main window, and the Stop All button is enabled (shown in red).  If a command for the currently selected copy set is running, the Stop button is enabled (shown in red).  Clicking Stop will (obviously) terminate the command prematurely.
	- While a copy command is running, the associated copy set will have a green background in the copy sets list of the main window.  Hover the mouser over the Name area of the copy set list to see what kind of copy command is currently running for this copy set.
	- While a copy command is running, a progress column is visible in the copy sets list.  This shows a progress bar indicating the completeion percentage (0-100) of the copy run.
	- While a copy command is running, the Copy Journal will show this copy run at the top of the copy runs list, with a green background.
	- You can close the BitCopy main window (i.e. terminate BitCopy) while a command is running, if desired.  If a command is running, you will be asked it you wish to terminate it.  This has the same effect as first pressing Stop, waiting for the command to be aborted, and then closing the main window.

Copy Journal

How can I see what is happening during a copy run?
	- Open the Copy Journal using the button at the top of the main Window.
	- Copy Journal displays a list of all copy runs (actual copy or "Try It!").  If a copy run is in progress, it will be shown at the top of this list with a green background.
	- In the Copy Journal, the copy run list displays the date/time the run was started, whether the run was scheduled or manual, the elapsed time of the run (if it is completed), the copy set owning the copy run, whether this is a Try It run, the copy mode, the number of files copied up in the run, the total size of the files, and the number of errors encountered (if any).
	- As files are copied, each file will be added to the files list at the bottom of Copy Journal.  This shows the file name, file source and destination folders, the action performed, file size, and the last-write time of the source file.
	- Once the copy run is over, the same information about the copy run will still be available in Copy Journal.  Click on any copy run to see the set of files that were copied during the run.
	- If errors are encountered during a run, they will be displayed in a small list at the bottom of the Copy Journal in red.  (Note that a run is terminated after about 1000 errors.)
	- Note that the "elapsed time" of a run does NOT include time prior to mount requests.  That is, if you are prompted to mount a source/target drive when starting a copy run, the time the run is idle waiting for the mount request is not counted as part of the elapsed time of the run.
	- Note: for convenience, the main window also shows a summary list of retained copy runs for the selected top-level copy set, in a small list at the lower right entitled "Copy runs".

How many copy run records are kept?
	- You can control how many copy run records (for each copy set) are kept using the BitCopy Settings dialog.
•	Use the setting "Limit copy run history disk space" to remove the earliest copy runs (considering all copy sets) when a new copy run is performed, assuming the space for copy runs has exceeded this limit.  Note this is a global limit on the total space used for copy run history, considering all copy sets in totality.
•	Use the setting "Limit copy run history count" to remove the earliest copy runs for a particular copy set when a new copy run is performed for that copy set.
•	You can use both these limits in conjunction to achieve better control on which copy runs are retained.
•	By default, ALL copy runs are retained unless you enable these settings.

How can I navigate within the Copy Journal while a copy run is in progress?
	- Uncheck the Live check box at the top of the Copy Journal (checked by default).  This will stop the journal from updating for each file that is copied in a copy run; when you are done, recheck Live and the display will once again be current.

How can I see which copy runs will be run automatically (scheduled) in the future?
	- Check the box "Show scheduled future runs" at the top of the Copy Journal.  This will display a list of future runs for all copy sets, at the right of the copy run list.  (The future runs list shows scheduled copy runs for about two months in the future.)  You can sort this list by clicking on its column headers; for example, sort by copy set name to see which runs are scheduled for a particular copy set.

What happens if an error occurs during a copy run, so that a file was not actually copied?
	- The copy runs list shows the number of errors encountered during the copy run (usually zero).  If there are errors, click on the line of this copy run; a list of errors will appear at the bottom of the Copy Journal, with the file name, full file path, and the error that occurred.  Errors might include conditions like: the source file was not found; the source file was locked and could not be accessed, the target file could not be overwritten because it was locked, a directory was not available, etc.

I have created lots of "Try It!" runs but they just clutter up my Copy Journal!  How can I hide them?
	- Use the "Show Try It runs" check box at the top of the Copy Journal to hide Try It runs.  This will also hide Try It runs in the main window copy run summary list (at the bottom right of the main window).
	- This check box is also available in the Settings dialog for completeness and does exactly the same thing.

How can I quickly find a particular source file or target file on disk?
	- When a file is selected in the files list of Copy Journal, use the Find Source File button to open a Windows Explorer and automatically navigate to the source file (if it exists).  Similarly, the Find Target File button will navigate to the target file.

Which copy set does a run in Copy Journal belong to?
	- The "copy set" column in the copy runs list tells you which copy set the run belongs to.
	- You can quickly navigate to the copy set (in the main window) by using the Copy Set button above the files list for that copy run.  You can also just double-click any line in the copy runs list for the same effect.

How do I remove (delete) a particular copy run from disk?
	- You can use limits on retained copy runs as described above in "How many copy run records are kept?", or you can delete an individual copy run manually using the Remove button in the Copy Journal.  When you remove a copy run, its summary files are deleted from disk, and it will no longer be shown in BitCopy.  Of course, this has NO EFFECT on the actual source and target files for the copy run; you are just removing the files summary for this copy run from BitCopy.

Drive/Disk Recognition

How does BitCopy know if the source/target drive of a copy set is currently mounted (available)?
	- The simplistic answer would be: just look for the right drive letter!  However, this is too simple in the case of removable drives.
	- By default, Windows will just use the first available drive letter for removable USB drives when they are mounted.  Thus, a particular drive might be assigned to G: at one time, then H: the next time if the drive letter G: is already taken by another drive.  Windows Disk Manager does allow you to make the assigned drive letter permanent for a particular removable drive, but this may not be practical if you deal with a large number (> 26) of removable drives on a regular basis.
	- If you use a CDROM (optical disk) as the source of a copy set, many different CD/DVDs may use the same optical drive (e.g. F:).  When a copy operation is started, BitCopy must ensure that the correct disk is inserted in the optical drive, or prompt the user to insert it if it is not present.
	- To ensure that the correct source/target disk is mounted, BitCopy identifies all disks by their volume serial number, or by their volume label if there is no volume serial number.
	- If you map a network location or disk folder to a new drive letter (using net use or subst from a command prompt), BitCopy will identify this disk solely by its underlying location.

OK, so if I can't just type a drive letter to tell BitCopy the source/target drive of a copy set, what do I do instead?
	- When adding or editing a copy set, you can specify its source/target folder by using the Drives button to see a list of disks or network shares you have previously used.  Use the Add buttons on the Drives dialog (shown below) to add a currently mounted disk (fixed or removable), network share, or a mapped drive.  Click on a drive then press the Select button.  After selecting the source/target drive, select the source/target folder within the drive from the Edit Copy Set Dialog.

	- When adding/editing a disk, you can specify whether it is removable, and if so, whether BitCopy should prompt to mount the disk during a copy operation if the disk is unavailable.  You can also specify a friendly name to use for the disk if desired (by default BitCopy will use the volume label).
	- When adding/editing a network share, you can specify whether to use the appropriate network credentials to access the network share, whether BitCopy should prompt to mount the network share, and a friendly share name if desired.
	- Add Mapped Drive allows you to add a network share that has been mapped to a drive letter via the net use command, or a folder that has been mapped to a drive letter via the subst command.
	- If no copy set is using the drive, you can remove it from the list.  If any copy set still refers to it, you cannot remove it; the resulting error message will tell you which copy set or link is using the drive (as source or target).
	- A Drive that is not currently available (mounted) is shown with a red background.
	- In general use the Refresh button (available on various dialogs or on the main window) to determine which drives are currently mounted.
	- Follow the same procedure to select the source/target drive of a Copy Set Link within a Copy Group.

Since BitCopy works by comparing file last-write timestamps on the source/target, what happens if the source/target is on a remote computer whose clock is wrong?
	- Since various copy operations compare the time stamp of source/target files, it is important to know that the system clock on a remote computer agrees with the clock on the local computer!  When editing a network share or mapped network drive you can enable the time check option.  Then during any copy operation, the system clocks of the computers containing the source/target folders will be compared. If the two clocks diverge by more than a specified tolerance (1-999 seconds), the copy will fail, and a history log message will show the clock divergence.  This history log message is also produced at startup or when you use the Refresh or Refresh All buttons on the main window; you can examine the history log to see if any of the remote server times are out of tolerance.  Note: if your computers run the Windows time service and synchronize the system time periodically with a time server, this should be a very rare occurrence, although occasionally a divergence of 1-2 seconds might occur.

Folder Credentials

What are folder credentials?
	- BitCopy is able to access folders on a network share if the share is available.  Normally, Windows manages the credentials (user name and password) required to access a network share, and you will not need to enter these into BitCopy.
	- However, for some network shares, Windows may not permanently retain the required credentials.  In this case, you can save the credentials for the share in BitCopy (encrypted of course), and these will be used as required to gain access to folders on that share.  This will minimize any user interaction required during a copy run.

What happens if a network share is not available, or my credentials are just incorrect?
	- Windows may take a while to figure this out.  For each credential you enter in the "Manage Folder Credentials" dialog, you can specify a timeout between 1 and 60 seconds, controlling when BitCopy will give up on this network share.  The default is 5 seconds; the longer the timeout for a share, the longer BitCopy will "hang" waiting for the share credentials to validate, so be careful when modifying this timeout value.

How do I enter credentials?  How are they used?
	- Click the "Network Credentials" button at the top of the main window to enter and test credentials for any network share.  You can add, remove, edit, or test any credentials you enter.  You cannot alter credentials while a copy run is in progress.
	- Enter a network path using leading "\\" just as in Windows.  Examples:
		\\192.168.1.10
		\\111.22.333.44\shared
		\\BobsComputer\Fileshare1
	- Enter the user name in the form <Domain or Machine>\<user>.  Examples:
		BobsComputer\RobertUser
		Desktop1\JohnDoe
		MarysComputer\Mary
	- Enter the password using the "Edit" dialog available from the "Manage Folder Credentials" dialog in BitCopy.  When you enter the password, the characters are replaced by masking characters for security.  The password is never visible in plain text on any screen of BitCopy.
	- User passwords are stored using strong encryption in the BitCopy config file, for security.
	- You can enter credentials for "overlapping" network paths.  For example, say you enter credentials for the network path "\\192.168.1.17" on your local network.  Say you also enter credentials for the network path "\\192.168.1.17\shared".  Then when credentials are required for a copy operation, the credentials with the longest match will always be used in preference to any with a shorter match.  That is, if a copy set has the source folder "\\192.168.1.17\shared\MyFiles", the saved credentials for "\\192.168.1.17\shared" will be used instead of those for "\\192.168.1.17".
	- Credentials are only used if they are required (after program start).  That is, if a source/target folder for a copy set is already available, no credentials will be used.  If not available, matching credentials will be used to try to make it available.
	- Credentials will only be used during a copy operation (whose source/target is a network share) if you check "Use credentials" when editing the network share.  If there is a credential match, it will be shown in blue to the right of the check box.

Managing BitCopy Configurations

How do I save some/all of my copy set specifications so I can restore them later?
	- The "Config" menu button at the top of the main BitCopy window lets you export all or part of the existing configuration to a ".CopySilo" file, or to import all or part of a saved configuration from a ".CopySilo" file.
	- Export saves selected copy set/group/links to a new CopySilo file.  If desired, you can also include file filters, drives or network credentials in the same file.
	- Import loads selected copy sets/groups/links from a previously exported CopySilo file.  An imported copy set will automatically include all its child copy sets, schedules, filters, etc.  You can also import any file filters, drives or network credentials that were previously included in the CopySilo file.  You cannot import while a copy is running.
	- Exporting a group will by default export all its links, although you can exclude links manually.  Exporting a link will automatically export its associated copy sets.  
	- Similarly, importing a group will by default import all its links, although you can exclude links manually.  Importing a link will automatically import its associated copy sets.
	- Use import/export to transfer your existing copy set/group/link specifications to BitCopy on another computer.
	- You can also use import/export to save a copy set specification to a CopySilo file so you can restore it later to the same computer.  This allows you to undo any changes to a copy set by importing its previous state from a saved CopySilo file.
	- Use import to recover drives, network credentials or file filters even though you have modified them or removed them entirely.
	- Note: If you attempt to import a copy set/group that already exists in BitCopy, you can resolve the conflict by replacing the existing copy set/group with the import, ignoring the import, or adding the import with a new name.
	- Note: Scheduled copies will not be run while the Import dialog is open.

How do I save the entire BitCopy configuration, so I can restore it later?
	- The "Config" menu button at the top of the main BitCopy window lets you backup the entire BitCopy configuration to a ".cfg" file, or to restore saved configurations from ".cfg" files.
	- BitCopy automatically retains backups of the current configuration as of the previous hour, day, week, and month.  These 4 .cfg files are saved in
	%localappdata%\BitCopy\BackupConfig\AutomaticBackups
in the timestamped form BitCopy.<YYYYMMDD_hhmmss>.cfg, e.g. "BitCopy.20210718_093618".  To restore from any of these backups, press the "Config" menu button and select "Restore entire configuration".  Select the desired .cfg file, load it, then press the green Restore button to replace the entire BitCopy configuration with the contents of this file.
	- Note: whenever you restore the entire BitCopy configuration, a backup of the existing configuration will first be stored in:
	%localappdata%\BitCopy\BackupConfig\RestoreCheckpoints
in the timestamped form BitCopy.<YYMMDD_hhmmss>.cfg.  You can use restore from these checkpoints in the same way as you restore from an automatic backup.
	- "Restore entire configuration" will restore every aspect of the BitCopy configuration, except for the copy run history of copy sets, as shown in the Copy Journal.
	- Note: Scheduled copies will not be run while the Restore dialog is open.

Splash Screen

What does the splash screen show?
	- BitCopy version information: 
	- Validation of all stored folder credentials at startup.
	- License validation step.
	- The elapsed time for initialization of the program.

The splash screen is annoying!  Can I turn it off?
	- MollieSoft is deeply sorry that you do not appreciate our beautiful splash screen.  However, to mollify the occasional customer with a distaste for splash screens, we have provided a check box in the "Settings" dialog that you can use to turn the splash screen off.  :>(

Miscellaneous

How do I navigate between BitCopy windows?
	- Each of the BitCopy views (Main, Copy Journal, and History Log) has buttons at the top allowing you to navigate from the current view to the other views.
	- There is only one window for each of the views; if the view is not currently open, the corresponding button will open it.
	- BitCopy will remember which views are open and when restarted, will recreate the same views with their last sizes and positions.

Can I disable the little yellow tooltip pop-up windows that appear over controls?
	- Yes; just uncheck "Enable Tooltips" in the Settings dialog.

Can I disable the sounds played when a command starts and stops?
	- Yes; just uncheck "Enable Sounds" in the Settings dialog.

The text in BitCopy is too small for me to read comfortably; is there a way to make it bigger?
	- Yes; press the key combination Control+Numpad-PLUS to step the font size up, and Control+Numpad-MINUS to step it back down.  That is, hold down the Control key while pressing "+" or "-" on the numeric keypad.  (Note this does not work while a dialog is open.)
	- There are four step sizes: small, medium, large, and extra large.  (These correspond to the Windows font point sizes 8.25, 9, 9.75, and 10.25 respectively.)
	- Of course, increasing the font size will make all the views and dialogs correspondingly larger, and decreasing it will make them smaller.
	- The new font size will be remembered whenever you re-open a view or dialog, or restart BitCopy.
	- You can also set the font size using the Settings dialog.  Select the appropriate font-size radio button (small, medium, large, extra large); the new font size will be applied once you press OK.

I like "Try It" runs and the information they contain; however, sometimes I don't want them to clutter up the Copy Journal or the main window copy run list.  Can I just make these invisible?
	- Yes.  In the "Settings" dialog, uncheck the "Show Try It runs" check box.  This will hide all "Try It" runs from the Copy Journal or the main window copy run list.  (The check box "Show Try It runs" at the top of the Copy Journal does exactly the same thing.)

What is the History Log?
	- Every time BitCopy is started, a new History Log file is created in the directory 
		%localappdata%\BitCopy\Logs.
(Just type the preceding into a Windows Explorer navigation bar to display the contents of this directory, or press the button "Explore Logs" on the History Log window.)  The files are named using the format
		 BitCopyLog.YYYYMMDD_hhmmss.log,
e.g. BitCopyLog.20170701_143932.log is the file created 2017/07/01 at 14:39.  These files contain diagnostic information relevant to the operation of BitCopy, and can be opened with Notepad.
	- To see what is being written to the History Log in real time, click the History Log button at the top of the main BitCopy window to open the History Log window.
	- At startup, the History Log will display the current BitCopy version and license information.
	- The History Log shows a short summary of each command executed and any errors encountered.
	- The "Explore Logs" button at the top right of History Log will open a Windows Explorer, and navigate to the logs directory containing history logs for all executions of BitCopy.

What else is in %localappdata%\BitCopy?
	- This directory contains your license information.
	- The "Config2" subdirectory contains timestamped BitCopy.cfg files, which hold various BitCopy program settings and information about your copy sets.
	- The "Logs" subdirectory contains BitCopy log files (the current log file is shown in the History Log window).
	- The "Summary" subdirectory contains information about the details of the settings and files relating to each individual copy run.
	- The "Filters" subdirectory contains any file filter expressions you have saved.
	- Never modify any file in this directory or any subdirectory, or the results will be "unpredictable".

What happens if I minimize BitCopy?
	- When minimized, BitCopy is only visible as an icon in the System Tray area.  All existing views will also be minimized, and will be restored if you double-click the tray icon.  While minimized, any automatically scheduled copy runs will of course be run at the time specified; you will see a pop-up notification in the system tray when the run starts and ends.  You can turn these off if desired using the "Show tray notifications" check box in the Settings dialog.
	- If you close BitCopy while minimized (using "Exit" on the right-click menu available on the tray icon), BitCopy will start as minimized when restarted.  You can also use the "Start minimized" checkbox in the Settings dialog if you prefer to always start BitCopy as minimized to the System Tray.

Where do I send comments or suggestions about BitCopy?
	- Email comments or suggestions to:
		support@molliesoft.com
	 or to
		molliesoft@comcast.net