Ich muss einen automatisierten Prozess (über ein 1-minütiges Cron-Skript) bereitstellen, der nach TAR-Dateien in einem bestimmten Verzeichnis sucht. Wenn eine TAR-Datei gefunden wird, wird sie an der entsprechenden Stelle nicht geteert und dann die TAR-Datei gelöscht.
Die tar-Dateien werden automatisch über SSH von einem anderen Server auf diesen Server kopiert. In einigen Fällen sind die TAR-Dateien extrem groß und enthalten viele Dateien.
Das erwartete Problem: Wenn das Kopieren der TAR-Datei auf den Server länger als 1 Minute dauert und das Cron-Skript einmal pro Minute ausgeführt wird, wird die Datei .tar.gz angezeigt und versucht, dies zu tun Entpacken Sie es, obwohl die TAR-Datei noch geschrieben wird.
Gibt es eine Möglichkeit (über Bash-Befehle) zu testen, ob eine Datei gerade geschrieben wird oder ob es sich nur um eine Teildatei usw. handelt?
Als Alternative habe ich mir überlegt, die Datei als andere Dateierweiterung (wie .tar.gz.part
) zu kopieren und .tar.gz
nach Abschluss der Übertragung in umzubenennen. Aber ich dachte, ich würde versuchen herauszufinden, ob es einfach eine Möglichkeit gibt, festzustellen, ob die Datei in der Befehlszeile vollständig ist ... Irgendwelche Hinweise?
rsync
verwendet einen temporären Dateinamen während der Übertragung (Standard), und nur , nachdem die Datei vollständig übertragen wird, benennt es um die tatsächlichen Dateinamen.