Работает ли резервное копирование на основе tar, зависит от того, какие метаданные вы хотите архивировать и какую реализацию tar вы используете.
В GNU tar недавно добавлена поддержка списков ACL для Linux, но эта поддержка неполноценна, и может случиться так, что файлы извлекаются с помощью списков ACL, которых нет в архиве, но которые были унаследованы от родительского каталога. Это может дать доступ пользователям, которые не должны иметь этот доступ.
Аналогичные проблемы возникают и с поддержкой SELinux в GNU tar.
Если вы не полагаетесь на такого рода метаданные и не планируете делать инкрементные резервные копии, вы можете использовать GNU tar.
Кстати, :в самую последнюю версиюstar
(в schilytools )добавлена поддержка SELinux.
Людям, которые считают, что можно использовать GNU tar для инкрементного резервного копирования, следует запустить этот сценарий, чтобы убедиться, что он не работает. Соответствующий отчет об ошибке был отправлен сопровождающим GNU tar в сентябре 2004 г., в 2011 г. и в 2016 г. Эта ошибка известна уже 14 лет :
.if [ "$gtar" ]; then
#
# Permit: gtar=/tmp/tar-1.30/src/tar sh gnutarfail.sh
#
GT=`"$gtar" --help 2> /dev/null | grep GNU`
else
GT=`gtar --help 2> /dev/null | grep GNU`
if [ "$GT" ]; then
gtar=gtar
else
# Some systems have "gtar" installed as "tar"
GT=`tar --help 2> /dev/null | grep GNU`
if [ "$GT" ]; then
gtar=tar
fi
fi
fi
if [ -z "$GT" ]; then
echo No gtar found
exit 1
fi
echo gtar installed as $gtar
# Preparation complete
#-----------------------------------
cd /tmp
mkdir test.$$
cd test.$$
set -x
mkdir test
mkdir test/dir1
mkdir test/dir2
echo dir1-file > test/dir1/dir1-file
echo dir2-file > test/dir2/dir2-file
$gtar -g/tmp/test.$$/listed-incr -c -f /tmp/test.$$/full.tar test
rm -rf test/dir2
mv test/dir1 test/dir2
$gtar -g/tmp/test.$$/listed-incr -c -f /tmp/test.$$/incremental.tar test
mv test orig
$gtar -x -g/dev/null -f /tmp/test.$$/full.tar
$gtar -x -g/dev/null -f /tmp/test.$$/incremental.tar
Замените новую строку на желаемый разделитель,
tail -n $line OUTCAR | head -n 1 |awk '{print $NF}'$space |tr '\n' '\t' >> descriptor`
tr '\n' '\t'
заменит символ новой строки на табуляцию. и удалите echo '/t';
в скрипте.
Попробуйте -внутри цикла-
tail -n 38 | awk 'NR > 10 {printf ORS; exit} NR != 9 {printf "%s\t", $NF}'
Если вы не можете жить с конечным символом <TAB>
, необходимо принять дополнительные меры.