Rsync repository CIFS sur NAS

cancel
Showing results for 
Search instead for 
Did you mean: 
legaulois
Active Member

Rsync repository CIFS sur NAS

Hello,

dans la suite de mon projet, mon maître de stage est intéressé par le fait de pouvoir avoir une redondance des fichiers (docx, xlsx, …. ) sur un Nas ou un file server classique.

Bien évidement je pourrais utiliser Rsync pour dupliquer le contenu de Alf_data sur le Nas. Le problème est que les fichiers une fois placé dans le repository "ne sont plus" des fichiers comme on a l'habitude de les voir. Les fichiers sont décomposés relativement bizarrement et renommé en .bin. J'sais pas si je me fais bien comprendre en fait. Quand les fichiers sont placés dans le alf_data, ben ils n'apparaissent plus comme des docx, xlsx, …

En gros ce que je souhaite c'est pouvoir effectuer une copie/synchronisation des fichiers se trouvant dans un DocumentLibrary d'un site par exemple, vers un espace se trouvant sur un Nas ou un file server.

Quelqu'un a t'il déjà procédé à ça?
11 Replies
rguinot
Customer

Re: Rsync repository CIFS sur NAS

Les fichiers sont décomposés relativement bizarrement et renommé en .bin.

La distribution n'a rien de bizarre, ils sont distribués suivant la date d'import en année/mois/jour/heure/minute pour éviter d'avoir tous les fichiers à la racine, ce qui n'est vraiment pas une bonne pratique. et ils sont effectivement renommés en $uuid.bin et binairement équivalents aux originaux

vous pouvez faire un rsync d'un point de montage CIFS , FTP ou WebDAV du repository, vous "verrez" alors les fichiers comme vous les voyez depuis l'interface alfresco.
mais ca ne constitue en aucun cas un backup complet puisque vous perdrez métadonnées, règles, workflows, permissions etc si vous basez uniquement sur les contenus
bouche64
Member II

Re: Rsync repository CIFS sur NAS

J'ai réalisé un rsync sur des mount pour mes documents publics afin de ne pas exposer mon serveur alfresco en mode guest.
En effet, Il faut utiliser un des protocole par lesquel Alfresco expose les arbo d'espace et les documents (CIFS,WEBDAV, etc..) et surtout pas tenter de récupérer les fichiers stockés par Alfresco dans alf_data !!! Dans Alf_data la distribution des fichiers par date permet d'optimiser la recup par Alfresco.

Voici ce que nous avons réalisé sous Linux Alfresco 32r.2
Dans la machine redhat hébergeant Alfresco….Dans  alfresco-global.properties:
cifs.enabled=true
cifs.Server.Name=alfresco
cifs.ipv6.enabled=false
cifs.tcpipSMB.port=1445
cifs.netBIOSSMB.namePort=1137
cifs.netBIOSSMB.datagramPort=1138
cifs.netBIOSSMB.sessionPort=1139

Les mount sont locaux au serveur Alfresco :  voici le script .sh qui les actives.

##  SCRIPT pour monter les mount CIFS
#

NUM=$(mount | fgrep -c "on /mnt/polydoc-public")

if [ $NUM -eq 0 ]
then
  sudo mount /mnt/polydoc-public
fi

Finalement, toujours sur le serveur Alfresco,  le cron execute un rsynch qui pousse le tout vers un serveur WEB
On peut voir les documents publics, exposés via un serveur apache ici: http://www.polymtl.ca/polydoc/polydoc-public/


Certe approche nous a permis de limiter l'accès au serveur Alfresco tout en diffusant nos documents publics via le serveur Web public.

NOTES:
Dans le FW du serveur Alfresco on a on a limité l'Acces CIFS (les port) en local.

Si Alfresco est stoppé et qu'on accède aux mount, cela suffit pour geler le serveur. Il faut donc inclure des umount dans le script alf_stop et vérifier, toujours par script,si le mount existe avant de faire le rsynch.
legaulois
Active Member

Re: Rsync repository CIFS sur NAS

Bouche64, cela me semble être dans l'ordre d'idée de ce que je recherche à réaliser.

Néanmoins, certains points restent obscures.

Donc si je comprends bien ton infrastructure, tu as un serveur pour Alfresco et un serveur Web Apache (qui sont deux machines distinctes ou du moins des vms) ?

L'idée est de monter le répertoire distant (celui où on enverra la synchronisation) sur le serveur Alfresco.

Avec un rsync qui est cronné tu copies tout ce qui se trouve dans le cifs vers le serveur web ?

Peux-tu me montrer ton rsync éventuellement car je vois pas comment tu accèdes au cifs sur le serveur. Ou alors c'est le script que tu as ajouté ? Suis relativement perdu de ce coté, je te serais grandement reconnaissant si tu pouvais m'extirper de ce trou noir Smiley Happy

Merci beaucoup
bouche64
Member II

Re: Rsync repository CIFS sur NAS

Donc si je comprends bien ton infrastructure, tu as un serveur pour Alfresco et un serveur Web Apache (qui sont deux machines distinctes ou du moins des vms) ?
un serveur pour Alfresco acces limité par Fwall a un range IP correspondant aux adresses données via le VPN +HTTPS
un serveur avec apache pour mes sites Web + accès au données publiques alfresco (un directory à l'intérieur de ma racine httpd (tu peux activer le directory listing, via .htaccess)

L'idée est de monter le répertoire distant (celui où on enverra la synchronisation) sur le serveur Alfresco.
Le mount est sur le serveur Alfresco, il utilise un user sans droits particuliers alors le mount expose les espaces et le fichiers qui n'ont pas de restriction d'accès (Everyone peut voir par défaut, donc c'est espace n'hérite pas des droits dans ces cas…)

Avec un rsync qui est cronné tu copies tout ce qui se trouve dans le cifs vers le serveur web ?
Oui tout à fait

Peux-tu me montrer ton rsync éventuellement car je vois pas comment tu accèdes au cifs sur le serveur. Ou alors c'est le script que tu as ajouté ? Suis relativement perdu de ce coté, je te serais grandement reconnaissant si tu pouvais m'extirper de ce trou noir
Je ne suis pas au bureau, je vais tenter de récupérer le rsync demain ou mercredi
A+
Guy-Pierre Boucher
Polytechnique Montréal
legaulois
Active Member

Re: Rsync repository CIFS sur NAS

Le mount est sur le serveur Alfresco, il utilise un user sans droits particuliers alors le mount expose les espaces et le fichiers qui n'ont pas de restriction d'accès (Everyone peut voir par défaut, donc c'est espace n'hérite pas des droits dans ces cas…)

Voilà c'est cette partie qui me semblait obscure, en fait tu montes sur le serveur le mapping comme si tu étais un client "standard' et à partir du mount tu rsync.

Je ne capte pas à vrai dire le
##  SCRIPT pour monter les mount CIFS
#

NUM=$(mount | fgrep -c "on /mnt/polydoc-public")

if [ $NUM -eq 0 ]
then
  sudo mount /mnt/polydoc-public
fi

Qui te permet de monter le partage, je ne vois pas où tu spécifies le serveur (partage CIFS) comme étant l'espace à monter

Je ne suis pas au bureau, je vais tenter de récupérer le rsync demain ou mercredi
A+
Guy-Pierre Boucher
Polytechnique Montréal


Avec grand plaisir Smiley Happy merci beaucoup
legaulois
Active Member

Re: Rsync repository CIFS sur NAS

En fait quand j'essaye de monter le serveur sur le serveur :s

voici ce que j'ai en retour :

mount -t cifs //172.24.225.106/alfresco /mnt/Isis
Password:
mount error 111 = Connection refused
Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)
rguinot
Customer

Re: Rsync repository CIFS sur NAS

normal vous ne spécifiez aucun couple utilisateur / mot de passe

exemple :

mount -t cifs \\\\127.0.0.1\\alfresco /mnt/alflocal -o port=1445,uid=romain,gid=romain,username=admin,file_mode=0644,dir_mode=0755

uid / gid  : user et groupe unix de l'utilisateur avec lequel vous faites le mount
username : user alfresco
port : port alfresco sur lequel tourne cifs

adresse ip a adapter eventuellement
legaulois
Active Member

Re: Rsync repository CIFS sur NAS

En utilisant :

mount -t cifs //172.24.225.106/alfresco /mnt/Isis -o port=1445,uid=0,gid=0,username=admin,file_mode=0644,dir_mode=0755

j'obients la même erreur. J'utilise le compte root pour monter le répertoire. Mais il me retourne l'erreur 111 connection refused.  :evil:
bouche64
Member II

Re: Rsync repository CIFS sur NAS

En effet il faut spécifier un usager et pw pour faire le mount CIFS.  Une fois les mounts en place, on peux faire la rsync
Pour le rsych vers mon serveur Web le crontab execute ce script.

export RSYNC_RSH="ssh -i /root/.ssh/id_public"

#
# faire
# # man flock
# pour comprendre comment je serialise (jamais plus que un a la fois)
# ce script. Comme le cron roule aux 20 minutes, ne jamais attendre
# plus que ce temps la.
#
# Xtian.
#

(
  flock -xw$((10*60)) 200

  if [ -r /tmp/NoSynchro ]
  then
    exit 1
  fi

  NUM=$(mount | egrep -c "on /mnt/polydoc-public|on /mnt/polydoc-employe")

  if [ $NUM -lt 2 ]
  then
    exit 1
  fi

  rsync –archive –delete –quiet \
        –exclude "Data Dictionary*" \
        –exclude "__*" \
        –exclude "index.php" \
        –exclude ".htaccess" \
        –chmod="u=rwx" \
        /mnt/polydoc-public/ xxxx@xxxx:polydoc/polydoc-public/

  rsync –archive –delete –quiet \
        –exclude "Data Dictionary*" \
        –exclude "__*" \
        –exclude "index.php" \
        –exclude ".htaccess" \
        –exclude "indexredir.php" \
        –chmod="u=rwx" \
        /mnt/polydoc-employe/ xxxx@xxxx:polydoc/polydoc-employe/

  touch $0.last

) 200>$0.lock