Если вы разделите используемое пространство на общее пространство, вы получите 10485/ (118401+10485 )≈ 0,08135, что округляется до 8,14%.
По умолчанию в файловой системе ext2/ext3/ext4 5% пространства зарезервировано для root. Значение «Доступно», отображаемое командой df
, не включает это зарезервированное пространство в общее пространство (, т. е. выполняется расчет на основе 95% общего пространства, то есть все, что не -пользователь root. может использовать ), поэтому вычисление, которое он делает, 10485 / ((118401+10485 )*0,95 )≈ 0,08563, что округляется до 9%.
Зарезервированное пространство позволяет системе продолжать работать некоторое время после того, как оно почти заполнено. Например, логи еще можно некоторое время писать, что может сильно помочь в диагностике того, что заполнило диск. Для раздела, который не содержит /var
, зарезервированное пространство менее полезно, но файловая система, заполненная на 95%, скорее всего, в любом случае будет фрагментирована, поэтому для производительности не стоит выходить за рамки этого.
Опция --strip-components
предназначена для изменения имен извлеченных файлов. --strip-components <N>
означает «удалить первые <N>
компоненты имени файла», где «компоненты» относятся к частям пути, разделенным /
.
Если у вас есть имя файла foo/bar/baz
, то с --strip-components 1
извлеченный файл будет называться bar/baz
.
Опция -C
просто означает «изменить каталог». Если вы используете -C /some/other/place
, вы фактически запрашиваете tar
на cd /some/other/place
перед извлечением файлов. Обычно это означает, что файлы будут извлечены относительно /some/other/place
.
В дополнение к хорошему ответу larsks , чтобы попытаться устранить путаницу вокруг опции -C
:
На справочной странице tar
указано для параметра -C
:
-C, --directory=DIR
Change to DIR before performing any operations. This option is
order-sensitive, i.e. it affects all options that follow.
так что это не похоже на mv
-, это буквально говорит tar
перейти в другой рабочий каталог. Также обратите внимание на то, что порядок имеет значение. Так:
tar r -f archive.tar -C /path file1 file2
будет добавлять файлы file1
и file2
в местоположении /path
к archive.tar
, в то время как
tar r -f archive.tar file1 file2 -C /path file3 file4
добавит file1
и file2
из текущего рабочего каталога, а затем file3
и file4
из местоположения /path
.
--strip-components
и -C
являются независимыми и не связанными с tar
параметрами.Первый влияет на структуру папок архивных файлов после их извлечения, а -C
указывает рабочий каталог, который tar
использует для указания файлов, являющихся внешними по отношению к архиву.
Я не уверен, что могу сказать в качестве объяснения это не было охвачено другими ответами. Вместо этого я постараюсь помочь вам с примерами.
Аркадиуш Драбчик приводит пример из руководства GNU tar где ваш архив включает большое дерево каталогов (, например, все /usr
):
$ tar -cf usr.tar /usr
и вы хотите углубиться в архив и извлеките файл из подкаталога нижнего -уровня :
.$ tar -xf usr.tar --strip=2 usr/include/stdlib.h
Чего в руководстве не сказано, так это того, что если вы скажете
$ tar -xf usr.tar usr/include/stdlib.h
, затем tar
создаст каталог usr
в текущем каталоге, и подкаталог include
в usr
, а затем извлеките stdlib.h
в ./usr/include
. Если это тот результат, который вы хотите, тогда хорошо; используйте эту команду. Но если вы хотите stdlib.h
в текущем каталоге, вам нужно
$ mv usr/include/stdlib.h.
, а затем, вероятно, rmdir -p usr/include
. Это выполнимо, но утомительно. --strip=2
избавляет вас от необходимости много печатать.
-C
также можно использовать с опциейc
(нижнего -случая C ). (создание архива ), и это может быть проще понять. Предположим, Джон, Кейт, Ларри и Мэри совместно пишут книгу; они пишут главы 1, 2, 3 и 4 соответственно. Джон и Кейт (только )используют один и тот же компьютер, и они хотят заархивировать то, что уже сделали отправить другим авторам. Вы можете сделать одно из следующих действий :
(cd to some suitable directory) $ tar cf chap12.tar /home/john/chap1 /home/kate/chap2или
$ cd /home
$ tar cf /tmp/chap12.tar john/chap1 kate/chap2
Но они создают архив, который кодирует пути к каталогам john/
и kate/
.Если вы это сделаете,это было бы причиной для Ларри и Мэри использовать --strip=2
или --strip=1
при извлечении архива.Если вы хотите спасти их, которые беспокоят (и/или не храните свои имена в архиве; например, по соображениям конфиденциальности ), то вы можете
(cd to some suitable directory) $ tar cf chap12.tar -C /home/john chap1 -C /home/kate chap2
и тогда в архиве будут показаны только каталоги chap1
и chap2
.