The best one is still xxcopy .bat files. Learning curve is steep (I've used it 20 years and still google for help). The latest versions need XP (or maybe Win7 to run). I actually use an ancient version running on Windows 2000:
XXCopy v2.97.2 (last for win2k)
Later versions have ridiculous network PC licensing fees and v2.97.2 works fine for me. Note the developer recently passed away, and the website indicates licenses aren't available to purchase.
The website is still there:
http://www.xxcopy.com/
Most (all) the versions are on the server, but you have to create a link to them (here's 2.97.2):
http://www.xxcopy.com/download/xxfw2972.zip
http://www.xxcopy.com/download/xxfw2972.zip
The last version:
http://www.xxcopy.com/download/xxfw3333.zip
An exclusion file's contents I use for 2000, XP, Windows 7:
"\backupscripts\*\*\"
"Desktop.ini"
"DfsrPrivate"
".DS_Store"
"\ghosts\*\*\"
"\nPVR\*\*\"
"pagefile.sys"
"\recycler\*\*\"
"\$RECYCLE.BIN\*\*\"
"\System Volume Information\*\*\"
"Thumbs.db"
"\Virtual Machines\*\*\"
"\Windows\*\*\"
My script (running on Windows 2000) maps a local or network drive to a single letter folder on a 10TB internal drive on a Win7 box, copies folders/files, then unmaps. You have to create the destination folder in advance with Windows Explorer. Make sure to enable compression for the whole destination drive (and your externals). After the script runs, I run a simple script to mirror the 10TB internal to a 10TB USB3.0 external (which I later store offsite). Note a logfile is created for each backup.
Da big script:
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
set BKto10TBEr=0
ping 127.0.0.1 -n 20
if not %BKto10TBEr% == 0 goto BKScrEnd
set BKto10TBEr=AVPC-D
net use q: \\avpc\drives\d
ping 127.0.0.1 -n 20
net use r: \\nw7\j\v\d
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-typical.txt | tee bk-AVPC-D_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=BASS-E
net use q: \\bass\e
ping 127.0.0.1 -n 20
net use r: \\nw7\j\s\e
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-BASS-E.txt | tee bk-BASS-E_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=DXPHP-C
net use q: \\dxp\drives\c
ping 127.0.0.1 -n 20
net use r: \\nw7\j\x\c
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-typical.txt | tee bk-DXPHP-C_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=DXPHP-H
net use q: \\dxp\drives\h
ping 127.0.0.1 -n 20
net use r: \\nw7\j\x\h
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-typical.txt | tee bk-DXPHP-H_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=DXPHP-I
net use q: \\dxp\drives\i
ping 127.0.0.1 -n 20
net use r: \\nw7\j\x\i
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-typical.txt | tee bk-DXPHP-I_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=DXPHP-J
net use q: \\dxp\drives\j
ping 127.0.0.1 -n 20
net use r: \\nw7\j\x\j
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-typical.txt | tee bk-DXPHP-J_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=newlaptop-D
net use q: \\newlaptop\d
ping 127.0.0.1 -n 20
net use r: \\nw7\j\n\d
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /EX:winexcl-typical.txt | tee bk-newlaptop-D_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=nw7-E
net use q: \\nw7\e
ping 127.0.0.1 -n 20
net use r: \\nw7\j\7\e
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-nw7-E.txt | tee bk-nw7-E_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=BLN2-C
net use q: \\bln\c
ping 127.0.0.1 -n 20
net use r: \\nw7\j\b\c
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-BLNc.txt | tee bk-BLN2-C_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=BLN2-D
net use q: \\bln\d
ping 127.0.0.1 -n 20
net use r: \\nw7\j\b\d
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-typical.txt | tee bk-BLN2-D_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=BLN2-E
net use q: \\bln\e
ping 127.0.0.1 -n 20
net use r: \\nw7\j\b\e
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-BLNe.txt | tee bk-BLN2-E_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=BLN2-F
net use q: \\bln\f
ping 127.0.0.1 -n 20
net use r: \\nw7\j\b\f
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-typical.txt | tee bk-BLN2-F_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=BLN2-G
net use q: \\bln\g
ping 127.0.0.1 -n 20
net use r: \\nw7\j\b\g
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-typical.txt | tee bk-BLN2-G_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=P4-G
net use q: \\p4\g
ping 127.0.0.1 -n 20
net use r: \\nw7\j\p\g
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-typical.txt | tee bk-P4-G_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
set BKto10TBEr=P4-H
net use q: \\p4\h
ping 127.0.0.1 -n 20
net use r: \\nw7\j\p\h
ping 127.0.0.1 -n 20
if not exist q:\ goto BKScrEnd
if not exist r:\ goto BKScrEnd
xxcopy "q:\" "r:\" /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-typical.txt | tee bk-P4-H_log_%mydate%.txt
ping 127.0.0.1 -n 20
net use q: /delete
ping 127.0.0.1 -n 20
net use r: /delete
ping 127.0.0.1 -n 20
if exist q:\ goto BKScrEnd
if exist r:\ goto BKScrEnd
@echo off
set BKto10TBEr=No_Errors
@echo on
:BKScrEnd
@echo off
echo BKto10TBEr_%BKto10TBEr%
@echo on
pause
If any fatal error happens, it aborts and lets you know what PC is aborted on. Files that were open/read access denied are not copied. You'll have the load the log files in Notepad++ and search for the errors. The ping command is used at a time delay. Tee.exe is a free pipe utility to copy screen data to a text file (google to locate it). It took years to develop this script. Hopefully this saves you some time.
It can be ran automatically via Windows Task Scheduler.
Here's my clone to external 10TB script:
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
xxcopysu J:\ G:\ /CLONE /YY /KN /TCW /TCC /TCA /FF70M /CK0 /EX:winexcl-Win7-BktoExt.txt /oD3:BK10TBtoExtHD-J_to_G_%mydate%-deleted.txt
pause