0
votes

Shell Script pour copier un fichier à la fois dans un travail de cron

J'ai des fichiers CSV à l'emplacement A comme celui-ci

abc1.csv, abc2.csv, abc3.csv

J'ai un travail cron qui fonctionne toutes les 30 minutes et dans chaque exécution, je veux copier seulement 1 fichier (qui ne devrait pas être répété) et l'a placé à l'emplacement B

j'ai eu de 2 façons de faire ça 1) Je choisirai le premier fichier dans la liste des fichiers et copierez-le à l'emplacement B et la supprimera une fois copié.problème avec ceci est que je ne suis pas sûr lorsque le fichier sera copié complètement et si je supprime avant que sa copie a copiée peut être un problème 2) Je vais avoir un dossier temporaire. Je vais copier le fichier de l'emplacement A à l'emplacement B et le conserver également dans l'emplacement Temp.in prochaine itération, lorsque je choisis le fichier dans la liste des fichiers que je vais comparer son existence dans la temp. Emplacement du fichier.Si il existe, je vais passer au fichier suivant. Je pense que cela prendra plus de temps de consommer, etc.

S'il vous plaît suggérer s'il y a une autre meilleure façon


0 commentaires

3 Réponses :


1
votes

Vous pouvez vous assurer de déplacer le fichier déjà copié avec: xxx

(Ici, vous pouvez faire votre logique pour ne trouver que *. CSV fichiers et non en compte *. Terminé Les fichiers qui ont déjà été traités par votre script ... ou utilisez n'importe quel suffixe que vous voulez ..

si le cp Ne réussit pas, rien après que cela ne sera exécuté, le fichier ne sera donc pas déplacé.

Vous pouvez également remplacer mv avec RM pour supprimer Il: xxx

plus En outre, vous pouvez ajouter aux commandes ci-dessus Messages d'erreur au cas où vous souhaitez être informé si le cp a échoué: xxx

et être informé via la sortie cron / e-mail


0 commentaires

1
votes

Vous pouvez utiliser ce script Bash pour votre cas d'utilisation:

source="/path/to/.csv/directory"
dest="/path/to/destination/directory"

cd $source

for file in *.csv
do
        if [ ! -f $dest/"$file" ]
        then
                cp -v $file $dest
                break
        fi
done


0 commentaires

0
votes

Enfin j'ai pris une idée de la solution opte.here est le script final xxx


2 commentaires

Pourquoi supprimez-vous le fichier source? Ce n'était pas la partie de votre cas d'utilisation.


Oui non nécessaire.Mais je supprime donc que je m'assure que le fichier n'est pas choisi par hasard même si le cron ne fonctionne pas bien, etc.