การสำรองข้อมูล (Backup) ที่จริงแล้วก็คือการคัดลอกไฟล์สำคัญของเราไปเก็บไว้อีกที่หนึ่ง เพื่อป้องกันการเสียหาย หรือสูญหายจากกรณีที่จะเกิดขึ้นได้
ทีนี้ หากเราต้องทำการคัดลอกไฟล์ใหม่ทุกครั้งที่ทำการสำรองข้อมูล มันก็จะใช้เวลานาน ยิ่งไฟล์ที่ต้องการสำรองเก็บไว้มีขนาดใหญ่เท่าไหร่ ก็จะยิ่งใช้เวลานานมากขึ้นเท่านั้น
คำสั่ง ROBOCOPY มันสามารถช่วยแก้ไขปัญหาตรงนี้ได้ คือมันมีฟังก์ชั่นที่สามารถข้ามไฟล์ที่มีอยู่แล้ว, สามารถตรวจสอบไฟล์เดิมที่มีการแก้ไข หรือตรวจสอบไฟล์ที่ได้ทำการลบออกไป ได้ ทำให้ในการสำรองข้อมูลในครั้งที่ 2, 3, 4 ... จะใช้เวลาน้อยลงไปมาก
ในบทความนี้จะใช้เป็น Batch file ก่อน ข้อเสียของวิธีนี้มีอย่างเดียวคือ มันไม่มี Progress bar ที่คอยแสดงว่าขณะนี้ได้ทำการคัดลอกไฟล์ได้ถึงขั้นตอนใหนแล้ว ถ้ามีโอกาสจะนำเสนออีกวิธีหนึ่ง ซึ่งสามารถแสดง Progress bar ได้ โดยใช้ Power shell แต่วิธีก็จะยุ่งยากนิดหนึ่ง
มาดูวิธีกันเลย
ก่อนอื่นให้ทำการสร้าง Notepad ไฟล์ขึ้นมา
จากนั้นเปิดไฟล์ Notepad ขึ้นมาแล้ว copy code ด้านล่างนี้ไปวางใน Notepad
cls
@echo off
title Backup
:ConfirmChoice
echo Backup E:\Calibrate_Plan to Z:\BackupDataCalibration
echo Do you want to backup data (Y/N)
set /p "retV=>"
if %retV%==Y goto goBackup
if %retV%==y goto goBackup
if %retV%==n goto goEnd
if %retV%==N goto goEnd
echo Invalid choice.
goto ConfirmChoice
:goBackup
echo --------------Backup start--------------
robocopy E:\Calibrate_Plan "E:\Backup" /s /b /xo /r:5 /w:15 /log+:e:\log.txt
echo ==============Backup is complet==============
pause
:goEnd
echo Cancelled backup
pause
:pexit
คำอธิบาย
cls
@echo off
title Backup
:ConfirmChoice
echo Backup E:\Calibrate_Plan to Z:\BackupDataCalibration
echo Do you want to backup data (Y/N)
set /p "retV=>"
if %retV%==Y goto goBackup
if %retV%==y goto goBackup
if %retV%==n goto goEnd
if %retV%==N goto goEnd
echo Invalid choice.
goto ConfirmChoice
ส่วนนี้เป็นการถามยืนยันการสำรองข้อมูล โดยพิมพ์ Y หรือ y คือทำการสำรองข้อมูล ถ้าพิมพ์ N หรือ n คือยกเลิก
:goBackup
echo --------------Backup start--------------
robocopy E:\Calibrate_Plan "E:\Backup" /s /b /xo /r:5 /w:15 /log+:e:\log.txt
echo ==============Backup is complet==============
pause
pause
:goEnd
echo Cancelled backup
pause
:pexit
ส่วนนี้คือส่วนการสำรองข้อมูล โดยใช้คำสั่ง ROBOCOPY โดยค่าพารามิเตอร์ต่าง ๆ ก็จะมีดังนี้ (สามารถพิมพ์ดูค่าพารามิเตอร์ต่าง ๆ ได้โดยพิมพ์ robocopy /?)
robocopy {โฟลเดอร์ทีต้องการสำรอง} {ตำแหน่งที่จะเก็บไฟล์สำรองไว้} {ค่าพารามิเตอร์อื่น ๆ}
โดยใน code ตัวอย่างนี้มีพารามิเตอร์ดังนี้
ตำแหน่งต้นทางคือ E:\Calibration_Plan << เปลี่ยน Folder ที่จะทำการสำรองข้อมูลตรงนี้
ตำแหน่งปลายทางคือ E:\Backup << ตำแหน่งที่ต้องการเก็บไฟล์สำรองข้อมูล
**กรณีชื่อ Folder มีเว้นวรรค ให้ใส่เครื่องหมายคำพูดคร่อมไว้ "......"
/s ทำการคัดลอกทุกโฟลเดอร์ในโฟลเดอร์ต้นทาง แต่ไม่คัดลอกโฟลเดอร์ที่ไม่มีข้อมูล
/b ทำการคัดลอกในโหมด backup
/xo ไม่เก็บไฟล์เก่าไว้
/r:5 ทำการคัดลอกซ้ำ 5 รอบ กรณีติดปัญหาในการคัดลอก
/w:15 เวลาในการรอ กรณีติดปัญหาในการคัดลอก
/log+ กำการเก็บ log file ไว้ที่ e:\ ไฟล์ชื่อ log.txt
อาจจะทดลองเพิ่มหรือลดค่าพารามิเตอร์ได้นะครับ
ทำการ Save as เป็นไฟล์ใหม่ โดยกำหนดนามสกุลให้เป็น .bat
ก็จะได้ Batch file ขึ้นมา
การใช้งานก็เพียงทำการคลิ๊กขวาแล้วเลือก "Run as administrator"
**ไม่ควรสำรองข้อมูลไว้ใน HDD ลูกเดียวกัน เพราะหาก HDD พังข้อมูลที่สำรองไว้ก็จะหายไปด้วย ในบทความเป็นเพียงตัวอย่างนะครับ