Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

HS: tar exclure un dossier a la racine mais pas sous dossier

8 réponses
Avatar
Jérémy Prego
Bonjour,

Je viens avec une petite question de NOOB sur tar ce matin. J'aimerai
faire quelque chose qui me parait simple en théorie mais ça me semble
plus compliqué en pratique.

en fait, j'aimerai archiver un dossier mais en excluant un sous dossier
mais seulement dans la racine. je m'explique

Pour l'exemple, le dossier s'appel toto. Dans toto il y a plein de sous
dossier dont un qui s'appel download. mais, il y a aussi un sous dossier
s'appelant archive, et qui contient aussi un dossier download.

Je précise que quand je fais mon tar, je suis dans ce dossier "toto".

à force de recherche, j'ai bien trouvé une commande tar qui me
conviendrait, mais seul souci, l'archive comporte un premier dossier "."
tar --exclude='./download' -zcpvf test.tar.gz .

j'ai bien essayé de remplacer le point de la fin par un * et d'adapter
mon exclude en conséquence, mais j'ai pas réussi a obtenir le résultat
voulu...

du coup, j'aimerai mixer les deux. À savoir, avoir directement mes
dossier a l'ouverture de l'archive, et ne pas avoir le contenu du
premier dossier download.

merci pour l'aide,

Jerem

8 réponses

Avatar
raphael.poitevin
Jérémy Prego writes:
tar --exclude='./download' -zcpvf test.tar.gz .
j'ai bien essayé de remplacer le point de la fin par un * et d'adapt er
mon exclude en conséquence, mais j'ai pas réussi a obtenir le r ésultat
voulu...
du coup, j'aimerai mixer les deux. À savoir, avoir directement mes
dossier a l'ouverture de l'archive, et ne pas avoir le contenu du
premier dossier download.

Et si tu fais :
tar --exclude='./download' -zcpvf test.tar.gz $(ls)
Pas testé, juste une suggestion.
--
Raphaël
Avatar
Jérémy Prego
Le 18/05/2019 à 10:05, Cyrille Bollu a écrit :
‘Comprend pas: c’est quoi le problème avec ta commande? Elle n’exclut pas le 1er dossier download, c’est ça?

le souci avec ma commande, c'est qu'à la création de l'archive, ça crée
un premier dossier "." donc je dois ouvrir ce dossier pour voir mes
fichiers.
Le 18 mai 2019 à 09:18, Jérémy Prego a écrit :
Bonjour,
Je viens avec une petite question de NOOB sur tar ce matin. J'aimerai
faire quelque chose qui me parait simple en théorie mais ça me semble
plus compliqué en pratique.
en fait, j'aimerai archiver un dossier mais en excluant un sous dossier
mais seulement dans la racine. je m'explique
Pour l'exemple, le dossier s'appel toto. Dans toto il y a plein de sous
dossier dont un qui s'appel download. mais, il y a aussi un sous dossier
s'appelant archive, et qui contient aussi un dossier download.
Je précise que quand je fais mon tar, je suis dans ce dossier "toto".
à force de recherche, j'ai bien trouvé une commande tar qui me
conviendrait, mais seul souci, l'archive comporte un premier dossier "."
tar --exclude='./download' -zcpvf test.tar.gz .
j'ai bien essayé de remplacer le point de la fin par un * et d'adapter
mon exclude en conséquence, mais j'ai pas réussi a obtenir le résultat
voulu...
du coup, j'aimerai mixer les deux. À savoir, avoir directement mes
dossier a l'ouverture de l'archive, et ne pas avoir le contenu du
premier dossier download.
merci pour l'aide,
Jerem
Avatar
Jean-Michel OLTRA
Bonjour,
Le samedi 18 mai 2019, Jérémy Prego a écrit...
le souci avec ma commande, c'est qu'à la création de l'archive, ça crée
un premier dossier "." donc je dois ouvrir ce dossier pour voir mes
fichiers.

Essaie en étant dans le répertoire au dessus de toto, puis :
tar -xzf toto.tar.gz -C toto --exclude ./downloads
tar -tvzf toto.tar.gz
mkdir tata
cd tata
tar -xzf ../toto.tar.gz
--
jm
Avatar
Jérémy Prego
Le 18/05/2019 à 11:38, Jean-Michel OLTRA a écrit :
Bonjour,
Le samedi 18 mai 2019, Jérémy Prego a écrit...
le souci avec ma commande, c'est qu'à la création de l'archive, ça crée
un premier dossier "." donc je dois ouvrir ce dossier pour voir mes
fichiers.

Essaie en étant dans le répertoire au dessus de toto, puis :
tar -xzf toto.tar.gz -C toto --exclude ./downloads
tar -tvzf toto.tar.gz
mkdir tata
cd tata
tar -xzf ../toto.tar.gz
hmmm, donc ça veut dire qu'on peut pas éviter ce "." a la création de l'archive directement ? c'est quand même embêtant ... en tout cas, merci pour vos réponses jusqu'ici.

Jerem
Avatar
Jean-Michel OLTRA
Bonjour,
Le dimanche 19 mai 2019, Jérémy Prego a écrit...
hmmm, donc ça veut dire qu'on peut pas éviter ce "." a la création de
l'archive directement ? c'est quand même embêtant ... en tout cas, merci
pour vos réponses jusqu'ici.

Quel "." ? Celui que tu vois lorsque tu fais le `tar -tv` ?
En quoi est ce embêtant ? Lorsque tu décompresses l'archive, tout ce fait
correctement, non ?
--
jm
Avatar
Benoit B
Bonjour,
Voici ma proposition nocturne ! ;)
tar --exclude='./download' -zcpvf test.tar.gz !(.)
Chez moi la sortie affiche :
archive/
archive/download/
download/
titi/
Et pas :
./
./archive/
./archive/download/
./titi/
C'est bien ça que tu veux ?
Bonne nuit,
Benoit
Le sam. 18 mai 2019 à 09:18, Jérémy Prego rk.net> a écrit :
Bonjour,
Je viens avec une petite question de NOOB sur tar ce matin. J'aimerai
faire quelque chose qui me parait simple en théorie mais ça me semble
plus compliqué en pratique.
en fait, j'aimerai archiver un dossier mais en excluant un sous dossier
mais seulement dans la racine. je m'explique
Pour l'exemple, le dossier s'appel toto. Dans toto il y a plein de sous
dossier dont un qui s'appel download. mais, il y a aussi un sous dossier
s'appelant archive, et qui contient aussi un dossier download.
Je précise que quand je fais mon tar, je suis dans ce dossier "toto" .
à force de recherche, j'ai bien trouvé une commande tar qui me
conviendrait, mais seul souci, l'archive comporte un premier dossier "."
tar --exclude='./download' -zcpvf test.tar.gz .
j'ai bien essayé de remplacer le point de la fin par un * et d'adapt er
mon exclude en conséquence, mais j'ai pas réussi a obtenir le r ésultat
voulu...
du coup, j'aimerai mixer les deux. À savoir, avoir directement mes
dossier a l'ouverture de l'archive, et ne pas avoir le contenu du
premier dossier download.
merci pour l'aide,
Jerem
Avatar
Benoit B
Oups je voulais écrire
tar -zcpvf test.tar.gz !(download)
Qui archivera :
archive/
archive/download/
titi/
et exclu le download du répertoire courent avec !()
Le sam. 18 mai 2019 à 09:18, Jérémy Prego rk.net> a écrit :
Bonjour,
Je viens avec une petite question de NOOB sur tar ce matin. J'aimerai
faire quelque chose qui me parait simple en théorie mais ça me semble
plus compliqué en pratique.
en fait, j'aimerai archiver un dossier mais en excluant un sous dossier
mais seulement dans la racine. je m'explique
Pour l'exemple, le dossier s'appel toto. Dans toto il y a plein de sous
dossier dont un qui s'appel download. mais, il y a aussi un sous dossier
s'appelant archive, et qui contient aussi un dossier download.
Je précise que quand je fais mon tar, je suis dans ce dossier "toto" .
à force de recherche, j'ai bien trouvé une commande tar qui me
conviendrait, mais seul souci, l'archive comporte un premier dossier "."
tar --exclude='./download' -zcpvf test.tar.gz .
j'ai bien essayé de remplacer le point de la fin par un * et d'adapt er
mon exclude en conséquence, mais j'ai pas réussi a obtenir le r ésultat
voulu...
du coup, j'aimerai mixer les deux. À savoir, avoir directement mes
dossier a l'ouverture de l'archive, et ne pas avoir le contenu du
premier dossier download.
merci pour l'aide,
Jerem
Avatar
Benoit B
Pour les détails d'exclusion, voir man bash :
If the extglob shell option is enabled using the shopt builtin, several
extended pattern matching operators are recognized. In the follow ing
description, a pattern-list is a list of one or more patterns separa ted
by a |. Composite patterns may be formed using one or more of the f ol‐
lowing sub-patterns:
?(pattern-list)
Matches zero or one occurrence of the given patterns
*(pattern-list)
Matches zero or more occurrences of the given patterns
+(pattern-list)
Matches one or more occurrences of the given patterns
@(pattern-list)
Matches one of the given patterns
!(pattern-list)
Matches anything except one of the given patterns
Par exemple si tu veux exclure download et titi
tar -zcpvf test.tar.gz !(download|titi)
Bonne nuit,
Le dim. 19 mai 2019 à 22:50, Benoit B a écr it :
Oups je voulais écrire
tar -zcpvf test.tar.gz !(download)
Qui archivera :
archive/
archive/download/
titi/
et exclu le download du répertoire courent avec !()
Le sam. 18 mai 2019 à 09:18, Jérémy Prego work.net> a écrit :
Bonjour,
Je viens avec une petite question de NOOB sur tar ce matin. J'aimerai
faire quelque chose qui me parait simple en théorie mais ça m e semble
plus compliqué en pratique.
en fait, j'aimerai archiver un dossier mais en excluant un sous dossier
mais seulement dans la racine. je m'explique
Pour l'exemple, le dossier s'appel toto. Dans toto il y a plein de sous
dossier dont un qui s'appel download. mais, il y a aussi un sous dossie r
s'appelant archive, et qui contient aussi un dossier download.
Je précise que quand je fais mon tar, je suis dans ce dossier "tot o".
à force de recherche, j'ai bien trouvé une commande tar qui m e
conviendrait, mais seul souci, l'archive comporte un premier dossier ". "
tar --exclude='./download' -zcpvf test.tar.gz .
j'ai bien essayé de remplacer le point de la fin par un * et d'ada pter
mon exclude en conséquence, mais j'ai pas réussi a obtenir le résultat
voulu...
du coup, j'aimerai mixer les deux. À savoir, avoir directement mes
dossier a l'ouverture de l'archive, et ne pas avoir le contenu du
premier dossier download.
merci pour l'aide,
Jerem