Comment creer automatiquement dossier destination pour tar, cp.

Fermé
leon91490 Messages postés 166 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 9 septembre 2017 - 22 août 2016 à 16:28
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 23 août 2016 à 11:06
Bonjour,

bonjour et bonne semaine

j'ai une petite question qui pourrait m’éviter des galères via les commandes tar cp etc....


je voudrais une option dans tar ou cp de facon à ce que si je fais

tar -zcvf /media/disque/sauvegarde/archives-etc/complete_date.tar.gz dossier/

alors si archive-etc existe pas qu'il soit créé automatiquement via une option de tar mais aussi de cp

A voir également:

1 réponse

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
Modifié par mamiemando le 23/08/2016 à 11:07
Bonjour,

De telles options n'existent pas.

Explication

Ce qu'il faut bien comprendre c'est que les commandes d'un langage (ici shell) sont un peu ce que sont des mots à une langue. Si la sémantique est suffisamment riche, on peut alors exprimer la plupart des choses. Toute la difficulté est de trouver un curseur entre ce qui "mérite" d'être un mot (une commande) ou une variante (une option associée à ce mot), et ce qui ne doit pas en être. Dit autrement, s'il n'y a pas de commande ou d'option qui fait ce que tu cherches, alors c'est que ton besoin est probablement trop particulier.

C'est exactement ton cas ici. Le travail de
cp
est de copier, celui de
tar
d'archiver ou désarchiver, pas de créer des répertoires. Pour ton besoin, il faut simplement construire un programme qui fera ce que tu souhaites, et le mettre avec des droits d'exécutions dans
/usr/local/bin
pour en faire une commande.

Résolution de ton problème

Supposons que tu veux appeler ta commande
toto
, lance :

gksudo gedit /usr/local/bin/toto


Copie colle dans ce fichier :

#!/bin/bash

if [ $# -ne 3 ] ; then
    echo "$0: options archive contents" &1>2
    exit 1
fi

options=$1
archive=$2
contents=$3
directory=$(dirname $archive)

if [ ! -d $directory ] ; then
    mkdir -p $directory
fi

tar $options $archive $contents

exit $?


Sauve et quitte et donne les droits en exécution :

sudo chmod a+x /usr/local/bin/toto


Puis lance ton script pour tester :

toto cvzf /dossier/archive/archive.tgz /le/repertoire/a/compresser


Bonne chance
0