# [ftp] fichier corrompu !!! (résolu)

## loopx

Bonjour, j'ai fais ce script : https://forums.gentoo.org/viewtopic-t-495040.html

Je viens de m'appercevoir d'une chose ultra grave !!!!!!!!!

J'ai testé 3x depuis mon pc et 1 fois depuis mon portable, j'ai tout le temps le meme problème. Le script envoye un fichier via ftp, ben en fait, le fichier qui se trouve sur le ftp est toujours corrompu !!!!!

Donc, jme casse le cul à faire un script qui permet d'envoyer l'archive avec les configs sur un ftp, et ce *** me nik mon fichier... Je comprend pas, je comprend pas du tout de chez pas du tout   :Shocked:   :Shocked:   :Shocked:   :Shocked: 

Si je l'envoye sans passer par le script, ben ca fonctionne très bien ET en utilisant la meme commande que le script, à savoir "ftp"...

Comment est-ce possible   :Confused:   :Shocked:   :Rolling Eyes:   :Crying or Very sad: 

J'aurais bien aimé que quelqu'un d'autre teste chez lui pour voir si il a le meme problème. Peut etre que ca provient de mon serveur ftp, mais je sais franchement pas pourquoi, et puis il va très bien quand je test manuellement... Rah, comme je suis décu   :Evil or Very Mad: 

EDIT:

```

serveur loopx # tar xvjf cfg-loop-nb.tar.bz2

bzip2: Data integrity error when decompressing.

        Input file = (stdin), output file = (stdout)

It is possible that the compressed file(s) have become corrupted.

You can use the -tvv option to test integrity of such files.

You can use the `bzip2recover' program to attempt to recover

data from undamaged sections of corrupted files.

tar: Child returned status 2

tar: Error exit delayed from previous errors

```

En fait, ca marche JAMAIS quand c'est mon script qui l'envoye et ca fonctionne TOUJOURS quand on le fait sois-meme... Ca vaut vraiment la peine de faire un script, franchement, doit pas etre très net le script ...

EDIT2: ah, c'est la pleine lune aussi   :Rolling Eyes: 

EDIT3: le fichier sur le serveur ftp est plus gros que l'original ...

----------

## man in the hill

salut Loopx,

J'ai testé ton script  avec l'option save ftp et la sauvgarde se passe très bien mais je n'arrive meme pas sur mon ftp ... et pourtant je lance ftp ds une console et j'arrive directement sur mon serveur !  

Il faudrait que ce script puisse être lancé que par le root car il y aura des problèmes de permissions sur certains fichiers !

Tu devrais avoir un nom de sauvegarde par défault  pour ne pas demander à l'utilisateur un nom de fichier, et si il choisi l'option save , tu lui indiques en fin de script ou est le fichier et à quel nom ...

Le "home folder" il sert à quoi dans l'histoire ?

Voilà, si tu veux plus d'infos pas de problème !

                                                                   @ +

----------

## loopx

Salut, merci pour ton test   :Very Happy: 

En fait, c'est normal que tu ne vois pas le ftp. Il sauvegarde d'abord tout dans une archive, puis te demandes les options pour la sauvegarde ftp (serveur, utilisateur, chemin) et il fait tout le reste sans voir quoi que ce soit. Je sais, c'est foireux...

T'as essayé de décompresser l'archive présente sur ton ftp ? Parce que moi il n'y arrive jamais  :Neutral: 

Si tu as des problèmes avec le script (erreur ou quoi), montre moi la sortie de ta console.

EDIT: le home folder, c'est le repertoire de l'utilisateur. Mais faudrait trouver un autre système pour que ca aie voir dans tout les homes existant mais jconnais aucune commande qui liste les utilisateurs et leurs home...

EDIT2: choix automatique possible pour le nom du fichier, chemin ou enregistrer les configs et check pour seulement que ce soit le root: c'est fait

EDIT3: maintenant, on peux faire enter partout pour pas sfaire ch***  :Very Happy:    sauf via le ftp biensur   :Rolling Eyes: 

tiens au passage, j'ai encore testé la fonction ftp a partir d'autre pc vers d'autre ftp (enfin, c'est moi qui les ai installé, peut etre normal   :Embarassed: ) et jamais moyen de décompresser ...

EDIT4: j'ai mis à jour le script dans la section HOWTO  :Wink: 

----------

## loopx

 *man in the hill wrote:*   

> la sauvgarde se passe très bien mais je n'arrive meme pas sur mon ftp ... 

 

heu? je te suis pas là   :Confused:  Si tu t'ai planté dans le ftp, il est censé t'afficher une erreur (celle du ftp je suppose, c'est ce que ca fait quand je me plante de pass).

----------

## man in the hill

 *loopx wrote:*   

>  *man in the hill wrote:*   la sauvgarde se passe très bien mais je n'arrive meme pas sur mon ftp ...  
> 
> heu? je te suis pas là   Si tu t'ai planté dans le ftp, il est censé t'afficher une erreur (celle du ftp je suppose, c'est ce que ca fait quand je me plante de pass).

 

Salut,

1.) Quand je me connecte à mon ftp dans ma console !

```

crazy_gentoo faya %

 ftp amnesiac

Connected to amnesiac (192.168.26.1).

220 Welcome to Amnesiac FTP service.

Name (amnesiac:root): baki

530 Please login with USER and PASS.

SSL not available

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

drwxr-xr-x    2 1009     1007         4096 Jun 24 15:34 misc

drwxr-xr-x    2 1009     1007         4096 Jun 21 22:34 musik

drwxr-xr-x    2 1009     1007         4096 Jun 21 22:34 video

226 Directory send OK.

ftp> 221 Goodbye.
```

2.) Avec conf-loop !

```

crazy_gentoo faya %

 bash conf-loop  save ftp

>>> Starting ...

= = > Conf-loop version: 0.8-r1 < = =

           /\

          /  \

         / || \

        /  ||  \

       /   ||   \

      /    ||    \

     /            \

    /      WW      \

   /________________\

   Hello, I just want to say that ...

   >>> I am here: /home/faya <<<

   !!! Don't forgot to save me ;) !!!

   arg0:conf-loop arg1:save arg2:ftp

>>> Saving config...

   Where must I put the kit of configs when finished (without the '/' of end) ? (You can leave blank) /home/faya

> Creating temporary folder: /home/faya/conf ... OK

   Enter the name of your config file (without its extention) or leave blank: tuff

> Choose 'tuff' for the name

   Enter the path of your home folder (without the '/' of end) or leave blank: /home/faya

> Home folder found ...

> Running with these options:

   Listing of configs: conf-list

   Home user: /home/faya

   State: save

   Name for this kit of configs: tuff.tar.bz2

   Directory where saving configs: /home/faya

   Temporary directory where configs will be copied: /home/faya/conf

> done listing of options

> Now it's time to work ;-)

   *** /etc/X11/xorg.conf  ...FOUND ...Saving...

   *** /etc/modules.autoload.d/kernel-2.6  ...FOUND ...Saving...

   *** /etc/make.conf  ...FOUND ...Saving...

   *** /etc/fstab  ...FOUND ...Saving...

   *** /etc/group  ...FOUND ...Saving...

   *** /etc/hosts  ...FOUND ...Saving...

   *** /etc/rc.conf  ...FOUND ...Saving...

   *** /etc/resolv.conf  ...FOUND ...Saving...

   *** /etc/ssh/  ...FOUND ...Saving...

   *** /usr/src/linux/.config  ...FOUND ...Saving...

   *** /etc/conf.d/  ...FOUND ...Saving...

   *** /usr/bin/startxgl.sh  ...FOUND ...Saving...

   *** /usr/bin/startxgl  ...FOUND ...Saving...

   *** /usr/bin/compizrc  ...FOUND ...Saving...

> Now making the .tar.bz2 compressed archive, this can take a while ...

> Removing temporary folder '/home/faya/conf'

>>> Config saved...

> Your kit of configs is available here: /home/faya/tuff.tar.bz2

> Trying to save the archive file to ftp...

   >< Enter hostname (ou l'ip): amnesiac

   >< Enter user name: baki

   >< Enter the directory where upload the file (from '/' and without de '/' of end) or leave blank: /misc

Password: 

Permission denied.

>>> done :-)
```

=)_-_ (= Je reviens sur mes remarques ...

a.)  Tu peux essayer de passer le répertoire de travail temporaire en argument ...

b.)  La demande du nom du fichier de sauvegarde est un arrêt pour rien car ayant un par défault tu éliminérais cette étape... ( et comme j'ai dis ds mon post précédent,  avec l'option save tu indiques a l'utilisateur le nom du fichier de sauvegarde et chemin à la fin du script ) 

c.)  Normalement c'est ton script qui doit récuperer l'uid et le comparer pour savoir si c'est le root ou pas et déduire le home ... Car je peux mettre ce que je veux et tu ne vas sauvegarder le bon home  et si je veux sauvegarder /root/.xinitrc  et mon /home/user/.xinitrc , autant éditer ce genre de fichier dans conf-list ...    

Avec ça ton script gagnera en rapidité ...

                                                                @ +

----------

## Ey

 *loopx wrote:*   

> EDIT3: maintenant, on peux faire enter partout pour pas sfaire ch***    sauf via le ftp biensur  
> 
> tiens au passage, j'ai encore testé la fonction ftp a partir d'autre pc vers d'autre ftp (enfin, c'est moi qui les ai installé, peut etre normal  ) et jamais moyen de décompresser ...

 

Rajoute un petit "binary" après l'authentif on ne sait jammais dans quel mode il est par défaut...

EDIT : tiens pendant que j'y suis je vais être un poil plus précis

```
#fucking bash, must do this, if not, doesn't work!

ftp -n $HOST_NAME <<End-of-Session

user $USER_NAME

binary

cd $FTP_PATH

put $CONF_NAME.$CONF_TYPE

bye

End-of-Session 
```

----------

## loopx

Oki, merci pour les infos et critiques  :Smile:   Jsuis un rien mort la   :Confused:   Je regarderai ca demain  :Wink: 

@man in the hill:

Ton problème de permission est peut etre du au fait que lors de la connexion ftp, il change à chaque fois de répertoire avec la commande cd (et peut etre que ca prose problème et qu'il te fais un persmisson denied. Maintenant, je sais pas si tu as vérifié la présence du fichier sur ton ftp, si il n'y est pas, c'est que c'est pas à cause du cd. Je sais vraiment pas ce que ca pourrait etre   :Confused:  Peut etre du au mode ou alors le cd t'as placé dans un mauvais répertoire. Essaie peut etre un "misc" et non "/misc", parce que si tu peux remonter dans la racine ( / ), alors ce répertoire n'est pas valide vu qu'il se trouve dans ton home (vu ce que je vois dans ta commande ftp).

----------

## man in the hill

Salut Loopx,

Tu n'es pas du tout mort vu ton niveau   :Exclamation: ,   Je t'ai donné un  point de vue et tu vois si cela correspondrait plus ou moins à ce que tu veux  car c'est toi qui a la vision de ton script   :Wink:  !  

Pour le ftp, je viens encore de tester et c'est tjrs la même chose je laisse blank, /, /misc  donc je ne vois pas d'ou pourrait venir ce problème et c'est dommage qu'il n'y ai pas plus de testeur   :Confused:  !

Tu peux aussi essayer de mettre des options ( je ne sais pas si c'est chaud avec bash ...)  comme par ex :

```
conf-loop  -n nom_du_fichier  -f /le_chemin/du_répertoire_de_sauvegarde  save ftp
```

Comme cela si il n'y a pas d'option a part le save ftp, tu fais tout par default ...

une option aussi pour rajouter et sauver directement les fichiers avec conf-loop .

bon voilà, ce sont juste qques idées mais ne te prends pas plus la tête que ça ...

                                                                   @ +

----------

## Anthyme

moi j'aurai plutot fait un script python (avec la magnfique ftplib si puissante) combiné ou non a un script bash...

----------

## loopx

 *Anthyme wrote:*   

> moi j'aurai plutot fait un script python (avec la magnfique ftplib si puissante) combiné ou non a un script bash...

 

Je connais pas python   :Confused:   et puis en bash, c'est moins dépendant.

----------

## loopx

 *man in the hill wrote:*   

> 
> 
> ```
> conf-loop  -n nom_du_fichier  -f /le_chemin/du_répertoire_de_sauvegarde  save ftp
> ```
> ...

 

Salut, tu as tout à fais raison, j'avais commencé ce script en pensent plus "user friendly" mais bon, ca peut etre bien aussi et c'est toujours dans la console. Je regarderai pour les options en arguments (faut que je fasse un "shift" des options je pense, si il y en a de trop).

Pour le problème de permission, je vais essayer de corriger un peu le script. J'aimerai bien ajouter le choix de la commande ftp (genre, on pourrais utiliser la commande ftp ou un autre genre sftp, etc...). Mais bon, me faudrais aussi un système de vérif pour voir si la commande est présente (surement un whereis suivit d'un if -e ...).

Cette année, je dois faire un client ftp en ... sais pas quel langage, mais si c'est en c++, jpourrais toujours l'utiliser pour ca  :Very Happy: 

Je retravaillerai un peu dessus tantot si j'ai le temps  :Wink: 

En tout cas, l'option sftp me parrait bien  :Smile:  et ca pourrais peut etre résoudre le problème de permission... Ca doit pas etre chinoix non plus, faut juste pouvoir "injecter" des commandes comme je l'ai fais avec ftp, mais je sais pas du tout si c'est le meme principe.

----------

## man in the hill

 *loopx wrote:*   

> 
> 
> ... j'avais commencé ce script en pensent plus "user friendly" mais bon, ca peut etre bien aussi et c'est toujours dans la console. Je regarderai pour les options en arguments (faut que je fasse un "shift" des options je pense, si il y en a de trop).

 

On commence avec une idée et cela prend vite fait de l'ampleur   :Laughing:  ...

 *loopx wrote:*   

> Cette année, je dois faire un client ftp en ... sais pas quel langage, mais si c'est en c++, jpourrais toujours l'utiliser pour ca 

 

Ruby est un langage très puissant orienté objet et moins prise de tête que C++ !... J'essais d'y capter l'essence en ce moment ...

Il y a un pote qui m'a parlé de google project pour héberger gratuitement des projet open source :  http://www.guidelinux.org/phpBB/viewtopic.php?t=772&start=15  (le site ou il m'en parle )

 *loopx wrote:*   

> En tout cas, l'option sftp me parrait bien  et ca pourrais peut etre résoudre le problème de permission... Ca doit pas etre chinoix non plus, faut juste pouvoir "injecter" des commandes comme je l'ai fais avec ftp, mais je sais pas du tout si c'est le meme principe.

 

Tu trouves tjrs la solution même si cela peux causer de sérieux mal de tête   :Very Happy:  ... 

                                                                                @ +

----------

## loopx

@man in the hill: merci pour tes info, ca peut toujours etre utile.

Je pense avoir trouvé ton problème de ftp ainsi que le mien, mais surtout merci à Ey qui à mieux trouvé que moi !!

Alors, oui, le mode "binaire" forcé dans la commande ftp, ca fonctionne bien mieux  :Smile:   J'ai plus de problème de fichier corrompu donc c'est à croire qu'il a essayé de transférer en ASCII, et chez moi, il veux bien meme si il foire. Chez man in the hill, surement que le serveur refuse le mode ASCII => permission refusée. Le mode binaire, il y que ca de vrai  :Wink: 

J'ai remis le script à jour (voir lien plus haut), je ferme le thread, continuera dans la section HOWTO ou ailleur si nécessaire   :Cool: 

----------

