ฉันกำลังพยายามดาวน์โหลดไฟล์ล่าสุดที่อัปโหลดไปยังเซิร์ฟเวอร์ผ่าน SFTP ข้อมูลไฟล์จะถูกจัดเก็บไว้ในตารางหลังจากดาวน์โหลด โดยมีข้อมูลที่รวมถึงการตรวจสอบ md5 การประทับเวลา ชื่อไฟล์ ฯลฯ
สคริปต์ทำงานเป็นงาน cron และปลุกสองครั้งต่อวันเพื่อดึงไฟล์ใหม่จากชุดเซิร์ฟเวอร์ โดยปกติแล้ว ไฟล์จะมีจำนวนน้อย ดังนั้นจึงเป็นเรื่องง่ายที่จะดาวน์โหลดทุกอย่าง แฮชเนื้อหา และเปรียบเทียบผลลัพธ์กับสิ่งที่มีอยู่ในฐานข้อมูลเพื่อดูว่าไฟล์นั้นเป็นไฟล์ใหม่หรือไม่
อย่างไรก็ตาม ขณะนี้เรามีการเข้าถึงเซิร์ฟเวอร์ที่ไม่ล้างเนื้อหาใดๆ ดังนั้นการดาวน์โหลดและการแฮชทุกอย่างจึงมีค่าใช้จ่ายสูงเกินไป ดูเหมือนว่าตัวเลือกเดียวคือประเมินข้อมูลเมตาของไฟล์จากระยะไกล และใช้สิ่งนี้เพื่อพิจารณาว่าไฟล์นั้นเป็นไฟล์ใหม่หรือไม่
วิธีแก้ปัญหาหนึ่งที่ฉันคิดว่าอาจใช้งานได้คือใช้ mtime หรือ ctime ของไฟล์ระยะไกลเพื่อเปรียบเทียบกับการประทับเวลาล่าสุดที่จัดเก็บไว้ในตารางไฟล์ จากนั้นสคริปต์จะดาวน์โหลดไฟล์ที่มีเวลา mtime หรือ ctime มากกว่าเวลาประทับที่บันทึกไว้ล่าสุดเท่านั้น (ที่มาจากการดาวน์โหลดครั้งล่าสุด) อย่างไรก็ตาม mtime และ ctime ไม่ได้อ้างอิงถึงเวลาอัพโหลด ดังนั้น กรณีที่แย่กว่านั้นคือ สามารถอัปโหลดไฟล์ได้หลังจากการรัน cron ครั้งล่าสุดที่มี mtime หรือ ctime น้อยกว่าการประทับเวลาล่าสุดที่บันทึกไว้
วิธีแก้ไขปัญหาอื่นที่ฉันพิจารณาคือถือว่าชื่อไฟล์และการประทับเวลาเหมือนกับคีย์ผสมและเปรียบเทียบแอตทริบิวต์ทั้งสองนี้กับรายการในตารางไฟล์ ฉันไม่แน่ใจว่านี่เป็นความคิดที่ถูกต้องหรือปลอดภัย ชื่อไฟล์ค่อนข้างมีเอกลักษณ์ ดังนั้นอาจจะใช้ได้ ฉันกำลังมองหาทางออกที่ปลอดภัยที่สุดในแง่ของการหลีกเลี่ยงไฟล์ที่ไม่ได้รับ
สคริปต์ที่เข้าถึงได้จริงนั้นส่วนใหญ่เขียนโดยใช้ไลบรารี phpseclib sftp
ฉันไม่มีสิทธิ์เข้าถึง ssh ดังนั้นจึงไม่สามารถตรวจสอบผลรวมระยะไกลได้
ข้อมูลเชิงลึกใด ๆ ที่จะได้รับการชื่นชมอย่างมาก
ขอบคุณ