Я использую эту команду на5ГБархив
tar -zxvf archive.tar.gz /folder/in/archive
это правильный способ сделать это? Кажется, это занимает целую вечность без вывода командной строки...
решение1
tar
хранит относительные путипо умолчанию. GNU tar даже говорит об этом, если вы попытаетесь сохранить абсолютный путь:
tar -cf foo.tar /home/foo
tar: Removing leading `/' from member names
Если вам нужно извлечь определенную папку, посмотрите, что находится в tar-файле:
tar -tvf foo.tar
И запишите точное имя файла. В случае моего foo.tar
файла я мог бы извлечь, /home/foo/bar
сказав:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Так что нет, способ, который вы разместили, не является (обязательно) правильным. Вам нужно убрать начальный слеш. Если вы хотите имитировать абсолютные пути, сделайте это cd /
первым и убедитесь, что вы суперпользователь. Кроме того, это делает то же самое:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Есть очень очевидные, веские причины, почему tar
преобразует пути в относительные. Одна из них — возможность восстановить архив в местах, отличных от его исходного источника. Другая — безопасность. Вы можете извлечь архив, ожидать, что его файлы появятся в вашем текущем рабочем каталоге, и вместо этого по ошибке перезаписать системные файлы (или вашу собственную работу) в другом месте.
Примечание: если вы используете эту -P
опцию,tar
воляархивировать абсолютные пути. Поэтому всегда стоит проверять содержимое больших архивов перед извлечением.