Sauvegarde dossier FTP vers Mac

tonymx15

Membre actif
7 Octobre 2009
173
2
35
Aurillac
www.anthonycluse.fr
Bonjour à tous,

Je voudrais un logiciel me permettant de faire une sauvegarde de mon dossier se trouvant sur un serveur FTP hébergé chez 1and1...

Je voudrais pouvoir enregistrer mon dossier sur mon mac et le remplacer tous les deux jours. Comme une sauvegarde incrémentiel...

Il y a t-il un moyen ? Ou un logiciel ?
 
Bonjour

Mac OS X contient la commande en ligne « rsync », utilisable depuis Terminal ou un script shell, qui permet de mettre à jour la copie d'un dossier. La commande ne sachant pas gérer elle-même les accès au travers de FTP, il est nécessaire de « monter » préalablement le dossier ou l'un de ses parents dans le système afin que ce dernier apparaisse localement. Les options de cette commande sont très nombreuses, et dépendent de la situation et de ce que tu veux faire exactement.

Il existe aussi la commande FTP « mirror » qui, si elle est supportée à la fois le serveur distant et par le client FTP utilisé, pourrait éventuellement réaliser ce que tu souhaites.


Note du modo : et il existe aussi, pour parler de ça, le forum "Internet et réseau", faut la lire, cette annonce "à lire avant de poster" !

On déménage.
 
Dernière édition par un modérateur:
L'extension du fichier n'est pas importante (mieux vaut ne rien mettre, afin qu'il ne soit pas traité par une application spécifique). En revanche, son format et ses droits d'accès le sont.

Le fichier doit être enregistré au format texte et non pas en texte enrichi (RTF), et il doit être accessible en exécution.

Pour rendre un fichier exécutable, il suffit de fixer les droits avec la commande en ligne « chmod » :
Bloc de code:
chmod +x [I][COLOR="DarkGreen"]nom_du_fichier[/COLOR][/I]
Ensuite, le simple fait de cliquer sur l'icône du fichier ouvrira une fenêtre Terminal et exécutera le script qu'il contient.

La première ligne du script indique quel interpréteur de commande doit être utilisé. Par exemple, pour utiliser « bash » (le Bourne-Again SHell GNU), la fichier doit commencer par :
Bloc de code:
#!/bin/bash
 
Dernière édition:
Un fichier RTF est enregistré avec l'extension .rtf . Ce qu'il faut, c'est le créer au format texte, et décocher la case qui force l'extension .txt au moment de l'enregistrement.

Le mode par défaut de TextEdit est réglable dans le premier onglet des préférences de l'éditeur. Comme chez moi je m'en sers majoritairement pour éditer des scripts, il est réglé sur « Format Texte » au lieu de « Format RTF ».

Sinon on peut aussi passer du format RTF au format texte (et réciproquement) par le menu Format>Convertir au format Texte/RTF ( raccourci ⇧⌘T ).
 
On va y arriver LOL.

Donc j'ai maintenant réussis à créer le fichier en ".txt" et non en ".rtf"... Maintenant pour le lancer dois-je utiliser le terminal ?

Contenue de mon fichier :

Bloc de code:
#!/bin/bash
chmod +x test

Après je développerais le script me permettant de faire une copy...
 
Non ! La commande « chmod » doit être lancée depuis Terminal, et ne sert qu'à modifier les autorisations du fichier qui contient ton script.


Par exemple, le contenu du fichier pourrait être :
Bloc de code:
[COLOR="DarkRed"]#!/bin/sh

rsync -rv /Volumes/[I][COLOR="DarkSlateBlue"]disque_distant[/COLOR][/I]/[COLOR="DarkSlateBlue"][I]chemin_dossier_source[/I][/COLOR] [I][COLOR="Indigo"]chemin_dossier_destination[/COLOR][/I][/COLOR]

Une fois le fichier enregistré, sous Terminal il faudra lancer la commande :
Bloc de code:
chmod +x [I][COLOR="Green"]chemin_fichier_script[/COLOR][/I]
 
Il y a t-il une chose à faire sous les préférences du terminal car moi ça ne marche pas. J'ai suivie mot pour mot ce que tu viens de me dire, j'ai seulement enlever la commande rsynch... J'ai juste "#!/bin/sh" mais je pense pas que cela pose de problème...
 
Si tu ne mets aucune commande dans ton script, tu ne risques pas de voir quoi que ce soit fonctionner. Je te propose de recopier le script suivant dans ton fichier au format texte :
Bloc de code:
[COLOR="DarkRed"]#!/bin/sh

echo HELLO ![/COLOR]
Ensuite, enregistre le fichier sous le nom de « test » sur le Bureau, puis ouvre Terminal et tape la commande (ou fait un copier/coller) :
Bloc de code:
chmod +x ~/Desktop/test
En double-cliquant sur le fichier « test », une nouvelle fenêtre Terminal devrait s'ouvrir et afficher (entre autres) « HELLO ! ».
 
  • J’aime
Réactions: daffyb
Une fois le fichier exécutable créé, tu peux le modifier avec TextEdit ou l'utiliser comme base pour d'autres scripts en le dupliquant, sans devoir relancer la commande « chmod » après.
 
La commande « rsync » sait aussi traiter les dossiers. Toutefois, comme je l'ai suggéré, on doit préciser les options qui conviennent à ses besoins particuliers.

Notamment, pour assurer la synchronisation des sous-dossiers et de leur contenu, il convient d'ajouter l'option « -r » (comme dans l'exemple que j'ai donné : « rsync -rv ... »).


Je pense utile de préciser que si le chemin du dossier d'origine ne se terminer par un slash (« / »), c'est tout le dossier qui est copié dans le dossier de destination. Si le slash est présent, c'est uniquement le contenu du dossier qui est copié.

Par exemple, si l'on se trouve dans la situation suivante:

--- Dossier_A
¨¨¨¨¨|
¨¨¨¨¨+- Fichier_1
¨¨¨¨¨|
¨¨¨¨¨+- Dossier_C
¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨+- Fichier_2


alors la commande « rsync -r .../Dossier_A/ .../Dossier_B/ » (avec le slash) donnera :

--- Dossier_B
¨¨¨¨¨|
¨¨¨¨¨+- Fichier_1
¨¨¨¨¨|
¨¨¨¨¨+- Dossier_C
¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨+- Fichier_2


tandis que la commande « rsync -r .../Dossier_A .../Dossier_B/ » (sans le slash) donnera :

--- Dossier_B
¨¨¨¨¨|
¨¨¨¨¨+- Dossier_A
¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨+- Fichier_1
¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨+- Dossier_C
¨¨¨¨¨¨¨¨¨¨¨¨¨|
¨¨¨¨¨¨¨¨¨¨¨¨¨+- Fichier_2



Par ailleurs, on peut lire le mode d'emploi de la commande en tapant « man rsync » sous Terminal (utiliser les flèches du clavier pour descendre ou monter, et la touche « q » pour quitter).
 
Oui je sais mais ça ne marche pas quand même...

Bloc de code:
#!/bin/sh
clear
rsync -rv user@monsite.fr:dossier/ desktop/save/
echo -----------------MISE A JOUR OK-----------------

user@monsite.fr's password:

This account is restricted by rssh.
Allowed commands: sftp

If you believe this is in error, please contact your system administrator.

rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at /SourceCache/rsync/rsync-40/rsync/io.c(452) [receiver=2.6.9]
-----------------MISE A JOUR OK-----------------
logout

[Opération terminée]
 
À ma connaissance, les paramètres de login « user@monsite.fr:... » de sont pas supportés, du moins pas dans ton cas particulier.

Comme je l'ai indiqué au départ, tu devrais préalablement monter le dossier FTP distant dans le système afin de pouvoir y accéder avec rsync comme un dossier local, sous-dossier de /Volumes/ .
 
Question conne, y a pas moyen de monter le compte FTP de chez 1&1 comme un disque distant ? Je sais que Cyberduck sais le faire. Ensuite suffit d'une cron pour faire un vulgaire cp
 
Question conne, y a pas moyen de monter le compte FTP de chez 1&1 comme un disque distant ? Je sais que Cyberduck sais le faire. Ensuite suffit d'une cron pour faire un vulgaire cp
Comme je l'ai indiqué, le dossier FTP doit de toute manière être préalablement monté localement.

La copie brutale de tout le dossier distant avec la commande « cp » risque d'être beaucoup moins efficace que la copie incrémentale réalisée par « rsync », surtout si le contenu du dossier distant est volumineux et n'est pas souvent modifié.

Concernant le déclenchement programmé, « cron » est une solution à envisageable. Toutefois, l'utilisation de iCal paraît plus naturelle sous Mac OS X, notamment si on a déjà l'habitude de l'utiliser par ailleurs.


Pour monter localement un dossier FTP distant, on peut utiliser la commande « /sbin/mount_ftp » :
Bloc de code:
/sbin/mount_ftp ftp://[I][COLOR="Indigo"]login[/COLOR][/I]:[I][COLOR="Indigo"]mot_de_passe[/COLOR][/I]@[I][COLOR="Indigo"]mon_site.com[/COLOR][/I]/[I][COLOR="Indigo"]chemin_dossier[/COLOR][/I] [I][COLOR="Navy"]point_de_montage[/COLOR][/I]
point_de_montage est un dossier vide du disque, créé par exemple sous /Volumes/ .
 
Le dossier /disque ne présente pas le contenu du dossier distant ?

Il n'y a pas de message d'erreur ?



Quand il y a un problème de montage, c'est généralement :
- parce que le point de montage n'existe pas ou est inaccessible
- parce que la connexion avec le serveur n'a pas eu lieu
- parce que l'identification a été refusée par le serveur, soit parce que ce dernier ne supporte pas ce mode d'identification, soit parce que le login ou le mot de passe est erroné

Je te conseille de mettre ton point de montage dans le dossier /Volumes , en y créant le dossier vide requis.