Я абсолютно не знаю, как распаковать созданный архив. Я даю вам полный сценарий. Разбивка на основе Debian под названием Univention использует это для резервного копирования нескольких файлов в tar-архиве.Как извлечь архив из этого скрипта (используя tar)
Реальный архив упакован в функцию. Основное содержанием, где они создают реальный архивный файл является:
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
)
в архиве есть 54 ГБ в системе, деготь XVf извлечь только первый уровень архива. Извините трудно объяснить. В целом я получаю только 40 МБ из этого 54 ГБ. Все Dirs, которые должны быть в архиве, не извлекаются.
Использование $ ((деготь ... дегтя ...) | дд> Foo)
также совершенно неизвестный мне, что этот сценарий делает?
Я думаю, что нашел решение самостоятельно (немного обновил скрипт): Сценарий генерирует тег, который знаменует конец первого архива. Я использовал Grep -A1 -a -b "HEADER_ENDTAG" backup.tar Значение было 41247795 дд пропустить = 41247795, если = ../../подпорка = тест
Похоже, теперь я мог извлечь «реальный "архив. Есть ли другой способ автоматического перехода на это смещение байта, например. без использования grep вручную?
Полный сценарий? Вы уверены, что он работает так? tar на debian не работает с параметром «c0». – theomega
есть работы, teste тоже сверху lenny. Попробуйте сами: $ ((tar --null --no-recursion/etc/-cO; tar --null/etc/-cO) | dd> foo) И попробуйте извлечь полный текст и т. Д. Нет, скрипт не завершен , Shoul я пишу полную вещь? – evildead
Забудьте свой комментарий (но см. Мой ответ), я взял O (письмо) для 0 (число, ноль). – theomega