Yêu cầu Phần mềm - Đồng bộ dữ liệu tự động giữa USB và ổ cứng máy tính | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Yêu cầu Phần mềm Đồng bộ dữ liệu tự động giữa USB và ổ cứng máy tính

malemkhoang

Rìu Vàng Đôi
Mọi người cho em xin phần mềm tự động đồng bộ dữ liệu giữa usb với ổ cứng máy tính với
Từ thưở khai computer lập microsoft anh Mai đã biết làm điều này rồi. Ngày nay, thời đại CMCN bún chấm tương rùi, mọi người sợ phải quay về thời kỳ đó lắm: Autorun.inf
 
Sửa lần cuối:

Mr Linh TH

Gà con
Phần mềm chính chủ MS. Tuy lâu rồi nhưng rất hiệu quả nhé
Nhưng khổ nỗi là mình vẫn phải dùng máy cơm để run bác ạ,có cách nào cho nó auto run được không bác à
 

duonglinh2

Rìu Bạc
Nhưng khổ nỗi là mình vẫn phải dùng máy cơm để run bác ạ,có cách nào cho nó auto run được không bác à
Tạo lịch đồng bộ tự động TASK SCHEDULER + SYNCTOY nó có đồng bộ theo thời gian. google để có hướng dẫn chi tiết hướng dẫn đây dài lắm
 
Sửa lần cuối:

malemkhoang

Rìu Vàng Đôi
Tôi xem lại cách thực hiện Autorun.inf thì hiện tại với phương thức bảo mật của Windows sẽ rất phức tạp. Do vậy, tôi dùng một con AutoIT cho lẹ.
Ý tưởng:
USB có thư mục (hoặc toàn bộ) chứa nội dung đồng bộ vào PC, tên thư mục tạm đặt là "ASYNC"; HDD cũng có thư mục cùng tên để nhận đồng bộ. Để nhận diện USB, tôi sử dụng nhãn (label) và số serial (tạm bỏ qua số serial trong ví dụ).
Chương trình thường trực trong hệ thống, rà quét các ổ đĩa, phát hiện thấy ổ đĩa (USB) có nhãn (và số serial) trùng với nhãn (và số serial) đã đặt trước thì tiến hành đồng bộ dữ liệu từ USB vào HDD. Thiết kế bảo đảm sao cho chỉ tiến hành đồng bộ một lần và bất cứ khi nào dữ liệu thay đổi trên thiết bị nguồn (hoặc thiết bị đích). Vì vậy, lưu ý rằng mọi sự sửa đổi dữ liệu trên HDD sẽ là vô dụng khi USB còn chứa dữ liệu cũ hơn.​
Mã nguồn AutoIT:
Mã:
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
#include <WinAPIFiles.au3>

Local $ulabel = "MALEMKHOANG" ; nhãn ổ USB
Local $userial = "" ; số serial USB
Local $sLabel
Local $sSerial
Local $sync = ""
Local $source
Local $dest = "g:\ASYNC" ; thư mục đồng bộ trên HDD
Local $Tsource
Local $Tdest
Local $kq

while 1 ; lặp không dừng
;1. lập mảng dữ liệu các ổ đĩa
Local $aArray = DriveGetDrive($DT_ALL) ; số lượng và ký tự tên ổ đĩa hiện thời của hệ thống

;2. lấy ký tự tên ổ đĩa, nhãn đĩa ... để đồng bộ
If @error Then
    MsgBox($MB_SYSTEMMODAL, "", "It appears an error occurred.")
Else
    For $i = 1 To $aArray[0]
        $sLabel = DriveGetLabel(StringUpper($aArray[$i]) & "\") ; lấy nhãn đĩa
        ;$sSerial = DriveGetSerial(StringUpper($aArray[$i]) & "\") ; lấy serial
        If $sLabel == $ulabel then ; AND $sSerial == $userial then
            $sync = StringUpper($aArray[$i]) & "\" ; lấy tên thư mục gốc USB đồng bộ
            ExitLoop
        EndIf
    Next
EndIf

;3. Demo copy tệp từ USB vào HDD
If $sync <> "" then
    $source = $sync & "ASYNC" ; tên thư mục đồng bộ
    $Tsource = FileGetTime($source, $FT_MODIFIED, 1) ; thời gian sửa đổi thư mục nguồn
    $Tdest = FileGetTime($dest, $FT_MODIFIED, 1) ; thời gian sửa đổi thư mục đích
    If $Tsource <> $Tdest then
        ;DirCopy($source, $dest, $FC_NOOVERWRITE) ; không chép đè
        DirCopy($source, $dest, $FC_OVERWRITE) ; chép đè
        $kq = FileSetTime($dest, $Tsource, $FT_MODIFIED) ; đặt lại thời gian thư mục đích
        $kq = FileSetTime($source, $Tsource, $FT_MODIFIED) ; đặt lại thời gian thư mục nguồn
    EndIf
    $sync = ""
EndIf

sleep(5000) ; thời gian chờ quét tìm USB để đồng bộ: 5s
; thoát vòng lặp: chưa thiết kế
wend

Kế tiếp tôi sửa lại phần so sánh thời gian giữa nguồn và đích cho phù hợp hơn: $Tsource > $Tdest.
 
Sửa lần cuối:

malemkhoang

Rìu Vàng Đôi
Dự kiến lỗi phát sinh và khắc phục:
1. Với 2 yếu tố là nhãn (label) và serial vẫn chưa đảm bảo nhận diện USB chính xác. Một .VHD của tôi có label và serial trùng với HDD. Yếu tố nhận diện bổ sung là loại thiết bị: Removable, Fixed, CDROM, RAMDisk, Unknown...
2. Sử dụng thời gian sửa đổi thư mục làm mốc so sánh cũng có thể không chính xác. So sánh khác biệt là chưa bảo đảm tệp trên USB mới hơn trên HDD. Do đó, phải so sánh lớn hơn, so sánh string lớn hơn làm tôi không yên tâm, mà phải dùng number.
3. Đối với USB bị lỗi, mặc dù nó vẫn đọc - ghi bình thường, nhưng không thể lấy được thời gian sửa đổi thư mục trên USB, hậu quả là mất đồng bộ. Khắc phục bằng cách format USB hoặc thay USB khác.
4. Sử dụng khai báo mảng trong vòng lặp sẽ không tối ưu bộ nhớ. Khắc phục điều này đơn giản là chuyển khai báo mảng ra ngoài vòng lặp.

Mở rộng chương trình: Bảo mật đồng bộ bằng password
1. Nhãn (label) và serial đều là dữ liệu dạng string nên có thể được dùng làm password cho quá trình đồng bộ. Nhãn (label) rất dễ sửa đổi, serial thì có thể đọc ra được mặc dù không sửa được.
2. Sử dụng 7zip để nén tệp có bảo mật trong quá trình vận chuyển, pass được cung cấp khi đồng bộ.​
 

bbkim

Mỗi người một câu chuyện
hóng hướng dẫn
Thay vì chỉ trích thì bác hướng dẫn chi tiết hơn,đó là điều bổ ích hơn chỉ trích đó.
1. Create an autorun file for the flash drive. Copy and paste the following code to notepad and save as AutoRun.inf. The file type needs to be all file.
Mã:
[autorun]
icon=drive.ico
open=launch.bat
action=Click ok to Run game for Windows
shell\open\command=launch.bat
Notes:
▶ .ico refers to a png file. You have to find a png file and save it to the flash drive, then and name it as drive.ico.
▶ open is used to launch the batch file.
▶ action refers to open whatever you want.

2. Copy and paste the following code and save as file.bat. You can replace “picture”,”Favorites”,”videos” with your own needs.
Mã:
@echo off
:: variables
/min
SET odrive=%odrive:~0,2%
set backupcmd=xcopy /s /c /d /e /h /i /r /y
echo off
%backupcmd% "%USERPROFILE%\pictures" "%drive%\all\My pics"
%backupcmd% "%USERPROFILE%\Favorites" "%drive%\all\Favorites"
%backupcmd% "%USERPROFILE%\videos" "%drive%\all\vids"
'3 dòng trên là chỉ định vị trí copy/paste. Bạn sửa cho phù hợp với nhu cầu của bản thân'
@echo off
cls

3. Create a VB Script file to batch file as invisible. Type the following syntax in the notepad and save as invisible.vbs.
Mã:
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

4. Make a batch file to run vb script and file.bat. Type the following code in the notepad and save as launch.bat.
Mã:
wscript.exe \invisible.vbs file.bat

5. Create a folder in the root of flash drive and name it as all. Then, save all the files in the folder and make it hidden. After that, test if the batch file works for automatically copy files when USB drive connected.

Copy sau khi mình search google. Mình chưa test nhưng nhìn các dòng lệnh thì chắc là hoạt động ổn.
Bạn cứ làm thử đi nếu false hay error thì post lên mình online sẽ sửa sau.
 


Top