OVH Cloud OVH Cloud

objectif : backup

11 réponses
Avatar
Rakotomandimby
Bonjour ,
J'administre ( tant bien que mal ) un serveur FTP ou des amis me donnent des
fichiers .

J'ai fais un backup de ces dits fichiers sur 15 CDROMs ( oui bon ... ok )

Comme entre temps il m'arrive encore des fichiers , je souhaite faire un
back up des nouveaux arrivants sachant que je vais pas griller 15 nouveau
CDs

A coups de find sur les 15 CD deja gravés j'ai etabli la liste des fichiers
deja gravés . Le fichiers sont restés dans le meme repertoires , et n'ont
pas bougé .
J'ai mis la liste de ces fichiers dans un fichier texte nommé
'liste_des_graves.txt' ( un fichier par ligne , path obsolu )

A coups de find aussi j'ai fait la liste des fichiers qui sont actuellement
sur le disque dur que j'ai mis dans 'liste_presents.txt' ( un fichier par
ligne, path obsolu )

Il va de soit que liste_present.txt presente beaucoup plus de lignes que
liste_des_graves.txt, puisqu'il y a en plus les lignes correpondant aux
paths des fichiers qui sont arrivés apres le backup. L' ordre des lignes
n'est evidemment pas le meme . Pas de '\n' dans les noms de fichiers,
mais certains ont des espaces .

Maintenant je voudrai avoir la liste des fichiers qui sont en plus .
et c'est la que je plante .

J'ai deux solutions :
1°) faire un 'cat le_fichier | sort' , sur chaque fichier pour ordonner et
ensuite graver les fichiers qui font que l'un soit plus long que l'autre
( est -ce sur ? )

2°) faire avec sed et/ou awk pour mettre en evidence les lignes qui sont
dans l'un et pas dans l'autre, puis graver cela . Mais du coup , c'estdur
pour un newbie comme moi parceque pour gérer les espaces dans les noms de
fichiers , c'est chaud. Pourriez-vous m'aider ?

Quelles autres solution voyez-vous a mon souci ?
J'ai une preference pour zsh , si il faut faire un script ( clin d'oeil a Mr
Chazelas ) ... :-)

J'utilise Linux .

Merci d'avance .
--
http://mrakotom.free.fr

10 réponses

1 2
Avatar
walla
Une fois tes deux fichiers tries, pourquoi ne pas tout simplement
utiliser la commande diff, uhmm ? :)

Rakotomandimby a écrit:
Bonjour ,
J'administre ( tant bien que mal ) un serveur FTP ou des amis me donnent des
fichiers .

J'ai fais un backup de ces dits fichiers sur 15 CDROMs ( oui bon ... ok )

Comme entre temps il m'arrive encore des fichiers , je souhaite faire un
back up des nouveaux arrivants sachant que je vais pas griller 15 nouveau
CDs

A coups de find sur les 15 CD deja gravés j'ai etabli la liste des fichiers
deja gravés . Le fichiers sont restés dans le meme repertoires , et n'ont
pas bougé .
J'ai mis la liste de ces fichiers dans un fichier texte nommé
'liste_des_graves.txt' ( un fichier par ligne , path obsolu )

A coups de find aussi j'ai fait la liste des fichiers qui sont actuellement
sur le disque dur que j'ai mis dans 'liste_presents.txt' ( un fichier par
ligne, path obsolu )

Il va de soit que liste_present.txt presente beaucoup plus de lignes que
liste_des_graves.txt, puisqu'il y a en plus les lignes correpondant aux
paths des fichiers qui sont arrivés apres le backup. L' ordre des lignes
n'est evidemment pas le meme . Pas de 'n' dans les noms de fichiers,
mais certains ont des espaces .

Maintenant je voudrai avoir la liste des fichiers qui sont en plus .
et c'est la que je plante .

J'ai deux solutions :
1°) faire un 'cat le_fichier | sort' , sur chaque fichier pour ordonner et
ensuite graver les fichiers qui font que l'un soit plus long que l'autre
( est -ce sur ? )

2°) faire avec sed et/ou awk pour mettre en evidence les lignes qui sont
dans l'un et pas dans l'autre, puis graver cela . Mais du coup , c'estdur
pour un newbie comme moi parceque pour gérer les espaces dans les noms de
fichiers , c'est chaud. Pourriez-vous m'aider ?

Quelles autres solution voyez-vous a mon souci ?
J'ai une preference pour zsh , si il faut faire un script ( clin d'oeil a Mr
Chazelas ) ... :-)

J'utilise Linux .

Merci d'avance .


Avatar
Bernard Merlant
In article <c009e8$9a3$, Rakotomandimby wrote:
Maintenant je voudrai avoir la liste des fichiers qui sont en plus .
et c'est la que je plante .


Après avoir trié tes deux fichiers par ordre croissant, je te
recommanderai l'usage de comm ( man comm ).
Toutefois je ne sais pas comment il se comporte avec de gros fichiers; je
ne l'utilise qu'avec des fichiers très courts.

Avatar
Stephane Chazelas
2004-02-6, 17:41(+00), Bernard Merlant:
[...]
Toutefois je ne sais pas comment il se comporte avec de gros fichiers; je
ne l'utilise qu'avec des fichiers très courts.


Très bien. Il ne lit et ne stocke en mémoire qu'une ligne de
chaque fichier à la fois (il n'a même pas besoin de stocker
toute la ligne en mémoire). L'algorithme est très simple, quand
on y pense.

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]

Avatar
Rakotomandimby
Stephane Chazelas wrote:

L'algorithme est très simple, quand
on y pense.


une fois que les fichiers sont triés tout devient facile en fait ...
mais quand j'y pense , je voyais un probleme la ou il n'ya en avait pas
forcement ...
--
http://mrakotom.free.fr

Avatar
TiChou
Dans l'article news:c00rd7$1jq$,
Rakotomandimby écrivait :

une fois que les fichiers sont triés tout devient facile en fait ...
mais quand j'y pense , je voyais un probleme la ou il n'ya en avait pas
forcement ...


Comme vous utilisez find, je ne comprends pas alors pourquoi vous n'utilisez
pas l'option '-newer fichier_de_reference' pour ne récupérer que les
fichiers nouvellement créés.

Après gravure de vos fichiers, un 'touch fichier_de_reference' et ensuite
pour récupérer les nouveaux fichiers un 'find /chemin -newer
fichier_de_reference'.

Qu'en pensez vous ?

--
TiChou

Avatar
rene-marc
Rakotomandimby :

Quelles autres solution voyez-vous a mon souci ?


Pourquoi comparer les listes ? Pourquoi ne pas juste utiliser un find
-newer ?

Avatar
Rakotomandimby
TiChou wrote:

Qu'en pensez vous ?


j'ai pas tres bien comris ...
Le truc c'est que j'ai la liste des fichiers deja gravés dans un fichier
texte ( avec leur path ) .
On peut eventuellement les ordonner avec "sort"
Les fichiers deja gravés sont encore sur la machine les copies sont
disseminées sur 15 CDROMs .
Si j'ai bien compris votre technique , il faut fournir aussi a find un
fichier en argument ? ( celui ou y a la liste des fichiers deja gravés )
oui mais comment il fera la comparaison , puisuqe l'ordre d'apparition ne
sera pas forcement le meme ....

--
http://mrakotom.free.fr

Avatar
TiChou
Dans l'article news:c053rn$u16$,
Rakotomandimby écrivait :

j'ai pas tres bien comris ...


On va reprendre à zéro alors.

Le truc c'est que j'ai la liste des fichiers deja gravés dans un fichier
texte ( avec leur path ) .


Avec ma méthode ce fichier est inutile.

Si j'ai bien compris votre technique , il faut fournir aussi a find un
fichier en argument ? ( celui ou y a la liste des fichiers deja gravés )


Non.

Donc j'explique.
Ce qui nous intéresse c'est comment récupérer la liste des nouveaux fichiers
d'un répertoire parmis ceux déjà gravés à une date t.
Simple, suffit de comparer la date de modification des fichiers du
répertoire avec la date t et de ne récupérer que ceux qui sont postérieurs à
cette date t.
Après la première gravure, il faut mémoriser la date de celle ci, ce qui
peut être fait facilement avec la commande 'touch' en créant un fichier dont
la date de modification correspondra au moment où nous avons fait cette
gravure : touch fichier_reference
Ensuite, pour récupérer la liste des nouveaux fichiers, donc ceux dont la
date de modification est postérieure à la date du fichier fichier_reference,
on utilise la commande 'find' avec l'option '-newer fichier_reference' :
find /chemin -newer fichier_reference

man find
...
-newer file
File was modified more recently than file.

On grave les nouveaux fichiers à partir de la liste obtenue et de nouveau on
effectue un 'touch fichier_reference' afin de referencer la dernière date de
gravure.

J'espère avoir été plus clair sans avoir éte trop long.

--
TiChou

Avatar
Rakotomandimby
TiChou wrote:

Donc j'explique.


Merci

Ce qui nous intéresse c'est comment récupérer la liste des nouveaux
fichiers d'un répertoire parmis ceux déjà gravés à une date t.


Cela n'est pas fiable , dans le sens ou quand j'ai gravé mes CD , je n'ai
pas touché aux fichiers sources , j'en ai juste fait des ISO , ce qui n'a
necesiité aucun modifications des dits fichiers , donc leurs dates de
dernieres modifications ne correspondent a pas grand chose .

Simple, suffit de comparer la date de modification des fichiers du
répertoire avec la date t et de ne récupérer que ceux qui sont postérieurs
à cette date t.


il suffit que j'aie ouvert par curiosité un de ces fichiers avec Emacs ou
quoi que ce soit d'autre , puis sauvé pour que cette date soit modifiée ,
donc je serai obligé de graver encore ce foutu fichier .

de meme , comme il y a aussi des fichiers musicaux dans le lot , il ait
suffit que je modifie les TAGS de ces fichiers pour une raison ou une autre
pour fausser les données ...

Donc voila .
--
http://mrakotom.free.fr

Avatar
TiChou
Dans l'article news:c08kls$vfu$,
Rakotomandimby écrivait :

Donc j'explique.


Merci


De rien. :)

Ce qui nous intéresse c'est comment récupérer la liste des nouveaux
fichiers d'un répertoire parmis ceux déjà gravés à une date t.


Cela n'est pas fiable , dans le sens ou quand j'ai gravé mes CD , je n'ai
pas touché aux fichiers sources , j'en ai juste fait des ISO , ce qui n'a
necesiité aucun modifications des dits fichiers , donc leurs dates de
dernieres modifications ne correspondent a pas grand chose .


Je ne comprends pas trop votre raisonement. Leurs dates de modification
correspondent toutes à une date antérieure à la date de gravure.

il suffit que j'aie ouvert par curiosité un de ces fichiers avec Emacs ou
quoi que ce soit d'autre , puis sauvé pour que cette date soit modifiée ,
donc je serai obligé de graver encore ce foutu fichier .


Donc là ce n'est pas la fiabilité de la méthode qu'il faut remettre en
cause, mais la fiabilité de l'utilisateur, si vous me permettez. :)

de meme , comme il y a aussi des fichiers musicaux dans le lot , il ait
suffit que je modifie les TAGS de ces fichiers pour une raison ou une
autre

pour fausser les données ...


Fausser quoi ? Ces fichiers ont été modifié, donc ils doivent être de
nouveau sauvegardés.
Dans un backup, ne doit-on pas sauvegardé les nouveaux fichiers ainsi que
tous les fichiers modifiés depuis le précédent backup ? La plupart des
dispositifs de backup fonctionnent ainsi, même les plus basiques, comme
l'outil tar.
Sinon cela n'est alors plus du backup mais tu stockage. :)

--
TiChou


1 2