Un script shell pour copier tous les fichiers avec la même structure

Un script shell pour copier tous les fichiers avec la même structure

Ce script shell est conçu pour une tâche spécifique requise pour notre serveur. Donc partager le script avec les lecteurs de Tecadmin. Cela pourrait être utile pour vous.

Exigence

Notre exigence est de copier tous les fichiers créés dans le répertoire dans un autre répertoire avec la même structure de répertoire. Le script s'exécutera sur un intervalle régulier, recherchez tous les fichiers créés dans le répertoire source et les copiez dans le répertoire de destination. Le script doit maintenir la même structure de répertoire sur le répertoire de destination. Après cela, modifiez la permission sur le répertoire de destination. Après une copie réussie du fichier, le script doit supprimer le fichier du répertoire source.

Script shell

Créez un script shell sur votre système et ajoutez le contenu ci-dessous. Mettre à jour les répertoires source et de destination vers un emplacement approprié.

Définissez Change_Ownership sur 0, si vous ne souhaitez pas modifier la propriété sur les fichiers de destination.

#!/ bin / bash ###################### Variables ####################### ##### ### Définissez l'emplacement de l'emplacement du répertoire source et de destination approprié Source_dir = "/ source / dir /" dest_dir = "/ désination / dir /" tmp_file = / tmp / copyfilesList.txt ### Définissez le nom d'utilisateur et le nom du groupe pour définir l'autorisation sur les fichiers copiés ### Définir Change_Ownership sur 1 pour modifier la propriété ou 0 pour l'inchangé de change_ownership = 1 user = "root" groupe = "root" ##### ##### Ne pas modifier ci-dessous avant que le test ################## ### si le répertoire source existe ### Le script s'arrête si la source n'existe pas si [ -d "$ source_dir"]; Ensuite, le répertoire de la source est en cours d'écho "Else Echo" Le répertoire source introuvable. Veuillez vérifier ci-dessus les variables sont définies correctement "Echo" Script Over "Exit 1 FI ### Test Si le répertoire de destination existe ### Le script créera le répertoire de destination s'il n'est pas existant. ### Si n'a pas réussi à créer un répertoire, le script se terminera si [-d "$ dest_dir"]; puis écho "répertoire de destination trouvé, tout OK" Else echo "Répertoire de destination introuvable, créant maintenant" Mkdir -p "$ dest_dir" si [$? -Eq 0]; puis écho "Répertoire de destination créé avec succès."else echo" n'a pas réussi à créer un répertoire de destination. Script sorti "Exit 1 fi fi ### Copier tous les fichiers disponibles sur le répertoire source ### Après avoir réussi à copier le fichier Supprimez-le du répertoire source. cd "$ source_dir" si [$? -Eq 0]; puis trouver . -Tapez f> $ tmp_file lors de la lecture actuelle_file_name do cp --parents "$ current_file_name" "$ dest_dir" si [$? -Eq 0]; puis écho "fichier $ current_file_name copié avec succès."rm -f" $ current_file_name "else echo" fichier $ current_file_name < $TMP_FILE rm -f $TMP_FILE fi ## Set the permissions after copying files if [ $CHANGE_OWNERSHIP -eq 1 ]; then sudo chmod 775 -R "$DEST_DIR" sudo chown $USER:$GROUP -R "$DEST_DIR" fi ################### End of Script ###################################
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#!/ bin / bash ###################### Variables ####################### ##### ### Définissez l'emplacement de l'emplacement du répertoire source et de destination approprié Source_dir = "/ source / dir /" dest_dir = "/ désination / dir /" tmp_file = / tmp / copyfilesList.txt ### Définissez le nom d'utilisateur et le nom de groupe pour définir l'autorisation sur les fichiers copiés ### Définir Change_Ownership sur 1 pour modifier la propriété ou 0 pour qu'il ne soit pas en train #### Ne pas modifier ci-dessous jusqu'à ce que le test ################## ### si le répertoire source existe ### Le script s'arrête si la source n'existe pas si [- - d "$ source_dir"]; Ensuite, le répertoire de la source est en cours d'écho "Else Echo" Le répertoire source introuvable. Veuillez vérifier ci-dessus les variables sont définies correctement le test "Echo" Script Over ".### Si n'a pas réussi à créer un répertoire, le script se terminera si [-d "$ dest_dir"]; puis écho "répertoire de destination trouvé, tout OK" Else echo "Répertoire de destination introuvable, créant maintenant" Mkdir -p "$ dest_dir" si [$? -Eq 0]; puis écho "Répertoire de destination créé avec succès."else echo" n'a pas réussi à créer un répertoire de destination. Script sorti "sortir 1 fiFi ### Copier tous les fichiers disponibles sur le répertoire source ### Après avoir réussi à copier le fichier supprimez-le du répertoire source. cd "$ source_dir" si [$? -Eq 0]; puis trouver . -Tapez f> $ tmp_file lors de la lecture actuelle_file_name do cp --parents "$ current_file_name" "$ dest_dir" si [$? -Eq 0]; puis écho "fichier $ current_file_name copié avec succès."rm -f" $ current_file_name "else echo" fichier $ current_file_name < $TMP_FILE rm -f $TMP_FILEfi ## Set the permissions after copying files if [ $CHANGE_OWNERSHIP -eq 1 ]; then sudo chmod 775 -R "$DEST_DIR" sudo chown $USER:$GROUP -R "$DEST_DIR"fi ################### End of Script ###################################

Enregistrez votre fichier et fermez-le.

Puis définissez l'autorisation d'exécution sur le fichier de script.

script chmod + x.shot