Ненулевой код выхода tar

Я пытаюсь создать резервный сценарий, который создает полный tarball из моей системы каждую ночь. Чтобы сделать это, я следовал учебному руководству здесь.

Таким образом для проверения его я решил создать ручное резервное копирование:

tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system / 

Когда я пытаюсь выполнить эту команду, я получаю ошибку:

tar: /run/: file is on a different filesystem; not dumped

Это приводит к коду выхода 1. Однако я хочу выполнить эту команду в сценарии и если код возврата 0 Я хочу переместить выходной файл, иначе удалить его. Если я понимаю правильно от учебное руководство, связанное выше --one-file-system подразумевает это /run/ проигнорирован. Но почему я получаю ошибку затем?

Для completness пользы сценарий (WIP) показывают ниже:

#!/bin/bash

# Location to store backups
STORAGE=/media/storage/backups/full
# Current date
DATE=$(date +"%d.%m.%YT%H.%M")
TAR="$DATE.tar.gz"


# Check if the file already exists. Should never be the case though.
if [ ! -f /tmp/$TAR ]; then

    echo "Changing dir to /"
    cd /
    # Create tarball
    echo "Creating tarball"
    tar -cvpzf /tmp/$TAR --exclude=/tmp/$TAR --one-file-system /
    retcode=$?

    echo "Exit status: $retcode"

    if [ $retcode = 0 ] ; then
        echo "Moving file.."
        # Move the file
        mv /tmp/$TAR $STORAGE/$TAR
        echo "Done!"
    fi
fi
3
задан 2 December 2014 в 07:17

1 ответ

Необходимо объявить --one-file-system сначала перед правилом исключения. Существует примечание от того же руководства, за которым Вы следовали.

, Если Вы хотите исключить все другое монтирование кроме тока - этим, я подразумеваю, что разделы, смонтированные к каталогам - тогда, используют - опция с одной файловой системой, добавленная перед правилами исключения. Это имеет эффект того, чтобы мешать tar пересечься в любого другого, монтируется в любом каталоге включая/mnt или / медиа.

1
ответ дан 17 November 2019 в 19:40

Другие вопросы по тегам:

Похожие вопросы: