[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: rsync bloqué sur un montage cifs



Ha d’accord, je comprends mieux.

Si ça peut vous aider le Unix Synology (DSM) est basé sur une
BusyBox. C’est effectivement un Unix à minima mais il est quand
même utilisable et peut être complété avec des dépôts spécifiques
managés avec des dépôts, un peu comme APT. C’est OpenWrt un OS
embarqué également présent sur certains pare-feux…

Nous utilisons ici des NAS Synology pour sauvegarder nos serveurs,
d’autres pour sauvegarder les postes Windows avec leur logiciel
« Active Backup for Business » et fournir aux Mac sous Mac OS X
un service « Time Machine ». Mis à part la sauvegarde Windows
qui est spécifique, tous les autres systèmes de sauvegarde sont
basés sur RSync (RSnapShot pour les Linux et TimeMachine pour
Mac OS X).

Le principe pour avoir à peu près les mains libres avec les
Synology est la suivante :
	• Activer les accès SSH
	• Créer un vrai compte « root » et y placer cos clés SSH
	• Installer le support OPKG via Entware-NG
	  (https://entware.net)
	• Installer les commandes Unix dont on a besoin avec OPKG
Vous avez une très bonne documentation pour savoir comment
installer Entware-NG sur l’URL https://github.com/Entware/Entware-ng/wiki/Install-on-Synology-NAS.
Vous aurez besoin de savoir quelle architecture processeur est
sur votre Synology, allez sur https://www.synology.com/en-global/knowledgebase/DSM/tutorial/Compatibility_Peripherals/What_kind_of_CPU_does_my_NAS_have
Il existe également une petite documentation en français. Elle
est moins complète mais utilise des mécanismes qui prennent moins
l’interface DSM de travers :
	https://www.skyminds.net/nas-synology-installer-entware-ipkg-applications/

Cela n’interfère pas avec le système DSM en place. Tout est installé
sur l’un de vos volumes NAS, par défaut « /volume1/@entware-ng » qui
contiendra le script d’installation et un répertoire
« /volume1/@entware-ng/opt » qui contient toutes les commandes Unix
spécifiques. Le principe suivant est de remonter
« /volume1/@entware-ng/opt » sur « /opt » par un montage BIND. Le
tout est de s’assurer que ces montages sont bien faits même en cas
de mise-à-jour complète de DSM.

Personnellement, j’ai préféré créé une tâche lancée au boot et gérée
par l’interface Synology (« Panneau de configuration / Système /
Planificateur de tâches »). Vous Créez une « Tache déclenchée » avec
un « Script défini par l’utilisateur ». Cette tâche cron devra être
exécutée avec les droits de « root ». Pour les paramètres de tâche,
voici ce que j’ai mis dans la fenêtre « Script défini par
l’utilisateur ces 3 lignes :
  [ -d /mtd ] || mkdir /mtd
  [ -d /volume1/@MTD/local ] && mount -o bind /volume1/@MTD/local /mtd
  [ -x /mtd/sbin/AjoutsOPKG-MTD.sh ] && /mtd/sbin/AjoutsOPKG-MTD.sh || echo "[ERREUR] le script /mtd/sbin/AjoutsOPKG-MTD.sh n'existe pas !"

Comme vous l’aurez compris, j’ai créé un répertoire personnel sur
« /volume1/@MTD/local » qui contient tout le set standard Unix (etc,
bin, sbin, …) et tous les ajouts dont j’ai besoin. Voici le contenu
du script « AjoutsOPKG-MTD.sh » (c’est Kdo) :
————————————————————————————————————
#!/bin/bash

# Programme     : AjoutsOPKG-MTD.sh
#
# Auteur        : Pierre Malard - (c)2018 MTD
# Date          : 090/03/2018 07:13
# version       : 1.0.0
Version="1.0.0"
Contact="admin_AjoutsOPKG-MTD@teledetection.fr"

# Description :
# =============
# Ajouts des paramètres OPKG/Entware et MTD lors des MAJ systèmes
# Voir le cron lancé dans l'interface de gestion

# JJ/MM/AAAA - (v.v.v - Qui)
#	Quoi

#-- Commandes utilisées ------------------------------
#-----------------------------------------------------

#-- PATH spécifique ----------------------------------
#-----------------------------------------------------

#-- Répertoires et fichiers recquis ------------------
#-----------------------------------------------------

#-- Variables ----------------------------------------
Verbeux=
ModeTest=
CodeRet=0
#-----------------------------------------------------

#-- Fonctions ----------------------------------------
Echo() {
	if [ ${Verbeux} ] ; then echo "==> $@"; fi
}

Usage() {
	echo "Utilisation :"									>&2
	echo "$(basename $0) [-hV] | [-vt]"							>&2
	echo ""											>&2
	echo " Liste des options :"								>&2
	echo "   -h, --help, --aide________ Cette aide"						>&2
	echo "   -V, --version_____________ Affiche la version du script"			>&2
	echo "   -v, --verbeux, --verbose__ Mode verbeux"					>&2
	echo "   -t, --test________________ Affiche les commandes sans les exécuter"		>&2
	echo ""											>&2
}
#-----------------------------------------------------


#-----------------------------------------------------
##########
# main() #
##########
export LANG='fr_FR.UTF-8'; export LC_ALL='en_US.UTF-8'
# On utilise la commande "echo" de BASH
shopt -s xpg_echo
if [ $(id -u) -ne 0 ] ; then
	echo "VOUS DEVEZ AVOIR LES DROIT DE root"
	echo "Tentative par SUDO (donnez eventuellement votre mot de passe) ..."
	sudo $0 "$@"
	exit 0
fi

progname="$(basename "$0")"

#-- Traitement de la ligne de commande ---------------
# Pré-positionnement des variables optionnelles
# Test de présence de la commande "getopt"
CmdGetOpt="$(which getopt)"
if [ "$#" -gt 0 ] ; then
	SHORTOPTS="hVvt"
	LONGOPTS="help,version,verbeux,verbose,test"
	${CmdGetOpt} --test	> /dev/null 2>&1
	if [ $? -eq 4 ] ; then		# Version getopt avec longopts.
		OPTS=$(${CmdGetOpt} -o $SHORTOPTS --long $LONGOPTS -n "${progname}" -- "$@")
	else
		case $1 in
			--help)
				Usage;					exit 0 ;;
			--version)
				echo "$(basename "$0") version ${Version} - Contact : ${Contact}"
				exit 0					;;
		esac
		OPTS=$(${CmdGetOpt} $SHORTOPTS "$@")
	fi

	eval set -- "$OPTS"

	while [ $# -gt 0 ]; do
		case "$1" in
			-h|--help)
				Usage; exit 0						;;
			-V|--version)
				echo "${progname} version ${Version} - Contact : ${Contact}"
				exit 0							;;
			-v|--verbeux|--verbose)
				Verbeux=1; shift					;;
			-t|--test)	ModeTest=1; shift				;;
			--)		shift; break					;;
			*) echo "Internal error!" 1>&2 ; exit 1				;;
		esac
	done
fi

#
#-- Traitement ---------------------------------------
if [ ${ModeTest} ] ; then	DEBUG="Echo "; Verbeux=1
else				DEBUG=""
fi
Echo "DEBUG = ${DEBUG}"

# On test si /opt est monté
Echo "Test si /opt est monté…"
if ! eval "mount | grep -q ' on /opt '" ; then
	# Il n'y a rien on monte et on exécute le script
	Echo " - Création de /opt…"
	[ -d /opt ] || mkdir /opt
	Echo " - Montage de /opt…"
	if [ -d /volume1/@entware-ng/opt ] ; then
		Echo "  o Montage de /volume1/@entware-ng/opt…"
		mount -o bind /volume1/@entware-ng/opt /opt
		Echo "  o Lancement de /opt/etc/init.d/rc.unslung…"
		/opt/etc/init.d/rc.unslung start
	else
		echo "ERREUR ! Entware-NG n'est pas présent…"
		exit 1
	fi
else
	Echo "  C'est déjà là."
fi

# On test si /mtd est mmonté
Echo "Test si /mtd est monté…"
if ! eval "mount | grep -q ' on /mtd '" ; then
	# Il n'est pas, on monte
	Echo " - Création de /mtd…"
	[ -d /mtd ] || mkdir /mtd
	Echo " - Montage de /mtd…"
	if [ -d /volume1/@MTD/local ] ; then
		Echo "  o Montage de /volume1/@MTD/local…"
		mount -o bind /volume1/@MTD/local /mtd
	else
		echo "ERREUR ! Le paquet MTD n'est pas présent…"
		exit 1
	fi
fi

# Reconfiguration de /etc/profile
Echo "Reconfiguration de /etc/profile…"
if [ -f /mtd/etc/profile-EntWare.ajout ] ; then
	Echo " - Test si l'ajout est présent…"
	if [ -z "$(grep '^# Ajouts MTD' /etc/profile)" ] ; then
		Echo "  o NON, on ajoute et exécute…"
		cat /mtd/etc/profile-EntWare.ajout >> /etc/profile
		. /etc/profile
	else
		Echo "  o OUI, on passe…"
	fi
else
	echo "[ERREUR] le fichier /mtd/etc/profile-EntWare.ajout n'existe pas"
	exit 2
fi

# Reconfiguration de /etc/bash.bashrc
Echo "Reconfiguration de /etc/bash.bashrc…"
if [ -f /mtd/etc/bash.bashrc-MTD.ajout ] ; then
	Echo " - Test si l'ajout est présent…"
	if [ -z "$(grep '^# Ajouts MTD' /etc/bash.bashrc)" ] ; then
		Echo "  o NON, on ajoute et exécute…"
		cat /mtd/etc/bash.bashrc-MTD.ajout	>> /etc/bash.bashrc
		. /etc/bash.bashrc
	else
		Echo "  o OUI, on passe…"
	fi
else
	echo "[ERREUR] le fichier /mtd/etc/bash.bashrc-MTD.ajout n'existe pas"
	exit 2
fi

Echo "Sortie"
exit 0
————————————————————————————————————

Voici ce que peut contenir « profile-EntWare.ajout »
————————————————————————————————————
# Ajouts MTD
# NE PAS SUPRIMER CES 2 LIGNES

#===================================================#
# Ajouts EntWare-ng
#===================================================#
if [ -r /opt/etc/profile ] ; then source /opt/etc/profile; fi

#===================================================#
# Ajouts PLM
#===================================================#
if [ -r /etc/bash.bashrc ] ; then source /etc/bash.bashrc ; fi
————————————————————————————————————

Voici ce que peut contenir « bash.bashrc-MTD.ajout »
————————————————————————————————————
# Ajouts MTD
# NE PAS SUPRIMER CES 2 LIGNES

[ -r "/mtd/etc/bashrc_MTD" ] && . "/mtd/etc/bashrc_MTD"
————————————————————————————————————

Le fichier « bashrc_MTD » contient les alias et valeurs spécifiques
qu’on veut voir présentes.

Une fois cela installé, vous avez accès à pas mal de dépôts (rsync
plus moderne, Bash plus moderne, cron, rsnapshot, screen, mutt, …)
que vous listez et installez via la commande « opkg ».

Chez nous, nous avons cela depuis des années et les sauvegardes de
*nix sont basées sur « RSnapShot » pour garantir des sauvegardes
incrémentales. Les postes utilisateurs Linux qui le souhaitent
peuvent également sauvegarder leur OS et données via « RSnapShot »
dans la limite d’un quota pré-défini. Idem pour les Mac avec
TimeMachine et les Windows avec « Active Backup dir Business »
qui est fourni par Synology.

C’était le cadeau du 1er mai ;-)


> Le 1 mai 2020 à 13:39, Samy Mezani <samy.mezani@wanadoo.fr> a écrit :
> 
> Bonjour,
> 
> Le 01/05/2020 à 11:53, Pierre Malard a écrit :
>> Pourquoi s’emm… à essayer de faire un rsync d’un FS Unix depuis un
>> poste Unix sur un FS certainement Unix (Ext, XFS, …) qui est certainement
>> également un poste tournant sous Unix en effectuant un montage CIFS ????
> 
> Cette remarque est tout à fait justifiée et je me suis même demandé comment j'en étais arrivé là ! ;-)
> 
> En fait, il s'agit d'une sauvegarde sur un NAS Synology dont le partage CIFS est activé de longue date pour des postes Windows. Donc pour éviter de créer d'autres partages, j'ai utilisé l'existant. Ce n'est pas parfait, mais je ne voulais pas au départ activer SSH sur ce NAS, car je maîtrisais peu le système Linux sur ce matériel (pas de /home, gestion des paquets différente, etc.)
> 
> Mais maintenant que j'ai activé SSH avec succès, effectivement ça peut tout changer. Ça date de hier soir seulement, mais à voir si j'ai le temps de revoir mes scripts.
> 
> Et sinon, j'ai toujours mes processus rsync D et Z... Ce qui n'a pas empêché ma sauvegarde automatique aujourd'hui.
> 
> Merci en tous cas
> 
> Samy
> 

--
Pierre Malard

   « Il faut créer en même temps les élites et les débouchés, le syndica-
    lisme et les usines. Faire l'un sans l'autre, c'est travailler pour le
    malheur du peuple. »
                                        Romain Gary - "Les racines du ciel"
   |\      _,,,---,,_
   /,`.-'`'    -.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_)   πr

perl -e '$_=q#: 3|\ 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-.  ;-;;,_:  |,A-  ) )-,_. ,\ (  `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"'  `-'"'"'\_): 24πr::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--

Attachment: signature.asc
Description: Message signed with OpenPGP


Reply to: