Problème avec find ... -exec cp ...
Résolu/Fermé
Melkor
-
11 juin 2008 à 16:40
ZanKer92 Messages postés 1 Date d'inscription mercredi 20 octobre 2010 Statut Membre Dernière intervention 20 octobre 2010 - 20 oct. 2010 à 10:31
ZanKer92 Messages postés 1 Date d'inscription mercredi 20 octobre 2010 Statut Membre Dernière intervention 20 octobre 2010 - 20 oct. 2010 à 10:31
A voir également:
- Find exec cp
- Erreur de format pour exec() - Forum Linux / Unix
- Couldn't find ds menu.dat ✓ - Forum Jeux vidéo
- Livre de lecture cp 1990 cote d'ivoire pdf ✓ - Forum PDF
- Cannot execute binary file: exec format error - Forum Suse
- Atout clic cp - Télécharger - Éducatifs
17 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
12 juin 2008 à 12:32
12 juin 2008 à 12:32
A mon avis il faudrait créer une archive contenant la date du jour :
backup_quelquechose_$(date +%Y%m%d).tar.gz = backup_quelquechose_20080612.tar.gz
et supprimer après création celle faite 2 jours auparavant :
backup_quelquechose_$(date +%Y%m%d).tar.gz = backup_quelquechose_20080612.tar.gz
et supprimer après création celle faite 2 jours auparavant :
if [ -e backup_quelquechose_$(date -d '2 days ago' +%Y%m%d).tar.gz ] then echo "rm -f backup_quelquechose_$(date -d '2 days ago' +%Y%m%d).tar.gz" fi rm -f backup_quelquechose_20080610.tar.gzOu un truc du genre...
ZanKer92
Messages postés
1
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
20 octobre 2010
1
20 oct. 2010 à 10:31
20 oct. 2010 à 10:31
Bonjour,
vous êtes sur CYGWIN, et vous voulez utiliser la commande "find" comme sur Unix/Linux. Mais vous obtenez l'erreur << missing argument to '-exec' >>.
Voici les commandes à faire, ou ne pas faire...
OK pour:
vous êtes sur CYGWIN, et vous voulez utiliser la commande "find" comme sur Unix/Linux. Mais vous obtenez l'erreur << missing argument to '-exec' >>.
Voici les commandes à faire, ou ne pas faire...
OK pour:
find /path -name '*.log' -type f -mtime +365 -fprintKO pour:
find /path -name '*.log' -type f -mtime +365 -exec rm -f {} \;OK pour:
find /path -name '*.log' -type f -mtime +365 -exec rm -f {} ;C'est la dé-spécialisation du point virgule (;) qu'il ne faut pas mettre à la fin de la commande find pour l'option -exec.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
11 juin 2008 à 17:13
11 juin 2008 à 17:13
Salut,
C'est quoi cette option '-P' de find ? (pas trouvé dans le "man find" ;-( )
C'est pas l'option "--parents" de "cp" qui fiche le bazar par hasard ? T'as essayé sans ?
C'est quoi cette option '-P' de find ? (pas trouvé dans le "man find" ;-( )
C'est pas l'option "--parents" de "cp" qui fiche le bazar par hasard ? T'as essayé sans ?
Salut jipicy,
pour le -P voila l'extrait de mon man
-P : Never follow symbolic links. This is the default behaviour. When find examines or prints information a file, and the file is a symbolic link, the information used shall be taken from the properties of the symbolic link itself.
Je ne pense pas que ce soit très utile dans mon cas mais bon.
Pour le --parents, j'ai essayé sans, et c'était un véritable bordel ^^. En fait ça m'avait copié des fichiers un peu partout, sans que je comprenne bien la logique. Le --parents me permet de garder l'arborescence telle qu'elle (je viens de re-tester à l'instant sans le --parents, et j'ai toujours mes répertoires non désirés qui se copient :/ ).
Je suis encore un bon n00b sur Linux, alors si il y a des trucs un peu bizarre ou inappropriés dans ce que j'écris il ne faut pas hésiter à me corriger.
Merci encore.
pour le -P voila l'extrait de mon man
-P : Never follow symbolic links. This is the default behaviour. When find examines or prints information a file, and the file is a symbolic link, the information used shall be taken from the properties of the symbolic link itself.
Je ne pense pas que ce soit très utile dans mon cas mais bon.
Pour le --parents, j'ai essayé sans, et c'était un véritable bordel ^^. En fait ça m'avait copié des fichiers un peu partout, sans que je comprenne bien la logique. Le --parents me permet de garder l'arborescence telle qu'elle (je viens de re-tester à l'instant sans le --parents, et j'ai toujours mes répertoires non désirés qui se copient :/ ).
Je suis encore un bon n00b sur Linux, alors si il y a des trucs un peu bizarre ou inappropriés dans ce que j'écris il ne faut pas hésiter à me corriger.
Merci encore.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
11 juin 2008 à 17:39
11 juin 2008 à 17:39
Je viens de faire un test chez moi (avec l'option "-rv --parents" de la commande cp) et ça marche très bien ;-\
Essaye d'enlever l'option '-o' dans "-o -exec cp -rvf --parents {} /home/baptiste/ \;"
Essaye d'enlever l'option '-o' dans "-o -exec cp -rvf --parents {} /home/baptiste/ \;"
Oula je viens de tester, et ça m'a copié que les fichiers dont le nom contient 'test' :/
Étrange tout ça...
find -P /home/www/ \( -iname 'A int*grer' -prune \) -o \( -iname 'BACKUP_B2C' -prune \) -o \( -iname 'poubelle' -prune \) -o \( -iname 'test*' -prune \) -exec cp -rv --parents {} /home/baptiste/ \;
Étrange tout ça...
Rectification : ça ma copié tous les fichiers dont le nom contient 'test' ainsi que tous les fichiers dans les répertoires ayant 'test' dans leur nom.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
11 juin 2008 à 17:56
11 juin 2008 à 17:56
C'est peut être l'astérisque (*) qui gène alors, essaye sans le '-o \( -iname 'test*' -prune \)'
Même problème, sauf que cette fois ci c'est le répertoire 'poubelle' uniquement qui se copie !
Grrr ^^
Grrr ^^
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
11 juin 2008 à 18:04
11 juin 2008 à 18:04
Là j'en perds mon latin, enfin ça c'est pas dur j'en parle pas un mot ;-D
Pour récapituler, sans le "-exec cp..." la sortie est bonne ?
Pour récapituler, sans le "-exec cp..." la sortie est bonne ?
Bonjour,
Oui, pour récapituler, si je met un -fprint a la place de -exec cp, la liste obtenue est exactement ce que je souhaite backupé.
C'est pour ça que je suis un peu paumé moi aussi.
Oui, pour récapituler, si je met un -fprint a la place de -exec cp, la liste obtenue est exactement ce que je souhaite backupé.
C'est pour ça que je suis un peu paumé moi aussi.
Bon ben c'était bien ça, le -r qui faisait était superflu et faisait foirer mon filtre.
Par contre jipicy, si tu n'y vois pas d'inconvénients j'aurai encore deux trois questions pour que je puisse finir mon Cron.
Ma problématique est que le cron doit s'exécuter une fois par jour, mais j'aimerais garder au total deux backups ; les deux derniers en date.
Or je ne sais pas quelle facon est la plus simple pour tester et repérer quelle archive est la plus vieille afin de la supprimer. Surtout sachant que je ne sais pas comment travailler sur un nom de fichier (je n'ai pas encore trouver comment récupérer un nom de fichier, toujours avec un find, et le mettre dans une variable).
Merci d'avance pour ton aide et ton temps :)
Par contre jipicy, si tu n'y vois pas d'inconvénients j'aurai encore deux trois questions pour que je puisse finir mon Cron.
Ma problématique est que le cron doit s'exécuter une fois par jour, mais j'aimerais garder au total deux backups ; les deux derniers en date.
Or je ne sais pas quelle facon est la plus simple pour tester et repérer quelle archive est la plus vieille afin de la supprimer. Surtout sachant que je ne sais pas comment travailler sur un nom de fichier (je n'ai pas encore trouver comment récupérer un nom de fichier, toujours avec un find, et le mettre dans une variable).
Merci d'avance pour ton aide et ton temps :)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
12 juin 2008 à 11:53
12 juin 2008 à 11:53
Content que tu aies pu trouver d'où venait l'erreur ;-))
Concernant le :
Surtout sachant que je ne sais pas comment travailler sur un nom de fichier (je n'ai pas encore trouver comment récupérer un nom de fichier, toujours avec un find, et le mettre dans une variable).
Un exemple de ce que tu veux exactement serait le bienvenu ;-))
Concernant le :
Surtout sachant que je ne sais pas comment travailler sur un nom de fichier (je n'ai pas encore trouver comment récupérer un nom de fichier, toujours avec un find, et le mettre dans une variable).
Un exemple de ce que tu veux exactement serait le bienvenu ;-))
Simple : en fait mon Cron va faire à minuit chaque jour un backup qui s'appellera par exemple backup_quelquechose.tar.gz.
Mon problème est de savoir comment arriver à garder simultanément que 2 archives (backup_1.tar.gz et backup_2.tar.gz par exemple).
Du coup il faut que mon cron arrive à repérer quel est l'archive la plus ancienne afin de la supprimer, et mette a la place la nouvelle, etc.
Le principe étant de garder le backup de la veille ainsi que celui de la journée courante (on ne sait jamais ce qui peux arriver, autant être prudent !)
J'espère avoir été plus clair ^^.
Merci à toi, et bon appétit !
Mon problème est de savoir comment arriver à garder simultanément que 2 archives (backup_1.tar.gz et backup_2.tar.gz par exemple).
Du coup il faut que mon cron arrive à repérer quel est l'archive la plus ancienne afin de la supprimer, et mette a la place la nouvelle, etc.
Le principe étant de garder le backup de la veille ainsi que celui de la journée courante (on ne sait jamais ce qui peux arriver, autant être prudent !)
J'espère avoir été plus clair ^^.
Merci à toi, et bon appétit !
Bon j'ai peut être été un peu vite, je viens de voir que je n'ai pas vraiment répondu à ta question.
Je te parlais de travailler sur le nom d'un ficher car je pensais utiliser un find pour trouver mes backups parmi d'autre fichiers, et utiliser soit la date de création de l'archive, soit un numéro passé dans son nom afin de savoir laquelle est la plus ancienne afin de la supprimer. Or je n'arrive pas a passer le résultat de mon find dans une variable afin de pouvoir effectuer des traitements dessus.
Voili voilou.
Je te parlais de travailler sur le nom d'un ficher car je pensais utiliser un find pour trouver mes backups parmi d'autre fichiers, et utiliser soit la date de création de l'archive, soit un numéro passé dans son nom afin de savoir laquelle est la plus ancienne afin de la supprimer. Or je n'arrive pas a passer le résultat de mon find dans une variable afin de pouvoir effectuer des traitements dessus.
Voili voilou.