Je n'ai absolument aucune idée de comment décompresser l'archive créée. Je vous donne le script complet. Une distribution basée sur Debian nommée Univention l'utilise pour sauvegarder plusieurs fichiers dans une archive tar.Comment extraire l'archive de ce script (en utilisant tar)
L'archive réelle est emballée dans une fonction. Le contenu principal où ils créent le fichier tar réel est:
cat "$TMPDIR/freeinfo.txt" >> "$TMPDIR/Installinfo.txt" 2>/dev/null
echo >$TMPDIR/endtag.txt
echo "%%%%OXBACKUP_${DATE}_HEADER_ENDTAG" >> "$TMPDIR/endtag.txt"
BACKUPINFO="$BACKUPINFO endtag.txt"
cat 2>/dev/null <<EOF> "$TMPDIR/Installinfo.sh"
BACKUPHOSTNAME="$hostname"
BACKUPDOMAINNAME="$domainname"
BACKUPBASEDN="$ldap_base"
BACKUPTIMEZONE="$(cat /etc/timezone)"
BACKUPLANG="$(echo $locale_default)"
BACKUPSAMBADOM="$windows_domain"
BACKUPSAMBAINSTALLED="$SAMBAINSTALLED"
BACKUPOXINTEGRATIONVERSION="$INTEGRATIONVERSION"
BACKUPSECLEVEL="$(univention-config-registry get version/security-patchlevel)"
BACKUPVERSION=2
SECRETFILES="$SECRETFILES"
OTHERFILES="$OTHERFILES"
OXCONFIG="$OXCONFIG"
CRONTABS="$CRONTABS"
CERTFILES="$CERTFILES"
EOF
pstatus=()
#
# the actual backup to stdout
#
sync ; sync ; sync
RETVAL=$(
(tar cO $BACKUPINFO 2>/dev/null
tar cO $SECRETFILES 2>/dev/null
tar cO $OTHERFILES 2>/dev/null
tar cO $OXCONFIG 2>/dev/null
tar cO $CRONTABS 2>/dev/null
tar cO $CERTFILES 2>/dev/null
[ -f $EXTRAFILES ] && tar --no-recursion -T $EXTRAFILES -cO 2>/dev/null
tar --no-recursion --null -T dirlist_mailandfilestore -cO 2>/dev/null
tar --null -T filelist_mailandfilestore -cO 2>/dev/null
tar --no-recursion --null -T dirlist_shares -cO 2>/dev/null
tar --null -T filelist_shares -cO 2>/dev/null
) |
#help us out with smbclient, perl, scp until we get a working curl
case "$BACKUPPROTOCOL" in
##stripped protocol specific stuff ... (*) is the way to go!
(*) dd 2>>${LOGFILE}_${DATE} > ${BACKUPPATH:-$DEFAULTBACKUPPATH}/backup_$DATE && echo "201"
chmod 640 "${BACKUPPATH}/backup_$DATE" >/dev/null 2>&1
chown root:www-data "${BACKUPPATH}/backup_$DATE" >/dev/null 2>&1
if [[ x"$BACKUPPATH" != x && "$BACKUPPATH" != "$DEFAULTBACKUPPATH" ]] ; then
# temporary permissions fix
ln -sf "${BACKUPPATH}/backup_$DATE" "$DEFAULTBACKUPPATH/"
fi
;;
esac
)
l'archive est de 54 Go sur le système, le goudron XVF extrait seul le premier niveau de l'archive. Désolé d'être difficile à expliquer. Dans l'ensemble, je n'ai que 40 Mo sur ce 54Go. Tous les répertoires qui devraient être dans l'archive ne sont pas extraits.
L'utilisation de $ ((goudron ... goudron ...) | dd> toto)
est aussi ce qui ne totalement inconnu pour moi, faire ce script?
Je pense avoir trouvé une solution moi-même (j'ai mis à jour le script un petit peu): Le script génère une balise qui marque la fin de la première archive. Je utilisé grep -A1 -a -b "HEADER_ENDTAG" backup.tar Value était 41.247.795 dd sauter = 41247795 if = ../../sauvegarde = test
On dirait que je pouvais maintenant extraire le « réel "archive. Y a-t-il un autre moyen de sauter automatiquement à ce décalage d'octet, par ex. sans utiliser grep manuellement?
Le script est-il terminé? Vous êtes sûr que ça fonctionne comme ça? tar sur debian ne fonctionne pas avec un paramètre "c0". – theomega
oui fonctionne, teste aussi sur lenny. Essayez-vous: $ ((tar --null --no-récursion/etc/-cO; tar --null/etc/-cO) | dd> foo) Et essayez d'extraire plein etc. Non le script n'est pas complet . Shoul je poster la chose complète? – evildead
Oubliez mon commentaire (mais voir ma réponse), j'ai pris le O (lettre) pour un 0 (numéro, zéro). – theomega