Ich habe zwei separate Verzeichnisse. Der Benutzer lädt eine Datei in die erste. Im Hintergrund läuft ein Cronjob, der die Dateien alle 5 Minuten in das zweite Verzeichnis kopiert.
Was passiert, wenn der Benutzer seinen Upload nicht abgeschlossen hat und der Cronjob die Dateien kopiert? Beachten Sie, dass die beiden Verzeichnisse unterschiedlichen Benutzern gehören und der Cronjob als Root ausgeführt wird.
cp
Wird nicht warten, bis die Datei vollständig hochgeladen ist. Da wir davon ausgehen, dass die Netzwerkübertragungsrate niedriger ist als das Kopieren der Datei von einem Speicherort zu einem anderen innerhalb desselben Hosts, wird cp
irgendwann das aktuelle Dateiende erreicht und der Kopiervorgang abgebrochen. Die Lösung Ihres Problems kann einfach sein: Zuerst lädt der Benutzer die Datei mit einem speziell entstellten Dateinamen hoch (z. B. mit vorangestelltem .
Punkt). Wenn die Übertragung abgeschlossen ist, benennt der Benutzer sie in den ursprünglichen Namen um. Dann sieht der Cron-Job nur noch aus für die Dateien, die nicht beginnen mit .
.