This web page requires JavaScript to be enabled.

JavaScript is an object-oriented computer programming language commonly used to create interactive effects within web browsers.

How to enable JavaScript?

Tự động sao lưu khi tệp và thư mục khi có sự thay đổi với AutoIt và xcopy

Blog December 25, 2020 Nam Le 0

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

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

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:


Last modified on December 26th, 2020 at 5:15 pm

Nam Le
lequocnam



0 responds

Leave a Reply

Your email address will not be published. Required fields are marked *