โปรแกรมซิงค์เช่น Dropbox มักจะติดตามการเปลี่ยนแปลงไฟล์โดยทำการเปรียบเทียบแบบไบต์ต่อไบต์หรือใช้แฮชหรือการใช้diff
/ การเก็บบันทึกการกระทำในท้องถิ่นเช่นการควบคุมเวอร์ชันหรืออะไร
โปรแกรมซิงค์เช่น Dropbox มักจะติดตามการเปลี่ยนแปลงไฟล์โดยทำการเปรียบเทียบแบบไบต์ต่อไบต์หรือใช้แฮชหรือการใช้diff
/ การเก็บบันทึกการกระทำในท้องถิ่นเช่นการควบคุมเวอร์ชันหรืออะไร
คำตอบ:
ใน Windows มีกลไกที่จะให้ระบบปฏิบัติการแจ้งเตือนคุณเมื่อมีการเปลี่ยนแปลงโครงสร้างไดเรกทอรี 'เฝ้าดู' - FindFirstChangeNotification () เมื่อระบุว่าไฟล์มีการเปลี่ยนแปลงแอปพลิเคชันสามารถไปเปรียบเทียบไฟล์ในไดเรกทอรีที่มีการเปลี่ยนแปลงเพื่อค้นหาไฟล์จริงที่มีการเปลี่ยนแปลงโดยดูที่ขนาดวันที่แก้ไขแฮช ฯลฯ
สิ่งนี้ (ดังที่ Michael ชี้ให้เห็นด้านล่าง) เป็นสิ่งที่แต่ละแพลตฟอร์มจะจัดหาให้ในบางลักษณะ ฉันไม่ได้บอกว่าสิ่งนี้เป็นลักษณะเฉพาะของ Windows
ในที่สุดการเปรียบเทียบไฟล์ที่คุณต้องการเปรียบเทียบทุกไบท์ - คุณจะสังเกตเห็นว่ามีการเปลี่ยนแปลงไบต์เดียวได้อย่างไร
ในความเป็นจริงคุณอ่านบล็อกของไบต์และคำนวณค่าแฮชจากนั้นตรวจสอบกับรายการของแฮช ตัวอย่างที่ดีคือ " rsync "
เท่าที่ฉันรู้ว่าดรอปบ็อกซ์จะทำซ้ำไฟล์ทั้งหมดเท่านั้นดังนั้นจะคำนวณแฮชของไฟล์ทั้งหมดเพื่อตรวจสอบไฟล์เดียวกัน
ตัวอย่างเช่น. NET มีคลาส FileSystemWatcher ฉันแน่ใจว่าภาษาระดับต่ำและรันไทม์อื่น ๆ สามารถให้ความสามารถที่คล้ายคลึง