Backup by ROBOCOPY command


    การสำรองข้อมูล (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 E:\Backup
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
goto pexit

:goEnd
echo Cancelled backup
pause
:pexit



คำอธิบาย

cls
@echo off
title Backup
:ConfirmChoice
echo Backup E:\Calibrate_Plan to E:\Backup
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


ส่วนนี้คือส่วนการสำรองข้อมูล โดยใช้คำสั่ง 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"
เลือก "Run as administrator"
ถามยืนยันการสำรองข้อมูล
เมื่อทำการสำรองข้อมูลเสร็จแล้ว
ตัวอย่าง Log file

**ข้อควรระวัง กรณีไปเจอวิธีการลักษณะนี้ แต่ไม่แน่ใจใน Code อย่ากด Run code นั้นในเครื่องของท่าน เพราะ code ดังกล่าวอาจจะส่งผลกระทบต่อเครื่องท่านได้

**ไม่ควรสำรองข้อมูลไว้ใน HDD ลูกเดียวกัน เพราะหาก HDD พังข้อมูลที่สำรองไว้ก็จะหายไปด้วย ในบทความเป็นเพียงตัวอย่างนะครับ


>>Recommend : ROBOCOPY with progress bar<<


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Make BIG checkbox in Excel

เทคนิคการสร้าง Folder ลับ (การซ่อน Folder) 2

Measurement Equipment Management Software (Calibration Plan Software)