Saya mencoba mengunduh file terbaru yang diunggah ke server melalui SFTP. Informasi file disimpan dalam tabel setelah diunduh, dengan informasi yang mencakup checksum md5, stempel waktu, nama file, dll.
Skrip berjalan sebagai tugas cron dan aktif beberapa kali sehari untuk mengambil file baru dari sekumpulan server. Biasanya jumlah filenya sedikit, jadi mudah untuk mendownload semuanya, meng-hash isinya, dan membandingkan hasilnya dengan apa yang ada di database untuk menentukan apakah suatu file baru.
Namun, kami sekarang memiliki server yang diakses yang tidak menghapus konten apa pun. Jadi, mengunduh dan melakukan hashing semuanya terlalu mahal. Tampaknya satu-satunya pilihan adalah menilai metadata file dari jarak jauh dan menggunakannya untuk menentukan apakah file tersebut baru.
Salah satu solusi yang saya pikir mungkin berhasil adalah dengan menggunakan mtime atau ctime dari file jarak jauh untuk dibandingkan dengan stempel waktu terbaru yang disimpan dalam tabel file. Skrip kemudian hanya akan mengunduh file dengan mtime atau ctime lebih besar dari stempel waktu terakhir yang tercatat (bersumber dari unduhan terakhir). Namun, mtime dan ctime tidak mengacu pada waktu pengunggahan. Jadi, kasus yang lebih buruk, sebuah file dapat diunggah setelah cron terakhir dijalankan yang memiliki mtime atau ctime kurang dari stempel waktu yang terakhir direkam.
Solusi lain yang saya pertimbangkan adalah memperlakukan nama file dan stempel waktu sebagai semacam kunci komposit dan membandingkan kedua atribut ini dengan entri dalam tabel file. Saya tidak yakin apakah ini ide yang valid atau aman. Nama filenya cukup unik, jadi mungkin ini bisa berhasil. Saya benar-benar mencari cara teraman dalam hal menghindari file yang terlewat.
Script yang sebenarnya melakukan pengaksesan sebagian besar ditulis menggunakan perpustakaan sftp phpseclib.
Saya tidak memiliki akses ssh, jadi checksum jarak jauh tidak dapat dilakukan.
Wawasan apa pun akan sangat dihargai.
Terima kasih