Я пытаюсь создать резервный сценарий, который создает полный 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
Необходимо объявить --one-file-system
сначала перед правилом исключения. Существует примечание от того же руководства, за которым Вы следовали.
, Если Вы хотите исключить все другое монтирование кроме тока - этим, я подразумеваю, что разделы, смонтированные к каталогам - тогда, используют - опция с одной файловой системой, добавленная перед правилами исключения. Это имеет эффект того, чтобы мешать tar пересечься в любого другого, монтируется в любом каталоге включая/mnt или / медиа.