J'ai besoin de déployer un processus automatisé (via un script cron de 1 min) qui recherche les fichiers tar dans un répertoire spécifique. Si un fichier tar est trouvé, il n'est pas marqué à l'emplacement approprié, puis le fichier tar est supprimé.
Les fichiers tar sont automatiquement copiés sur ce serveur via SSH à partir d'un autre serveur. Dans certains cas, les fichiers tar sont extrêmement volumineux, avec beaucoup de fichiers.
Le problème que je m'attends à rencontrer: s'il faut> 1 minute pour que le fichier tar soit copié sur le serveur, et que le script cron s'exécute une fois par minute, il va voir le fichier .tar.gz et essayer de le faire décompressez-le, même si le fichier tar est toujours en cours d'écriture.
Existe-t-il un moyen (via les commandes bash) de tester si un fichier est en cours d'écriture, ou s'il ne s'agit que d'un fichier partiel, etc.?
Une alternative à laquelle je pensais était de faire copier le fichier sous une extension de fichier différente (comme .tar.gz.part
) puis de le renommer une .tar.gz
fois le transfert terminé. Mais je me suis dit que j'essaierais de déterminer s'il existe simplement un moyen de déterminer si le fichier est entier sur la ligne de commande en premier ... Des indices?
rsync
utilise un nom de fichier temporaire pendant le transfert (par défaut) et uniquement après le transfert complet du fichier, le renomme le nom de fichier réel.