Warning : Original document is written in Japanese.
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.
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
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.
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.)
If you want to uninstall, please run setup.exe located in the installed directory.
(Uninstall removes shortcut and unregister shell extension)
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.
Copy source directory that including it self to DestDir.
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)
|Diff (No Overwrite)
||Copy if the same filename doesn't exist in destination.|
||Copy if size or date is different, or if it doesn't exist (in default)|
||Copy if source file timestamp is newer or doesn't exist.|
|Copy (Overwrite all)
||Always copy/overwrite all.|
||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 all files/dirs by force.|
Buttons & Options
||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)
||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"))|
||Specify the size(MB) of the main buffer for Read/Write oprations. |
||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)
||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 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)
||Display the estimated complete time. This means will cause FastCopy to investigates source tree before starting.|
||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.)|
(*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.
||Copy Access Control List (ACL). (Only applicable to NTFS)|
||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.|
Include/Exclude filter(wildcard) format.
||Enable Include/Exclude/Date/Size filter. Note: It is always disabled in move mode.|
||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]\)
||Don't copy the files/directories that match up specified strings.|
|The following filters are enabled when check "Option" -> "Show Extended filter".|
||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").
||Don't copy files with timestamps newer than this specified date.|
||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).
||Don't copy the files with sizes bigger than specified size.|
(Attention: In the future, filter string specification may be changed.)
FromDate/ToDate filter 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)
|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.
||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.
||Always move Junction/Symlink itself.|
||Always delete Junction/Symlink itself.|
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 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 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
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
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 "=")
... Specify operation mode.
(By default, diff mode is used. If delete mode is specified, then "/to=" option isn't used.)
|noexist_only||Diff (No Overwrite)|
... Close automatically after execution is finished with no errors.
... Close automatically and forcedly after execution is finished.
... Don't stored in the task tray.
... Estimate complete time.
... Don't start to execute.
... Don't confirm before deleting.
... Don't Show error dialog, Even if critical errors occurred.
... Show error dialog (and operation is interrupted), if an error occurred. (to disable, /error_stop=FALSE)
... Specify the size(MB) of the main buffer for Read/Write opration.
... Write the operation/errors information to the logfile(fastcopy.log). (to disable, /log=FALSE)
... Specify the filename of logfile.
... 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)
... Write to the logfile using UTF-8 encoding (supports Unicode).
... Skip to create empty directories when /include or /exclude option is used. (to disable, /log=FALSE)
... Specify the job that is already registered.
... Start at once without waiting for the finish of other FastCopy executing.
... Specify Auto/Same/Diff HDD mode
. (default: Auto)
... Specify speed control level.
... 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.)
... same as "/srcfile=", except describing by UNICODE.
... Specify include filter. (details
... Specify exclude filter. (details
... Specify oldest timestamp filter. (details
... Specify newest timestamp filter. (details
... Specify minimum size filter. (details
... Specify maximum size filter. (details
... Rename filename and wipe(overwrite Random data) before deleting.
... Copy ACL (only NTFS) (to disable, /acl=FALSE)
... Copy Alternate Stream (only NTFS) (to disable, /stream=FALSE)
... Copy junction/mountpoint/symlink itself(to disable, /reparse=FALSE) (details
... Verify written files data by MD5(or SHA-1) (to disable, /verify=FALSE) (details
... Reproduce hardlink as much as possible. (details
... 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.
... 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\"
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
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)
Direct network communication mode between two fastcopy processes. (Don't use SMB protocol)
|v2.11||Fix to ignore command line and shell extension in English GUI mode|
Prevent hazy display on 120DPI mode of Vista/7.
Fix to sometimes fail update copy with ACL/Stream.
Enable to select updating span for information (250/500/1000ms).
Show Job name to main window title.
Add taskbar minimzie mode instead of tasktray.
Add Post-process command condition.
|v2.08||Append selected directory to source field, if it is pushed OK button in Source directory Select Dialog with pushing CTRL key. Fix save path history problem(v2.07 only)|
|v2.07||Prevent autocomplete of combobox at resizing main window. misc refine.|
|v2.06||Fix exception at verify mode(v2.05 only).|
|v2.05||Fix not to save settins in Win98. Enable to select writing ACL/AltStream errors to the log.|
|v2.04||Enable drag & drop in admin mode on UAC. settings dialog and misc refine.|
|v2.03||Fix "Elevate" menu item didn't work in English UI.|
|v2.02||Release x64 native version. Store fastcopy.ini and logfiles in \Users\(USER)\AppData\roaming\FastCopy, if installed in \Progmram Files in Vista or Win7(UAC on/off is unrelated). Misc refine/fix.|
|v2.01||Fix not to finish "move" in same HDD rarely. Restore not to require absolute path.|
|v2.00||Add simple compare function("listing" with CTRL button). Store fastcopy.ini and logfiles in \Users\(USER)\AppData\roaming\FastCopy, if UAC is enabled and installed in \Progmram Files. Enable manual settings of Physical Drive group. Enable 32bit shell extension in 64bitOS. Fix exception when deleting Job.|
|v1.99r4||Adjust destination filename to source filename when both upper/lower case are different (except "overwrite all" mode). Fix showing no detail error.|
|v1.99r3||Fix automatically decision of HDD mode problem.(v1.99r2 only) Improve to estimate complete time.|
|v1.99r2||Add detail filelog option(/filelog). Enable filter in move mode. Speed up starting (Replace API's inifile access by original routine.) Affect filter for the files those are specified direct in Source EditBox. Modify /srcfile option when using MBCS in srcfile contents. Additionally, refinement|
|v1.98||Add Extended (filesize/timestamp) filter. ("Option" -> "show extended filter")|
|v1.97||Correct that sometimes it failed to play sound in post-process action. Additionally, refinement|
|v1.96||If /linkdest option is enabled, change updating behavior "overwrite the target" to "delete and recreate the target". Add option(/recreate) that change updating behavior "overwrite the target" to "delete and recreate the target", regardless of specifying /linkdest option.|
|v1.95||Add reproduce hardlink option(/linkdest). Change showing Post-Process notice dialog as foreground. Correct wrong freeing memory at termination.(v1.93-v1.94) Correct that sometimes ACL/Stream copying failed.|
|v1.94||Correct that helpfile can't be opened.(v1.93 only)|
|v1.93||Add Post-Process(shutdown or etc) menu. Add "open log" menu. Add /srcfile option.(specify source files by textfile). Correct that JobMng saved "Delete" mode as "move" mode(v1.80-v1.92 only). Correct that installation option(creating shortcut) didn't work at Non-English OS.(v1.92 only)|
|v1.92||Correct English document. Add "run in task tray" option in shell extension. Correct that sometimes incomplete file remained when error occurred.|
|v1.91||Correct that sometimes "wipe and delete" failed. Correct that "move with verification" wasn't finished rarely. Correct that network drive in directory select dialog didn't show.|
|v1.90||Speed up verification. (I/O and verification are processed by parallel.) Switching SHA-1 to MD5 for verification as default.(If you want to use SHA-1, write [main] Using_MD5=0 in fastcopy.ini). Add to fix window position/size in menu. Add Source/DestDir swapping in menu. |
|v1.84||Correct wildcard filter problem. (when many wildcard strings were registered, unregistered string was occured rarely. To be exact, when sum of registered characters are just 62*n, boundary string wasn't registered)|
|v1.83||Using OS cache at reading option is ON, although it is disabled OS cache for verify reading.|
|v1.82||Add using OS cache at reading option.(OS Cached file reading will be faster. But not OS cached file reading require new OS cache area, and it will has bad effect for virtual memory area(swap or etc). this option is not recommended for normal use.)|
|v1.81||Correct move with verify mode.(if verify error occurs, sometimes process doesn't finish.)|
|v1.80||Add verify option by SHA-1. Add "paste" menuitem in shell extension. Add move(Size/date) mode. Add move as one by one option. Auto reduce MaxIO size(if ERROR_NO_SYSTEM_RESOURCES is occured). Add suppressing confirm dialog at stopping error(/no_confirm_stop).|
|v1.71||Correct registering shell extension problem (Win2000/Me/98 only)|
|v1.70||Interpret Junction/Symlink (by default, it is copied Junction/Symlink itself (not target childs). In remove mode, it is always removed only Junction/Symlink itself). Elevate Admin(for Vista UAC). Add shell extension for 64bitOS. Add logging as UTF-8 option. Add logging filename option(/logfile=). Expand error log area.|
|v1.63||Change size limit of filter strings(62->2048chars)|
|v1.62||Correct CreateFile error that is caused by generating illegal dest path.(1.60/61 only)|
|v1.61||If string length is over 8192 chars in src field, it is truncated 8192 chars at executing. (v1.60 only)|
|v1.60||NTFS Access Control List(ACL), Alternate Stream support. Add Wipe & Delete option (normal and NSA method) for delete mode. Change Process Priority Class at using Auto Slow function.Changing "Auto Slow" checkbox to slider control. |
|v1.55||Modify PopupDialog Position at tasktray mode|
|v1.54||Modify for NT4.0|
|v1.53||When executing in tasktray by command line, it don't get focus. In the multi monitor, the window shows in the monitor that has mouse pointer. Modify to enable /error_stop option.|
|v1.52||Addition of Auto Slow function. It is corrected that too strictly time stamp judgment in some UDF filesystems. It is corrected that control specification (=FALSE) of the command line option did not work effectively.|
|v1.51||When two or more different directories are specified for src and using estimating option, it terminated abnormally sometimes occasionally.|
|v1.50||Enable to the filter specification in the synchronous mode.|
|v1.40||Addition of job management function. Addition of preview listing function. Addition of multiple fastcopy process control option. When the filter is specified, the option not to make an empty directory is added. Addition of automatic operation/same/another HDD mode specification. The resize of the main window is possible. Informative label of API error. Additionally, refinement|
|v1.32||It is corrected that the Include/Exclude filter was invalid at the command line. Additionally, refinement|
|v1.31||It is corrected to have fallen immediately after execution when a lot of specification is done with the Include/Exclude filter occasionally.|
|v1.30||Include/Exclude filter function addition. When drag & is dropped in the same directory, the reproduction is made possible. It adds it by the Source selection the file selection dialog. In addition, some speed-up. Do not end excluding the deletion mode automatically when start by way of the shell + canceling. Other refinement.|
|v1.21||A part of phenomenon of not coming out the shell enhancing menu in the environment (It is v1.20's enbug) is corrected.|
|v1.20||Forecast function addition of copy completion time. It is corrected not to have functioned occasionally though it two or more file selection + opens by enhancing the shell. Other refinement|
|v1.12||Option of making to submenu addition of shell enhancing. It is corrected to have hardened when a large amount of file is selected by way of the shell occasionally (Only v1.10-1.11). The behavior of the shell enhancing with Nettowarcpras is changed. Other refinement|
|v1.11||In the environment, a part of problem that execution cannot begin is corrected.|
|v1.10||Making of the main window (Correspond to the drag & drop etc. of the UNICODE file name) UNICODE. To enclose the path name with ""when drag & is dropped, the file of the path name including the semicolon is changed. Mode addition that doesn't put out confirmation dialog when shell start is executed. It is corrected that the shell enhancing and the directory under the control of the start menu did not open it when it is effective occasionally. Other refinement.|
|v1.00||1.00 release (2005/03/10)|
|v0.50||1st alpha release (2004/09/27)||