Projet

Général

Profil

Installation et Configuration de TAHOE-LAFS » Historique » Version 9

Julien Aubé, 29/09/2011 19:22

1 6 Julien Aubé
h1. Principe de TAHOE-LAFS
2 1 Julien Aubé
3 6 Julien Aubé
Le but de ce tutoriel est de déployer TAHOE-LAFS sur plusieurs machines. 
4 6 Julien Aubé
5 6 Julien Aubé
Ce système de fichier distribué écrit en python s'utilise comme un RAID logiciel:
6 6 Julien Aubé
Les données sont découpées et distribués sur les _nœuds de stockage_.
7 6 Julien Aubé
8 7 Julien Aubé
Les _nœuds clients_ permettent d'ajouter, lire, écrire et supprimer des fichiers dans ce système. 
9 6 Julien Aubé
10 7 Julien Aubé
*Note:* Un nœud de stockage peut être simultanément un nœud client
11 6 Julien Aubé
12 6 Julien Aubé
Enfin, il existe deux autres types de nœuds:
13 6 Julien Aubé
14 6 Julien Aubé
* Un _introducer_ qui constitue un point de rendez-vous entre tous les nœuds participants (C'est donc aussi un SPOF).
15 8 Julien Aubé
  Ce rôle est exclusif, mais rien n'empêche d'installer un nœud client ou stockage sur la même machine.
16 6 Julien Aubé
* Un ou plusieurs _helpers_, optionnels, qui prennent en charge à la place d'un nœuds client l'ajout de fichiers dans 
17 6 Julien Aubé
le système. C'est utile par exemple pour les nœuds clients situés derrière une ligne ADSL, car l'ajout de fichiers 
18 6 Julien Aubé
implique la réplication. Donc si il faut répliquer 3 fois les données, alors il faut les envoyer 3 fois: Vu la bande 
19 7 Julien Aubé
passante d'upload d'une ligne ADSL ça peux devenir lourd. Un helper récupère donc ces données, et se chargent de les 
20 6 Julien Aubé
distribuer sur les nœuds de stockage. Il est donc intéressant qu'un helper soit aussi un nœuds de stockage, et qu'il
21 6 Julien Aubé
soit sur une ligne rapide.
22 6 Julien Aubé
23 6 Julien Aubé
Le système TAHOE-LAFS ne respecte pas la sémantique POSIX, et défini plusieurs rôles pour l'accès aux fichiers, qui 
24 6 Julien Aubé
se traduisent par des URL d'accès aux fichiers différents.
25 6 Julien Aubé
26 6 Julien Aubé
Pour accéder au système de fichier, il est souhaitable qu'une machine ait installé et fasse tourner un
27 6 Julien Aubé
noeud. Néanmoins il est possible d'accéder à un nœuds à distance, par l'interface Web ou par SSH.
28 6 Julien Aubé
29 6 Julien Aubé
h2. Objectif
30 6 Julien Aubé
31 6 Julien Aubé
Mon objectif a été de faire un système sécurisé avec lequel on puisse échanger des données de manière privés, mais 
32 6 Julien Aubé
aussi de créer un système de backup privé, ou encore un système de stockage type "cloud" privé.
33 6 Julien Aubé
34 6 Julien Aubé
*Note:* J'ai cherché à faire un montage type "JBOD", sans redondance donc, pour maximiser l'espace disque disponible.
35 6 Julien Aubé
36 6 Julien Aubé
Pour manipuler les fichiers, TAHOE-LAFS dispose de plusieurs interface:
37 6 Julien Aubé
38 6 Julien Aubé
* Ligne de commande _tahoe [...]_
39 6 Julien Aubé
* Interface Web locale
40 6 Julien Aubé
* FTP/SFTP, utilisable en particulier avec sshfs.
41 6 Julien Aubé
42 6 Julien Aubé
Dans un version future il est prévu que tahoe-lafs puisse automatiquement insérer dans le système de fichier
43 6 Julien Aubé
des fichiers qui sont ajoutés à un répertoire. 
44 6 Julien Aubé
45 6 Julien Aubé
Je ne décrirais pas tous les mécanismes possible mais seulement ceux que j'ai mis en œuvre.
46 6 Julien Aubé
47 6 Julien Aubé
h1. Installation et Configuration
48 6 Julien Aubé
49 1 Julien Aubé
Cette page décrit comment monter un cluster Tahoe sur Debian, y compris en VM.
50 1 Julien Aubé
51 1 Julien Aubé
h2. Distribution
52 1 Julien Aubé
53 1 Julien Aubé
La distribution Debian/SID (testing) a packagé une version récente de Tahoe-LAFS.
54 1 Julien Aubé
55 1 Julien Aubé
Sur une version stable (actuellement: Squeeze) , nous allons déclarer les packages SID en mode non prioritaires.
56 1 Julien Aubé
57 1 Julien Aubé
Dans _/etc/apt/source.list_ il faut:
58 1 Julien Aubé
<pre>
59 1 Julien Aubé
deb http://ftp.fr.debian.org/debian squeeze main
60 1 Julien Aubé
deb http://ftp.fr.debian.org/debian sid main contrib non-free
61 1 Julien Aubé
deb http://security.debian.org/ sid/updates main contrib non-free
62 1 Julien Aubé
</pre>
63 1 Julien Aubé
64 1 Julien Aubé
Dans _/etc/apt/preferences_ il faut:
65 1 Julien Aubé
<pre>
66 1 Julien Aubé
Package: *
67 1 Julien Aubé
Pin: release o=apt-build
68 1 Julien Aubé
Pin-Priority: 989
69 1 Julien Aubé
70 1 Julien Aubé
Package: *
71 1 Julien Aubé
Pin: release o=Debian,a=stable,l=Debian-Security
72 1 Julien Aubé
Pin-Priority: 987
73 1 Julien Aubé
74 1 Julien Aubé
Package: *
75 1 Julien Aubé
Pin: release o=Debian,a=stable,l=Debian
76 1 Julien Aubé
Pin-Priority: 985
77 1 Julien Aubé
78 1 Julien Aubé
Package: *
79 1 Julien Aubé
Pin: release o=Debian,a=testing,l=Debian-Security
80 1 Julien Aubé
Pin-Priority: 99
81 1 Julien Aubé
82 1 Julien Aubé
Package: *
83 1 Julien Aubé
Pin: release o=Debian,a=testing,l=Debian
84 1 Julien Aubé
Pin-Priority: 97
85 1 Julien Aubé
</pre>
86 1 Julien Aubé
87 1 Julien Aubé
Ensuite, appeler:
88 1 Julien Aubé
89 3 Julien Aubé
  <pre># ~> aptitude update</pre>
90 1 Julien Aubé
91 1 Julien Aubé
h2. Installer Tahoe
92 1 Julien Aubé
93 1 Julien Aubé
Il suffit de taper:
94 3 Julien Aubé
95 1 Julien Aubé
  <pre># ~> aptitude install python-twisted tahoe-lafs</pre>
96 1 Julien Aubé
97 1 Julien Aubé
Pour vérifier, il faut taper:
98 3 Julien Aubé
99 1 Julien Aubé
  <pre># ~> tahoe --version</pre>
100 4 Julien Aubé
101 1 Julien Aubé
La réponse devrait ressembler à:
102 1 Julien Aubé
<pre>
103 1 Julien Aubé
allmydata-tahoe: 1.8.3,
104 1 Julien Aubé
foolscap: 0.6.1,
105 1 Julien Aubé
pycryptopp: 0.5.29,
106 1 Julien Aubé
zfec: 1.4.5,
107 1 Julien Aubé
Twisted: 11.0.0,
108 1 Julien Aubé
Nevow: 0.10.0,
109 1 Julien Aubé
zope.interface: unknown,
110 1 Julien Aubé
python: 2.6.7,
111 1 Julien Aubé
platform: Linux-debian_6.0.2-x86_64-64bit_ELF,
112 1 Julien Aubé
pyOpenSSL: 0.13,
113 1 Julien Aubé
simplejson: 2.2.0,
114 1 Julien Aubé
pycrypto: 2.3,
115 1 Julien Aubé
pyasn1: unknown,
116 1 Julien Aubé
mock: 0.7.2,
117 1 Julien Aubé
sqlite3: 2.4.1 [sqlite 3.7.3],
118 1 Julien Aubé
setuptools: 0.6 [distribute]
119 1 Julien Aubé
120 1 Julien Aubé
Warning: dependency twisted-web (version 11.0.0) found by pkg_resources not found by import.
121 1 Julien Aubé
Warning: dependency twisted-core (version 11.0.0) found by pkg_resources not found by import.
122 1 Julien Aubé
123 1 Julien Aubé
For debugging purposes, the PYTHONPATH was
124 1 Julien Aubé
  None
125 1 Julien Aubé
install_requires was
126 1 Julien Aubé
  ['setuptools >= 0.6c6', 'zfec >= 1.1.0', 'simplejson >= 1.4', 'zope.interface', 'Twisted >= 2.4.0', 'foolscap[secure_connections] >= 0.6.1', 'Nevow >= 0.6.0', 'pycrypto == 2.0.1, == 2.1.0, >= 2.3', 'pyasn1 >= 0.0.8a', 'mock', 'pycryptopp >= 0.5.20']
127 1 Julien Aubé
sys.path after importing pkg_resources was
128 1 Julien Aubé
  /usr/bin:
129 1 Julien Aubé
  /usr/lib/python2.6:
130 1 Julien Aubé
  /usr/lib/python2.6/plat-linux2:
131 1 Julien Aubé
  /usr/lib/python2.6/lib-tk:
132 1 Julien Aubé
  /usr/lib/python2.6/lib-old:
133 1 Julien Aubé
  /usr/lib/python2.6/lib-dynload:
134 1 Julien Aubé
  /usr/local/lib/python2.6/dist-packages:
135 1 Julien Aubé
  /usr/lib/python2.6/dist-packages:
136 1 Julien Aubé
  /usr/lib/pymodules/python2.6
137 1 Julien Aubé
</pre>
138 5 Laurent GUERBY
139 6 Julien Aubé
*Attention:* S'assurer que la version est au moins 1.8.3 : Les version précédentes ont un problème de sécurité qui permet à un attaquant de supprimer des fichiers sans autorisation.
140 1 Julien Aubé
141 6 Julien Aubé
h1. Déploiement
142 6 Julien Aubé
143 6 Julien Aubé
J'ai voulu l'architecture suivante:
144 6 Julien Aubé
145 6 Julien Aubé
- obinou.tetaneutral.net: Introducer (VPS)
146 6 Julien Aubé
- vps205: Stockage, 20Go (VPS)
147 6 Julien Aubé
- tavernier: Stockage, 100Go (chez moi, donc derrière une ADSL)
148 6 Julien Aubé
- baileys:   Client (chez moi, machine à sauvegarder)
149 6 Julien Aubé
- obconseil.eu: Client  (source de fichiers a partagé de manière privée)
150 6 Julien Aubé
151 6 Julien Aubé
A venir: Un GuruplugServer à Tetaneutral (Stockage, 1.5 To) qui remplacera aussi obinou.tetaneutral.net.
152 6 Julien Aubé
153 6 Julien Aubé
*Note:* Les commandes sont a faire en tant qu'utilisateur. Tahoe-Lafs n'a jamais besoin de tourner en tant que _root_.
154 6 Julien Aubé
155 6 Julien Aubé
h2. Installation de l'introducer
156 6 Julien Aubé
157 6 Julien Aubé
*Note:* Il est indispensable que l'introducer soit accessible en direct depuis tous les autres nœuds. Dans le cas d'un système de fichier distribué sur Internet, il est donc nécessaire que soit l'introducer soit sur une machine publique, soit qu'une redirection de port soit mise en place.
158 6 Julien Aubé
159 6 Julien Aubé
<pre>
160 6 Julien Aubé
~ > mkdir .tahoe-introducer
161 6 Julien Aubé
~ > tahoe create-introducer .tahoe-introducer
162 6 Julien Aubé
</pre>
163 6 Julien Aubé
164 6 Julien Aubé
Ensuite il est possible d'éditer le fichier _~/.tahoe-introducer/tahoe.cfg_ et d'y modifier 
165 6 Julien Aubé
166 6 Julien Aubé
* Le nom de ce nœud introducer,
167 6 Julien Aubé
* Le port d'écoute de l'interface web de monitoring de cet introducer.
168 6 Julien Aubé
169 6 Julien Aubé
<pre>
170 6 Julien Aubé
[node]
171 6 Julien Aubé
nickname = obinou_tetaneutral_introducer
172 6 Julien Aubé
web.port = tcp:3457
173 6 Julien Aubé
web.static = public_html
174 6 Julien Aubé
#tub.port =
175 6 Julien Aubé
#tub.location =
176 6 Julien Aubé
#log_gatherer.furl =
177 6 Julien Aubé
#timeout.keepalive =
178 6 Julien Aubé
#timeout.disconnect =
179 6 Julien Aubé
#ssh.port = 8022
180 6 Julien Aubé
#ssh.authorized_keys_file = ~/.ssh/authorized_keys
181 6 Julien Aubé
</pre>
182 6 Julien Aubé
183 6 Julien Aubé
*Note*: L'introducer est le seul nœud sur lequel on peux savoir la liste des nœuds connectés (stockage et clients), et d'autres 
184 6 Julien Aubé
infos globales. Les autres nœuds n'ont qu'une vision partielle du cluster. 
185 6 Julien Aubé
Il est donc *critique* de ne PAS laisser accessible cette interface web, soit en la protégeant via un firewall, soit en la désactivant.
186 6 Julien Aubé
Pour cela il suffit de laisser la variable _web.port_ vide.
187 6 Julien Aubé
188 6 Julien Aubé
*Note*: L'introducer n'est nécessaire qu'au démarrage du système et à l'ajout de nouveaux nœuds. En fonctionnement, le système de fichier
189 6 Julien Aubé
distribué marche très bien sans lui.
190 6 Julien Aubé
191 6 Julien Aubé
<pre>
192 6 Julien Aubé
~ > tahoe start .tahoe-introducer
193 6 Julien Aubé
</pre>
194 6 Julien Aubé
195 7 Julien Aubé
Ceci devrais créer le fichier *~/.tahoe-introducer/introducer.furl* . Il faut garder son contenu sous le coude, qui ressemble à:
196 6 Julien Aubé
<pre>pb://flsd4bklaabgk67smgzuhyd5h5yo3ndn@91.224.149.227:44190,127.0.0.1:44190/introducer</pre>
197 6 Julien Aubé
198 6 Julien Aubé
h2. Création des nœuds de stockage ou d'un nœud client
199 6 Julien Aubé
200 6 Julien Aubé
*Note:* Un tel nœud peut être installé sur la même machine que l'introducer.
201 6 Julien Aubé
202 6 Julien Aubé
<pre>
203 6 Julien Aubé
~ > tahoe create-node
204 6 Julien Aubé
</pre>
205 6 Julien Aubé
206 6 Julien Aubé
ou 
207 6 Julien Aubé
208 6 Julien Aubé
<pre>
209 6 Julien Aubé
~ > tahoe create-client
210 6 Julien Aubé
</pre>
211 6 Julien Aubé
212 6 Julien Aubé
selon le cas souhaité.
213 6 Julien Aubé
214 6 Julien Aubé
Par défaut les fichiers sont créés dans _~/.tahoe_
215 6 Julien Aubé
216 6 Julien Aubé
Ensuite il est possible d'éditer le fichier _~/.tahoe/tahoe.cfg_ et d'y modifier 
217 6 Julien Aubé
218 6 Julien Aubé
* Le nom de ce nœud de stockage,
219 6 Julien Aubé
* Le port d'écoute de l'interface web de monitoring/accès de ce nœud.
220 6 Julien Aubé
* La spécification de l'introducer (contenu du fichier _~/.tahoe-introducer/introducer.furl_  comme ci-dessus)
221 6 Julien Aubé
* Le choix de savoir si ce nœud est un Helper (En général oui si la machine est derrière une ligne avec un upload rapide)
222 6 Julien Aubé
* Le choix de savoir si ce nœud doit utiliser un Helper (car un nœud de stockage est aussi potentiellement client)
223 6 Julien Aubé
224 6 Julien Aubé
<pre>
225 6 Julien Aubé
[node]
226 6 Julien Aubé
nickname = obinou_tavernier
227 6 Julien Aubé
web.port = tcp:3456:interface=127.0.0.1
228 6 Julien Aubé
web.static = public_html
229 6 Julien Aubé
tub.port = tcp:8097
230 6 Julien Aubé
tub.location = obconseil.pck.nerim.net:8097,192.168.1.100:8097,127.0.0.1:8097
231 6 Julien Aubé
#log_gatherer.furl =
232 6 Julien Aubé
#timeout.keepalive =
233 6 Julien Aubé
#timeout.disconnect =
234 6 Julien Aubé
#ssh.port = tcp:8022
235 6 Julien Aubé
#ssh.authorized_keys_file = ~/.ssh/authorized_keys
236 6 Julien Aubé
237 6 Julien Aubé
[client]
238 6 Julien Aubé
# Which services should this client connect to?
239 6 Julien Aubé
introducer.furl = pb://flsd4bklaabgk67smgzuhyd5h5yo3ndn@91.224.149.227:44190,127.0.0.1:44190/introducer
240 6 Julien Aubé
helper.furl = pb://tkrtft5tj7qfa2zavoobtio3noqug6kt@87.238.175.129:41817,127.0.0.1:41817/5lsivzdkckjhg6iip4jfjfopegvkxzm2
241 6 Julien Aubé
#key_generator.furl =
242 6 Julien Aubé
#stats_gatherer.furl =
243 6 Julien Aubé
244 6 Julien Aubé
# What encoding parameters should this client use for uploads?
245 6 Julien Aubé
shares.needed = 1
246 6 Julien Aubé
shares.happy = 1
247 6 Julien Aubé
shares.total = 2
248 6 Julien Aubé
249 6 Julien Aubé
[storage]
250 6 Julien Aubé
# Shall this node provide storage service?
251 6 Julien Aubé
enabled = true
252 6 Julien Aubé
#readonly =
253 6 Julien Aubé
reserved_space = 100G
254 6 Julien Aubé
#expire.enabled =
255 6 Julien Aubé
#expire.mode =
256 6 Julien Aubé
257 6 Julien Aubé
[helper]
258 6 Julien Aubé
# Shall this node run a helper service that clients can use?
259 6 Julien Aubé
enabled = false
260 6 Julien Aubé
261 6 Julien Aubé
[sftpd]
262 6 Julien Aubé
enabled = true
263 6 Julien Aubé
port = tcp:8022:interface=127.0.0.1
264 6 Julien Aubé
host_pubkey_file = private/ssh_host_rsa_key.pub
265 6 Julien Aubé
host_privkey_file = private/ssh_host_rsa_key
266 6 Julien Aubé
accounts.file = private/ftp.accounts
267 6 Julien Aubé
</pre>
268 6 Julien Aubé
269 6 Julien Aubé
Valeurs importantes: 
270 6 Julien Aubé
271 6 Julien Aubé
* nickname: Le nom du nœud
272 9 Julien Aubé
* web.port: Le port & l'interface de l'interface Web, qui est aussi une interface JSON. La mise en place du HTTPS est possible.
273 6 Julien Aubé
* tub.port , tub.location: Si le nœud est derrière un NAT, il faut spécifier ici l'IP/nom public. Il faut aussi rediriger le port au niveau du routeur.
274 6 Julien Aubé
* ssh.port, ssh.authorized_key_file: Ceci créer une interface CLI directe (A mon avis redondant avec la commande tahoe [..]
275 6 Julien Aubé
* introducer.furl: La référence de l'Introducer
276 6 Julien Aubé
* helper.furl: La référence d'un Helper, si l'un est utilisé
277 6 Julien Aubé
* shares.needed: Nombre minimal de fragment de fichiers a générer. 1 veux dire "Tout le fichier". 
278 9 Julien Aubé
* shares.happy: Nombre de fragment à disperser. 1 veux dire : Si 1 fragment est diffusé sur 1 noeud de stockage, l'ajout de ce fichier est un succès.
279 6 Julien Aubé
* shares.total: Nombre maximal de fragment qui seront dispersé (redondance)
280 6 Julien Aubé
* [storage] enabled: Active la fonction "noeud de stockage". C'est la seule différence entre un noeud client & un noeud de stockage.
281 1 Julien Aubé
* reserved_space: Taille de l'espace de stockage alloué.
282 7 Julien Aubé
* [helper] enabled: A _True_ si ce noeud fait office de Helper (Ligne en upload rapide). Activer ce flag crée le fichier _~/.tahoe/private/helper.furl_ , dont le contenu ira dans la clé _helper.furl_ des nœuds qui voudront utiliser ce helper.
283 1 Julien Aubé
* [sftpd] enabled: Active le service de loopback SFTP
284 1 Julien Aubé
* [sftpd] port,host_pubkey_file, host_privkey_file: Configuration du service SFTP
285 7 Julien Aubé
* [sftpd] accounts.file: Liste des user/password acceptés pour le service sftp. Ce ne sont PAS les comptes système !
286 1 Julien Aubé
287 1 Julien Aubé
Une fois ceci fait, il suffit d’exécuter *tahoe start* pour lancer la connexion à l'introducer et donc au système distribué.
288 1 Julien Aubé
289 9 Julien Aubé
h2. Configuration du HTTPS sur l'interface HTTP de contrôle.
290 9 Julien Aubé
291 9 Julien Aubé
Si l'on veux mettre à disposition un serveur HTTP public il est préférable de le placer en SSL.
292 9 Julien Aubé
293 9 Julien Aubé
Il faut, dans cet ordre:
294 9 Julien Aubé
295 9 Julien Aubé
* Aller dans le dossier .tahoe/private/
296 9 Julien Aubé
* Créer une clé privé: <pre>openssl genrsa -out mykey.pem 2048</pre>
297 9 Julien Aubé
* Créer un certificat: <pre>openssl req -new -x509 -key mykey.pem -out servercert.pem -days 1095</pre>
298 9 Julien Aubé
* Dans le fichier _.taohe/tahoe.cfg_, éditer la ligne _web.port_:
299 9 Julien Aubé
<pre>web.port = ssl:3457:privateKey=private/mykey.pem:certKey=private/mycert.pem</pre>
300 9 Julien Aubé
301 9 Julien Aubé
*Attention* La ligne ci-dessus *ouvre* le serveur web à toutes les clients, et non
302 9 Julien Aubé
seulement sur la machine locale...
303 9 Julien Aubé
304 7 Julien Aubé
h1. Utilisation
305 1 Julien Aubé
306 9 Julien Aubé
h2. Interface HTTP
307 1 Julien Aubé
308 9 Julien Aubé
Sur l'un des noeuds, il suffit de pointer le navigateur sur http://127.0.0.1:3456.
309 9 Julien Aubé
On arrive alors sur l'interface Web de contrôle, qui permet de créer des répertoires et naviger les 
310 9 Julien Aubé
répertoires existants. Il faut pour cela connaitre l'URI du point d'entré dans le système de fichier.
311 9 Julien Aubé
312 9 Julien Aubé
Il est possible créer ce point d'entré depuis l'interface web elle-même, ou via la ligne de commande.
313 9 Julien Aubé
314 9 Julien Aubé
Voici à quoi ressemble une URI:
315 9 Julien Aubé
<pre>URI:DIR2:cr465654iwtpwpalmw33e2ouku:w52bopuluy47mx4yiingo344hk5ta5wq63tzjn4bby45cxdadxya</pre>
316 9 Julien Aubé
317 9 Julien Aubé
h2. Accès en SFTP via Fuse
318 9 Julien Aubé
319 9 Julien Aubé
Le serveur dois accepter l'accès via SFTP:
320 9 Julien Aubé
<pre>
321 9 Julien Aubé
$ cd .tahoe
322 9 Julien Aubé
$ ssh-keygen -f private/ssh_host_rsa_key
323 9 Julien Aubé
$ cat "theuser thepassword URI:DIR2:cr465654iwtpwpalmw33e2ouku:w52bopuluy47mx4yiingo344hk5ta5wq63tzjn4bby45cxdadxya" >> private/ftp.accounts
324 9 Julien Aubé
</pre>
325 9 Julien Aubé
326 9 Julien Aubé
On constate que chaque user est lié à une URI particulière, son "point d'entré" dans le système de fichier.
327 9 Julien Aubé
328 9 Julien Aubé
Ensuite il suffit de monter ce SFTP en local:
329 9 Julien Aubé
<pre>
330 9 Julien Aubé
$ mkdir tahoe-sshfs
331 9 Julien Aubé
$ sshfs -o port=8022 -o sshfs_sync -o no_readahead -o cache=no theuser@127.0.0.1:/ ./tahoe-sshfs/
332 9 Julien Aubé
</pre>
333 9 Julien Aubé
334 9 Julien Aubé
(Pour démonter il faut la commande suivante: )
335 9 Julien Aubé
<pre>$ fusermount -u tahoe-sshfs/</pre>
336 9 Julien Aubé
337 9 Julien Aubé
*Attention*: Après test, il s'avère que rsync par exemple ne sais pas détecter les différences entre les fichiers.
338 9 Julien Aubé
339 9 Julien Aubé
Donc une ligne comme celle-ci:
340 9 Julien Aubé
341 9 Julien Aubé
<pre>rsync -Pa mon_rep_backup/ ./tahoe-sshfs/</pre>
342 9 Julien Aubé
343 9 Julien Aubé
Copiera tout le répertoire systématiquement. Comme l'opération est longue, ca peut être un problème.
344 6 Julien Aubé
345 6 Julien Aubé
h1. Liens divers
346 5 Laurent GUERBY
347 5 Laurent GUERBY
* http://bigasterisk.com/tahoe-playground/
348 5 Laurent GUERBY
* http://juralibre.net/~sebastien/wiki/doku.php?id=tahoe-lafs