Giới thiệu
Đôi khi chúng ta cần sao lưu (backup) tất cả các files/folders mà có thay đổi (modified) đến một nơi để lưu trữ, điều này có thể là có các phương án khác khả thi không kém đó là dùng phần mềm (vd FreeFileSync, hay các ổ cứng lưu trữ có hỗ trợ sao lưu).
Nếu chúng ta muốn tự xây dựng một tool cá nhân để đáp ứng công việc mà không lo ngại về bản quyền, hay vi phạm policy cty hay đơn giản để vọc thì bài viết này có thể giúp đỡ phần nào. Sử dụng AutoIt và lệnh xcopy
có sẵn trên hệ điều hành Windows. xcopy vẫn còn trong Windows 10, có 1 lệnh khác mạnh mẽ và nhiều tính năng hơn là robocopy
cũng có sẵn trong Windows. Trong bài viết này, chỉ sử dụng xcopy cho mục đích đơn giản là Tool chạy background giúp "quét" đĩa và chỉ copy/đè những files có thay đổi.
Yêu cầu
- AutoIt, download tại: https://www.autoitscript.com/site/autoit/downloads/
- Tham khảo lệnh xcopy tại: https://ss64.com/nt/xcopy.html
Lệnh xcopy
có khả năng sao chép các tệp đã thay đổi vào hoặc sau ngày được chỉ định. Nếu không có ngày tháng, chỉ sao chép các tệp có ngày/ giờ nguồn mới hơn thời gian đích. Nó có cú pháp khá đơn giản:
xcopy [source] [destination] [options]
Các thông số (options) quan tâm:
-
/E – Copy subdirectories, including any empty ones.
-
/H – Copy files with hidden and system file attributes
-
/C – Continue copying even if an error occurs.
-
/I – If in doubt, always assume the destination is a folder. e.g. when the destination does not exist.
-
/D:mm-dd-yyyy – Copy files changed on or after the specified date. If no date is given, copy only files whose source date/time is newer than the destination time.
-
/Y – Suppress prompt to confirm overwriting a file. can be preset in the COPYCMD env variable.
-
/-Y – Prompt to confirm overwriting a file.
Chạy với Command Promt
Ví dụ sau sẽ copy tất cả các tập tin ở ổ đĩa gốc đến thư mục tại nơi chạy script
@echo off
echo Watching for changes to %1 ...
:top
xcopy /m /y %1\* %2 | find /v "File(s) copied"
timeout /t 2 >nul
goto :top
Kết quả:
Chạy với AutoIt
Ý tưởng cơ bản là chỉ cần tạo hộp thoại FileSelectFolder
để duyệt đến thư mục nguồn và thư mục đích, sau đó kết hợp với xcopy
.
Bạn có thể folk git sau về và chạy thử, nếu có ideas gì thì mong bạn có thể tạo một pull request cho tính năng thêm.
git clone https://github.com/leqnam/nfile-syn-au3
Script này sẽ phát triển thêm các tính năng cơ bản bao gồm:
- Cài đặt thời gian backup
- Sao lưu nhiều source
- Mã hóa + đặt mật khẩu
- Quản lí các auto backup qua bảng điều khiển
- …
Tập lệnh được sử dụng cho mục đích demo và phải triển khai thêm tính năng khi tôi có nhiều thời gian hơn.
; NREADY.NET
; [email protected] | [email protected]
; Auto backup all modified files and folders on changed on Windows OS
#include <AutoItConstants.au3>
$file = @StartupDir & "\xcopy.bat"
$source = FileSelectFolder("Select a source", "", 1)
$destination = FileSelectFolder("Select a destination", "", 1)
FileDelete($file)
TrayTip("Batch DOSBox", @StartupDir, 0x001E, 1)
If @error Then Exit
FileWrite($file, "cls" & @CRLF & 'xcopy "' & $source & '" "' & $destination & '" /E /H /C /D /Y')
Sleep(0x0064)
Global $Timer = TimerInit(), $Diff = 0
While 1
$Diff = TimerDiff($Timer)
If $Diff >= 5000 Then
ShellExecute($file, "", @StartupDir, "open", @SW_HIDE)
$Timer = TimerInit()
EndIf
Sleep(10)
WEnd
Credits
Contact me for futher informations:
- Le Quoc Nam
- [email protected] / [email protected]
- https://nready.net
Last modified on June 14th, 2021 at 1:44 am
Nam Le
lequocnam
0 responds