В большинстве дистрибутивов, нажатия Ctrl+Alt+Backspace, уничтожает X11 (графический) интерфейс и перезапускает его. К сожалению, некоторые недавние, предположительно "удобные для пользователя" дистрибутивы деактивировали этот очень полезный ярлык по некоторой непостижимой причине. Я не знаю, таким образом ли Монетный двор "удобен для пользователя", но Вам нечего терять, пробуя его :)
Используйте --absolute-names
или -P
опция отключить эту опцию.
tar fczP bkup.tar.gz /home/foo/
tar fcz bkup.tar.gz --absolute-names /home/foo
Это - на самом деле функция, не проблема. Архивы с абсолютными местоположениями являются угрозой безопасности. Взломщики могли использовать такие архивы для обманывания пользователей в установку файлов в критических системных местоположениях.
Да, Вы могли использовать -P
. Но что случилось с разрешением tar удалить наклонную черту вправо и просто требование, чтобы пользователь архива явно сделал извлечение в корневом каталоге? Затем они сознательно влияют на критические системные местоположения и не могут сделать этого случайно.
tar
. Это конкретное сообщение вызывало tar
выходить с состоянием 1
, который заставлял меня получать ложные предупреждения по электронной почте на успешных резервных копиях, просто потому что tar
писал это сообщение в STDERR. Я устранил эту проблему при помощи своей собственной настроенной версии решения @Marcus: cd /path/to/network/share && tar -cJf scripts.backup.tar.xz -C / home/user/scripts 2>/dev/null || [send an email alert]
– rubynorails
14.12.2015, 21:14
-P
- например, если Вы обеспечиваете некоторую функцию создания снимков файловой системы в FUSE. Часть времени можно хотеть к untar снимок в определенном каталоге, а не cwd
с точки зрения пользователя.
– DIMMSum
28.11.2016, 06:11
Если Вы хотите избавиться от "Удаления продвижения '/' от имен элемента", распечатанных к STDERR, но все еще хотеть кончить те, которые ведут наклонные черты как tar мудро, делают по умолчанию, я видел отличное решение здесь комментатором timsoft.
Решение включает использование-C опция изменить каталог на корень (/), затем указывая дерево файла для архивации без ведущей наклонной черты, потому что теперь Вам только нужен относительный путь. Это делает то же самое, поскольку нормальный tar создает команду, но никакое разделение не необходимо:
tar fcz bkup.tar.gz -C / home/foo/
tar c -C / home/foo/*
), потому что оболочка не знает об измененном корне. Но все еще хороший ответ для других случаев.
– Boris
15.04.2015, 09:27
-C /
не работает на меня, период. Это не предотвращает stderr для меня.
– Acumenus
10.08.2015, 10:45
Это - то, как я сделал это при помощи метода грубой силы: 2>&1 | grep -v "Removing leading"
.
Например:
tar -cf "$BKUPDIR/${BKUPFILE}.tar" --overwrite --exclude '.*' --one-file-system "$SRCDIR" 2>&1 | grep -v "Removing leading"
На месяц позже, но я нашел наиболее подходящее решение для своего случая (в сценарии оболочки ) - это перейти в родительский каталог и выполнить там команду.
cd /var/www/
tar -czf mysite.gz mysite
Вместо:
tar -czf /var/www/mysite.gz /var/www/mysite
Я решил эту проблему с помощью:
cd /home/foo && tar czf ~/backup.tar.gz.
Таким образом, вы не пытаетесь вводить абсолютные пути в tar-архив в первую очередь. Если вы хотите распаковать его в корень файловой системы, просто
cd / && tar xzf backupt.tar.gz
после передачи.
Попробуйте использовать -C
только для пути, что предотвратит сжатие с полными путями:
root@server # tar fcz bkup.tar.gz -C /home/ foo/
это не фича, это баг. удаление абсолютных путей создает неизвлекаемый архив, если данные пути каким-то образом становятся неверными. tar выдает ошибку и отказывается что-либо извлекать. лучше использовать tardy, чтобы сначала отфильтровать путь.
-C /
опция, как описано в ответе @Marcus' будет мерзавец, избавленный от сообщения STDERR, если это будет Вашей основной целью. – Matt Sanders 29.12.2013, 00:29