﻿1. About
FastCopy is the Fastest Copy/Delete Software on Windows. 

It supports UNICODE and over MAX_PATH (260 characters) file pathnames. 

It automatically selects different methods according to whether Source and DestDir are in the same or different HDD. Diff HDD Reading and writing are processed respectively in parallel by separate threads. 
Same HDD Reading is processed until the big buffer fills. When the big buffer filled, writing is started and processed in bulk.  

Because Reading/Writing are processed with no OS cache at all, other applications don't easily become slow. 

It can achieve Reading/Writing performance that is close to device limit. 

Include/Exclude Filter (UNIX Wildcard style) can be specified. 

It runs fast and does not hog resources, because MFC is not used. (Designed using Win32 API and C Runtime only) 

You can modify this software, because all source code has been opened to the public in the BSD license. 
2. License
Copyright 2004-2012 SHIROUZU Hiroaki All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 
THIS SOFTWARE IS PROVIDED BY SHIROUZU Hiroaki ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SHIROUZU Hiroaki OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
3. Environment
Windows 98/Me/NT/2000/XP/2003/Vista/2008/Win7

4. Install
Install
Please run setup.exe, and install it in a new directory/folder. 
If you want to install in USB memory, please copy the two files "fastcopy.exe" and "fastcopy.chm" to USB memory. (In this case, shell extension can't be used.) 
Uninstall
If you want to uninstall, please run setup.exe located in the installed directory.
(Uninstall removes shortcut and unregister shell extension) 
5. Usage
If main window is minimized, it is stored in task tray. 
(In addition, the icon rotates while the copy is operating. )

Source / DestDir
FastCopy retains the history of 10 entries in Source/DestDir. (This can be increased or decreased in the Option | Main settings dialog.)
If you want to specify two or more files/dirs in the Source field, please use semicolon as a separator.
If you want to add files/dirs to the Source field by using drag and drop, simply drop with pushing CTRL button.

You can also drag & drop to DestDir field. 
Regarding different behavior whether the end of DestDir character is '\' or not. 
Source is one directory and the end of DestDir character is NOT '\'

Copy source directory's contents to DestDir.
(DestDir\Contents_of_SourceDir) 

Other cases

Copy source directory that including it self to DestDir.
(DestDir\SourceDir\Contents_of_SourceDir) 
(mini tips) If you want source directory's contents to drive top, please append "*" to source directory.
For example, if Source is "C:\Folder1\*" and DestDir "D:\", result is D:\(Contents_of_Folder1) 
Operation mode
Mode Detail 
Diff (No Overwrite) Copy if the same filename doesn't exist in destination. 
Diff (Size/date) Copy if size or date is different, or if it doesn't exist (in default) 
Diff (Newer) Copy if source file timestamp is newer or doesn't exist. 
Copy (Overwrite all) Always copy/overwrite all. 
Sync (Size/date) Copy if size or date is different, or doesn't exist. In addition, delete all destination files/directories that don't exist in source.  
Move (Overwrite all) Always copy/overwrite all and delete all copied source files. (It is able to change "Move (Overwrite all)" -> "Move (Size/date)" in settings dialog.) 
Delete Delete all files/dirs by force. 

Buttons & Options
Execute The copy operation is executed. While copy is executing, this button changes "Cancel..." button. 
(The confirmation dialog is displayed, if this button is pushed with pushing CTRL button) 
Listing The files and directories list that will be copied and deleted are displayed. '+' means copying, and '-' means deleting.(Compare file pairs that will be skipped(except skipping by filter), if this button is pushed with pushing CTRL button(button label "listing" -> "listing+v")) 
Buffer size Specify the size(MB) of the main buffer for Read/Write oprations.  
Speed Control Specify "Full Speed", "Auto Slow"(*1), "90%"~"10%", "Suspend".
If you feel it is hogging resources, it is recommended to set to "Auto Slow" (If it detects mouse moving/active window changing (and fastcopy window isn't foreground), it is slowed down).
If "Full Speed" isn't selected, low process priority class is set.
(This setting is not saved by job manage) 
NonStop Don't interrupt even if errors occur by Read/Write/Delete, and keep processing as much as possible. 
(However, errors are displayed in the main window, and recorded in the error log.) 
Verify Verify written files data by MD5(or SHA-1. If you want to use SHA-1, write [main] Using_MD5=0 in fastcopy.ini)
... Action detail: Read(Src) -> MD5(Src) -> Write(Dst) -> Read(Dst) -> MD5(Dst) -> Compare MD5(Src/Dst) (Of course, all actions are processed in parallel as much as possible)  
Estimate Display the estimated complete time. This means will cause FastCopy to investigates source tree before starting. 
Top FastCopy window is always top-level. 
Start at once Start at once without waiting for the finish of other FastCopy instance(s) executing. (This button doesn't show when other FastCopy isn't copying.) 
"?" Show help 
(*1) It is slowed if fastcopy window isn't foreground and it is detected mouse moving, by waiting beetween I/O, changing process priority, changing I/O priority(Vista), and changing maximum I/O size.

ACL Copy Access Control List (ACL). (Only applicable to NTFS) 
Alt Stream Copy Alternate Stream. (Only applicable to NTFS) 
Wipe & Delete (prevent deleted files reviving) Rename filename and Overwrite random data before deleting. Alternate stream isn't overwritten. If NSA method is checked in setting dialog, Overwriting Random data process runs two times, and overwriting NULL data process runs once. 

Filter Enable Include/Exclude/Date/Size filter. Note: It is always disabled in move mode. 
Include Copy only the files/directories that match up specified strings(UNIX Wildcard style).
If you want to specify two or more strings, please use semicolon as separator.
If you want to specify directories, please add '\' to the end of directory name.
(For example: *.txt; My Folder [0-9]\)
 
Exclude Don't copy the files/directories that match up specified strings. 
The following filters are enabled when check "Option" -> "Show Extended filter". 
FromDate Don't copy the files that timestamp are older than specified date(format).
This can be specified by not only absolute format ("20090322") but also by relative format (10days before ... "-10D"). 
ToDate Don't copy files with timestamps newer than this specified date. 
MinSize Don't copy the files with sizes that are smaller than specified size.
High number can be abbreviated using K/M/G/T character (Kilo/Mega/Giga/Tera). 
MaxSize Don't copy the files with sizes bigger than specified size. 

Include/Exclude filter(wildcard) format. * Zero or more arbitrary characters 
? One arbitrary character 
[abc] One character in "abc" 
[!abc] One character except "abc".
'^' can also be used instead of '!'. 
[a-z] One character in "abc...xyz" 
\ Escape character (However, if '\' is the end of string character, it means a directory) 
(Attention: In the future, filter string specification may be changed.) 

FromDate/ToDate filter format. Absolute Specify "YYYYMMDD"(year/month/day).
ex) "20090101" 
Relative Specify "+|- number W|D|h|m|s".
W|D|h|m|s means Weeks/Days/hours/minutes/seconds.
ex) "-12h" (This is case sensitive.) 

Junction and SymLink
Junction(include MountPoint) and Symlink is understood in ver1.70 or later.
Mode Details 
Diff/Copy Copy Junction/Symlink itself.
If you want to change the copy Junction/Symlnk's target, it can be changed in the Options | Main settings dialog. 
Move Always move Junction/Symlink itself. 
Delete Always delete Junction/Symlink itself. 

HardLink
HardLink can be reproduced as much as possible, if specify /linkdest option in ver1.95 or later.
(In running, "TotalFiles:" format changes "number_of_files (number_of_dirs)" to "number_of_files / number_of_created_hardlinks (number_of_dirs)").

Two very Important notes:
1. It needs 2-4MB per 10 thousand hardlink entity files. (It depends on path length)
2. It can decrease speed, because it opens not only copying files but also skip files.

If /linkdest option is enabled, /recreate option is enabled tacitly.
If you want always to enable /linkdest optoin, write [main] linkdest=1 in fastcopy.ini file.

Job Manage -> Add/Del Job
Register/Restore parameters in main window as named job. Add/Modify Add/Modify prameters in main window(Source/DestDir, Operation mode, Buffer size, Nonstop/Verify/Estimate/ACL/AltStream/Wipe&Delete/Filter checkboxes, Filter strings, HDD mode) as named job. 
Delete Delete registered job. 

Option -> Main Settings
General settings. (change Default values, I/O parameters, and Copy Options, etc) 
Option -> Shell Extensions
Register copy/delete menu items with Explorer's right click menu and right drag&drop menu.

Option -> Auto/Same/Diff HDD mode
Specify Auto/Same/Diff HDD mode(default: Auto).
CTL + K shortcut toggles between disk modes (auto -> same -> diff ->...)

Option -> Swap Source <-> DestDir
Swap Source for DestDir (for mutual update or etc).
Source/DestDir will be modified based on different behavior whether the end of DestDir character is '\' or not. (For example, If Source is "C:\AAA\BBB" and DestDir is "D:\CCC\", then Source becomes "D:\CCC\BBB" and DestDir becomes "C:\AAA\")
If Source has two or more files/directories, this menu item is disabled.
CTL+ALT+S is shortcut of this function. 
Option -> Post-Process
Select Post-Process.
Allows user to change default settings (sound, command, and standby/hibernate/shutdown) after copy process/execution is complete. Also, user can add new Post-Process settings. 
6. Command Line
A basic format is as follows. 

fastcopy.exe [/options] file1 file2 ... [/to=dest_dir]


1. Please use space character(' ') as separator(not semicolon).
If filename contains space character, please enclose with dobule quotation marks.
Ex) fastopy.exe C:\Windows "C:\Program Files" /to="D:\Backup Folder\"

2. If you want to wait to finish, please use start /wait command.
Ex) start /wait fastcopy.exe [/options]... 
Supported options are as follows. (Please don't put space characters before and behind "=") 

/cmd=(noexist_only|diff|update|sync|force_copy|move|delete) ... Specify operation mode.
(By default, diff mode is used. If delete mode is specified, then "/to=" option isn't used.) 
cmdline in GUI 
noexist_only Diff (No Overwrite) 
diff Diff (Size/date) 
update Diff (update) 
force_copy Copy (Overwrite) 
sync Sync (Size/date) 
move Move (Overwrite) 
delete Delete 

/auto_close ... Close automatically after execution is finished with no errors. 

/force_close ... Close automatically and forcedly after execution is finished. 

/open_window ... Don't stored in the task tray. 

/estimate ... Estimate complete time. 

/no_exec ... Don't start to execute. 

/no_confirm_del ... Don't confirm before deleting. 

/no_confirm_stop ... Don't Show error dialog, Even if critical errors occurred. 

/error_stop ... Show error dialog (and operation is interrupted), if an error occurred. (to disable, /error_stop=FALSE) 

/bufsize=N(MB) ... Specify the size(MB) of the main buffer for Read/Write opration. 

/log ... Write the operation/errors information to the logfile(fastcopy.log). (to disable, /log=FALSE) 

/logfile=filename ... Specify the filename of logfile. 

/filelog ... Write to the filelog(detail of copy/delete files). It is stored TIMESTAMP.log in FastCopy/Log directory. If using verify mode, write digest data(default:md5) as additional data. (To specify filelogname, /filelog=filename) 

/utf8 ... Write to the logfile using UTF-8 encoding (supports Unicode). 

/skip_empty_dir ... Skip to create empty directories when /include or /exclude option is used. (to disable, /log=FALSE) 

/job=job_name ... Specify the job that is already registered. 

/force_start ... Start at once without waiting for the finish of other FastCopy executing. 

/disk_mode=(auto|same|diff) ... Specify Auto/Same/Diff HDD mode. (default: Auto) 

/speed=(full|autoslow|9-1(90%-10%)|suspend) ... Specify speed control level. 

/srcfile="files.txt" ... Specify source files by textfile. User is able to describe 1 filename per line. (Attention: If a lot of files are specified, it will take many times to display/refresh Source combobox.) 

/srcfile_w="files.txt" ... same as "/srcfile=", except describing by UNICODE. 

/include="..." ... Specify include filter. (details) 

/exclude="..." ... Specify exclude filter. (details) 

/from_date="..." ... Specify oldest timestamp filter. (details) 

/to_date="..." ... Specify newest timestamp filter. (details) 

/min_size="..." ... Specify minimum size filter. (details) 

/max_size="..." ... Specify maximum size filter. (details) 

/wipe_del ... Rename filename and wipe(overwrite Random data) before deleting. 

/acl ... Copy ACL (only NTFS) (to disable, /acl=FALSE) 

/stream ... Copy Alternate Stream (only NTFS) (to disable, /stream=FALSE) 

/reparse ... Copy junction/mountpoint/symlink itself(to disable, /reparse=FALSE) (details) 

/verify ... Verify written files data by MD5(or SHA-1) (to disable, /verify=FALSE) (details) 

/linkdest ... Reproduce hardlink as much as possible. (details) 

/recreate ... Change updating behavior "overwrite the target" to "delete and recreate the target". (If /linkdest option is enabled, this option is enabled by default.) If you want always to enable, write [main] recreate=1 in fastcopy.ini. 

/postproc=actoin_name ... Specify post-process action name (to disable, /postproc=FALSE) 

Ex) Copy C:\Test Folder to D:\Backup Folder by "diff(Size/Date)" mode is...
  fastcopy.exe /cmd=diff "C:\Test Folder" /to="D:\Backup Folder\"

7. Warning
In some modes, destination files that exist with the same filename in source directories, are overwritten forcedly without confirming. 
In sync mode, destination files that don't exist with the same filename in source directories, are deleted forcedly without confirming.
In delete mode, target files and directories are deleted forcedly without confirming. 

If FastCopy has bugs, there is a possibility of serious problem.
Please use at your own risk. (See 2. License) 
8. Latest Version/Contact
There is latest version & bulletin board in following URL. 
http://ipmsg.org/tools/fastcopy.html 
http://ipmsg.org/private/ 
email:  
9. Misc
The setting file(FastCopy.ini) is ... 

Vista or later and installed under \Program Files, it stored in \Users\(USER)\AppData\roaming\FastCopy\ (Menu File(F) -> UserDir(U))
Other case, it stored in the same directory of FastCopy.exe 

The core routine of high performance copy is independent from GUI, you can use it(on BSD license) in your applications.

If FastCopy terminated abnormally, fastcopy_exception.log is generated.
(Please send this file to author, I will use for quality improvement) 
10. ToDo
Direct network communication mode between two fastcopy processes. (Don't use SMB protocol) 