Je veux écrire un script bash pour faire une archive tar envoyée sur un serveur distant des fichiers de mon portable modifiés depuis le dernier archivage (ceci afin d'aboutir à une archive tournante sur plusieurs jours des derniers fichiers modifiés).
Voici ce qui marche à partir du terminal: d'abord je fais un
find $repertoire_source -newer "~/liste_jour" -type f -print > ~/liste_jour_tmp
où "liste_jour" est un fichier créé lors de l'archivage précédent. L'option permet de retenir que les fichiers modifiés depuis le dernier archivage.
ensuite un petit tar
tar cvzf sauvegarde_${when}.tar.gz --exclude-from ~/bin/exclude --exclude .DS_Store --files-from ~/liste_jour (rem. when=`date "+%y-%m-%d"` )
avec l'option --files-from liste_jour, pour ne retenir que les fichier trouvés par le find ( rem. je sais que l'on peut combiner par un -exec ou xargs, mais mon propos est d'avoir aussi un fichier à la date précédente et avec le contenu de l'archivage).
enfin: mv liste_jour_tmp liste_jour
Quand je place le tout dans un script bash, find donne une erreur:
find: illegal option -- n
find: illegal option -- e
find: illegal option -- w
find: illegal option -- e
find: illegal option -- r
Aucune idée comment coder find pour qu'il marche de la même façon que dans le terminal (j'ai essayé avec tous les types de " ' ` que je connais...
Par contre si dans le script je remplace l'option " -newer " par " -mtime -1 " pour ne retenir
que les fichiers modifiés dans les 24 heures, tout marche très bien (mais justement que ceux depuis les dernières 24 heures...).
Des idées? Merci d'avance !
Ey.
Ci dessous le script complet:
#!/bin/bash
# Archivage des fichiers modifiés depuis la dernière archive
cd ~;
when=`date "+%y-%m-%d"`
source=~;
target=${1}.${when};
#création liste fichiers à archiver, ceux modifiés et crées depuis la création de liste_jour
find $source -newer "~/liste_jour" -type f -print > ~/liste_jour_tmp
# archivage avec exclusions
tar cvzf ${target}.tar.gz --exclude-from ~/bin/exclude --exclude .DS_Store --files-from ~/liste_jour_${when}
#on garde de coté la liste des fichiers archivés
mv liste_jour_tmp liste_jour
#transfert sur serveur
scp ${target}.tar.gz [email protected]ant:
Voici ce qui marche à partir du terminal: d'abord je fais un
find $repertoire_source -newer "~/liste_jour" -type f -print > ~/liste_jour_tmp
où "liste_jour" est un fichier créé lors de l'archivage précédent. L'option permet de retenir que les fichiers modifiés depuis le dernier archivage.
ensuite un petit tar
tar cvzf sauvegarde_${when}.tar.gz --exclude-from ~/bin/exclude --exclude .DS_Store --files-from ~/liste_jour (rem. when=`date "+%y-%m-%d"` )
avec l'option --files-from liste_jour, pour ne retenir que les fichier trouvés par le find ( rem. je sais que l'on peut combiner par un -exec ou xargs, mais mon propos est d'avoir aussi un fichier à la date précédente et avec le contenu de l'archivage).
enfin: mv liste_jour_tmp liste_jour
Quand je place le tout dans un script bash, find donne une erreur:
find: illegal option -- n
find: illegal option -- e
find: illegal option -- w
find: illegal option -- e
find: illegal option -- r
Aucune idée comment coder find pour qu'il marche de la même façon que dans le terminal (j'ai essayé avec tous les types de " ' ` que je connais...
Par contre si dans le script je remplace l'option " -newer " par " -mtime -1 " pour ne retenir
que les fichiers modifiés dans les 24 heures, tout marche très bien (mais justement que ceux depuis les dernières 24 heures...).
Des idées? Merci d'avance !
Ey.
Ci dessous le script complet:
#!/bin/bash
# Archivage des fichiers modifiés depuis la dernière archive
cd ~;
when=`date "+%y-%m-%d"`
source=~;
target=${1}.${when};
#création liste fichiers à archiver, ceux modifiés et crées depuis la création de liste_jour
find $source -newer "~/liste_jour" -type f -print > ~/liste_jour_tmp
# archivage avec exclusions
tar cvzf ${target}.tar.gz --exclude-from ~/bin/exclude --exclude .DS_Store --files-from ~/liste_jour_${when}
#on garde de coté la liste des fichiers archivés
mv liste_jour_tmp liste_jour
#transfert sur serveur
scp ${target}.tar.gz [email protected]ant: