Automatisation d'une sauvegarde spécifique

Bonjour à tous,

Système :
lftp version : 4.7.5

J’héberge des serveurs TS sur mon dédié. J’avais automatisé une sauvegarde externalisée hebdomadaire afin de conserver en cas de crash du dédié.

Principe simple utilisation d’un FTP externe connecter en LFTP en mirroring. Jusque-là rien de bien compliqué ne me dirait vous.

Le souci est que le FTP externalisé n’autorisa pas de fichier de plus de 1Go, donc mon script bouclé sur upload du même fichier à m’overload le réseau.

J’ai donc tenté intégrer une exclusion par une recherche de fichier de plus de 950Mo via “find”.

Mais lorsque j’utilise la sortie de “find” il me génère un lien avec ./ devant qui n’est pas correctement interprété par LFTP

La version lftp fournie en deb s’arrête en 4.6.0 qui ne prend pas les exclusions par liste il faudra donc compilé sa version 4.7.5.

Script de sauvegarde :

#!/bin/bash
# Mirroring du ts3 pour externalisé une sauvegarde
# Variable
login=********
pass=********
addressftp=*********
pathlocal=/home/toto/ts3/
pathdistant=/titi/
logs=/home/toto/save-ts.log
jour=$(date "+%d-%m-%Y %HH%M")

echo "" >> $logs
echo "" >> $logs
echo "------------------------------------------------------------" >> $logs
echo "Demarrage de la sauvegarde : "$jour >> $logs
echo "------------------------------------------------------------" >> $logs
cd $pathlocal ; find -size +950M -type f > /home/toto/exclude.txt

lftp ftp://$login:$pass"@"$addressftp -e "mirror --exclude-glob-from=exclude.txt --verbose=3 -e -R $pathlocal $distant ; quit" >> $logs

jour=$(date "+%d-%m-%Y %HH%M")

echo "------------------------------------------------------------" >> $logs
echo "Heure de fin de la sauvegarde : "$jour >> $logs
echo "------------------------------------------------------------" >> $logs

mon fichier exclude :
./files/virtualserver_7/channel_580/Autre/test/test.rar

Pour que cela soit interprété par le lftp il doit être comme ceci
files/virtualserver_7/channel_580/Autre/test/test.rar

Je suis assez novice dans le scripting donc si vous avez plus simple je suis preneur.

L’idée serait que dans ma commande find -size +950M -type f il me sorte sans le ./ ou s’il existe un moyen d’effectuer une roulette dernière pour retirer les 2 prier caractère de chaque ligne.
Sincèrement je ne sais pas trop quelle serait la solution.

Merci de votre aide

Cordialement

Bonsoir,

Je ne sais pas s’il y a plus élégant mais un find avec l’option -printf "%f\n" fera l’affaire.

1 J'aime

salut,

j’aurais plutôt dit :
%P Nom du fichier, en retirant le nom du paramètre de ligne de commande à partir duquel le fichier a été trouvé.

1 J'aime

Bonjour Messieurs,

Super merci beaucoup
find -size +950M -type f -printf "%P\n" > /home/toto/exclude.txt
files/virtualserver_7/channel_580/Autre/test/test.rar

De la grande classe les gars vous assurer.

Bonne journée à vous

Cordialement