J'utilise lftp pour transferer entre le synology et la seedbox.
Je me suis inspiré de ce script :
http://www.cobestran.com/actualite/synology-sauvegarde-site-web-par-ftp-avec-lftp/
Principe :
Sur le synology :
Répertoire contenant les fichiers à uploader sur la seedbox :
repRevLocal=/volume1/downloads/blackhole
Répertoire contenant les fichiers reçus de la seedbox :
repLocal=/volume1/downloads/finis
Sur la seedbox :
Répertoire contenant les fichiers envoyés :
repRevFTP=/files/blackhole
Répertoire contenant les fichiers à rappatrier :
repFTP=/files/finis/
Le script : miroir_seedbox.sh
#!/bin/sh
######################################################################################
##### Sauvegarde fichier d'un site web distant par FTP avec lftp
######################################################################################
## Remarque sur lftp
## + Le -e de mirror efface les fichiers qui n'existent plus.
######################################################################################
## Param鑼re en entr馥
## 1 : -e ou rien
## pour effacer tous les fichiers du local qui n'existent plus sur le FTP
######################################################################################
# configuration fichier de log
ficLog=/volume1/downloads/log_transfert_seedbox.txt
ficlog2=/volume1/downloads/log_blackhole.txt
ficlog3=/volume1/downloads/log_finis.txt
# configuration : ftp / user / pass
servFTP=url_de_votre_seedbox
userFTP=user_ftp_seedbox
passFTP=mot_de_passe_seedbox
# configuration
repFTP=/files/finis/
repLocal=/volume1/downloads/finis
repRevFTP=/files/blackhole
repRevLocal=/volume1/downloads/blackhole
#repIgnore=""
# Lister les fichiers a concerver sur la seedbox
repIgnore="-x 'toto' "
######################################################################################
# debut shell
base_name="$(basename "$0")"
lock_file="/tmp/$base_name.lock"
trap "rm -f $lock_file" SIGINT SIGTERM
if [ -e "$lock_file" ]
then
echo "`date +'%Y-%m-%d %H:%M:%S'` $base_name fonctionne deja. Fin du script" >> ${ficLog}
echo "`date +'%Y-%m-%d %H:%M:%S'` -- Fin Sauvegarde ---" >> ${ficLog}
exit
else
echo "`date +'%Y-%m-%d %H:%M:%S'` -- Debut Sauvegarde ---" > ${ficLog}
touch "$lock_file"
echo "`date +'%Y-%m-%d %H:%M:%S'` Debut transfert blackhole " >> ${ficLog}
# commande de copie miroir ftp vers local
/usr/bin/lftp sftp://${userFTP}:${passFTP}@${servFTP} -e "set file:charset utf8;set ftp:charset iso8859-1;mirror --use-pget-n=5 -c -P1 -R --no-empty-dirs --verbose=3 --log=/volume1/downloads/log_blackhole.txt --Remove-source-files ${repRevLocal} ${repRevFTP} ;quit;" >> ${ficLog} 2>&1
#/usr/bin/lftp sftp://seedbox-547:e46d0e97a6ce@nod6.ma-seedbox.me
# remove local empty directories
find ${repLocal} -type d -depth -exec rmdir {} \;
#remove find <1k et ancien lftp-pget-status
find ${repLocal} -size 0k -delete
find ${repLocal} -name *ignore -delete
echo "`date +'%Y-%m-%d %H:%M:%S'` Debut transfert fichiers finis en local " >> ${ficLog}
/usr/bin/lftp sftp://${userFTP}:${passFTP}@${servFTP} -e "set file:charset utf8;set ftp:charset iso8859-1;mirror --use-pget-n=5 -c -P1 --verbose=3 --log=/volume1/downloads/log_finis.txt --no-empty-dirs --Remove-source-files ${repIgnore} ${repFTP} ${repLocal};quit;" >> ${ficLog} 2>&1
echo "`date +'%Y-%m-%d %H:%M:%S'` Suppression des repertoires vides " >> ${ficLog}
/usr/bin/lftp sftp://${userFTP}:${passFTP}@${servFTP} -e "set file:charset utf8;set ftp:charset iso8859-1;find ${repFTP} | grep \"/$\";bye" >/tmp/list_to_delete
cat /tmp/list_to_delete | sed 's/ /\\ /g' | sed 's/\/\///g' | sed "s/'/\\\'/g" | sort -r| sed '$d' >/tmp/list_to_delete_clean
old_IFS=$IFS # sauvegarde du separateur de champ
IFS=$'\n' # nouveau separateur de champ, le caractere fin de ligne
for list in $(cat /tmp/list_to_delete_clean)
do
/usr/bin/lftp sftp://${userFTP}:${passFTP}@${servFTP} -e "set file:charset utf8;set ftp:charset iso8859-1;rmdir ${list};bye"
done
IFS=$old_IFS # retablissement du separateur de champ par defaut
# r駸ultat de la commande - 0 : ok
res=$?
echo "`date +'%Y-%m-%d %H:%M:%S'` Resultat : "${res} >> ${ficLog}
# fin shell
rm -f "$lock_file"
trap - SIGINT SIGTERM
exit
fi
echo "`date +'%Y-%m-%d %H:%M:%S'` -- Fin Sauvegarde ---" >> ${ficLog}
######################################################################################x
exit $res
Placer le script sur votre synology, n'oubliez pas de le rendre exécutable.
Tip : vous pouvez l'ajouter au planificateur de tache pour automatiser son fonctionnement.