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