Как распаковать архивы в файловую систему в терминале?

15

Я установил jupiter и использую тему сияния, чтобы значок не выглядел правильно, поэтому я нашел ответ о том, как его изменить. Как я могу изменить значок для Jupiter? , Он упоминает о необходимости доступа суперпользователя, и я подумал, что использование sudo в терминале было бы проще, чем включение root или что-то еще, что мне нужно сделать, но я не могу найти здесь ничего, что объясняет, как извлечь файл tar.bz в каталог в терминале.

Джефф Х
источник
1
sudo tar -xzvf example.tar.bzВы действительно не смогли найти это, погуглив ?! : P
adempewolff
Ну, я новичок в Linux, я не был уверен, что это правильно. И это не работает. Мне нужно извлечь несколько значков в папку с растровыми изображениями
Джефф Х
-1: вопросы, которые это основное должно быть решено с помощью веб-поиска.
Скотт Северанс
3
На самом деле, здесь нужно немного подумать, чтобы сделать это правильно. Вы должны убедиться, что файлы из архива попадают в нужное место и имеют право собственности. ( tarпозаботится о разрешениях, но не обязательно о владельце.) И новичку не обязательно очевидно, какие части задачи нужны, sudoа какие нет. Это кажется ценным вопросом для нашего сайта.
Элия ​​Каган
Справедливо. По правде говоря, я не смог найти повторяющийся вопрос в самом Спросите Ubuntu, поэтому я не вижу проблем с тем, чтобы его задавали ... Лично я бы попытался по крайней мере придумать команду кандидата путем веб-поиска или чтения, man tarпрежде чем задавать вопрос , но я думаю, что это может быть ценным вопросом для сайта, и я думаю, что знаю, кто должен написать ответ ... (подтолкнуть @EliahKagan, хе-хе)
adempewolff

Ответы:

25

Метод 1: Извлечение файлов, затем копирование их как корневого

Перейдите в Терминале, где находится файл. Например, если он находится в Downloadsпапке внутри вашей домашней папки, выполните эту команду:

cd ~/Downloads

Символ ~в этом контексте является сокращением для полного имени вашей домашней папки. (Например, если ваше имя пользователя jeff, это аббревиатура /home/jeff.)

Теперь распакуйте архив с помощью tar. Поскольку этот файл является .gzархивом, вы будете использовать zфлаг, чтобы сказать tarэто:

tar xvzf Jupiter_Radiance_theme_icons.tar.gz

xзначит извлечь. vозначает, что список файлов по мере их извлечения (вы можете оставить это, если хотите). zзначит для gunzipнего (поскольку сам .tarархив сжимается с gzipпомощью - это то, что .gzобозначает расширение). fозначает извлечь его здесь, в файловой системе (и необходимость в нем является артефактом более старого обычного использования tarдля создания и извлечения ленточных архивов ).

Архив, который вы только что извлекли, содержит три файла (вы видели их имена, если сохранили vфлаг в команде). Их имена bolt1.png, bolt2.pngи bolt4.png. Теперь скопируйте эти файлы в /usr/share/pixmaps. Это часть, которая требует rootпривилегий, поэтому здесь вы должны использовать sudo:

sudo cp --no-preserve=ownership bolt1.png bolt2.png bolt4.png /usr/share/pixmaps

Вы извлекли их как своего собственного (не root) пользователя, который дал вам право собственности на них. Но rootдолжны владеть файлами в /usr/share/pixmaps, поэтому вы должны использовать --no-preserve=ownershipаргумент для cp. Поскольку вы копируете файлы, как rootв каталоге root, которым вы владеете, копия, которую вы делаете, будет принадлежать вам rootкак следует.

Способ 2: копирование и извлечение архива в качестве корневого

Возможно, вам будет проще сделать все как root. Затем rootбудет владеть файлами изначально, потому что rootбудет извлекать их. Самый простой способ сделать это - поместить архив в папку назначения (если его там еще нет).

Предположим, файл находится в Downloads:

cd ~/Downloads
sudo cp Jupiter_Radiance_theme_icons.tar.gz /usr/share/pixmaps

Обратите внимание, что вместо этого вы могли бы mvвместо cpперемещения переместить его вместо копирования (при условии, что исходная и целевая папки находятся в одном разделе).

Теперь перейдите в целевую папку и распакуйте архив:

cd /usr/share/pixmaps
sudo tar xzvf Jupiter_Radiance_theme_icons.tar.gz

Вы, вероятно, должны удалить архив, потому что не стоит иметь посторонние файлы в /usr/share/pixmaps:

sudo rm Jupiter_Radiance_theme_icons.tar.gz

Способ 3: просто извлечь архив как корень

Если вам нравится, вы можете хранить архив там, где вы его скачали, и просто распаковать его /usr/share/pixmapsкак root. (Спасибо Адемпевольфу за предложение представить этот метод.)

cd /usr/share/pixmaps
sudo tar xzvf ~/Downloads/Jupiter_Radiance_theme_icons.tar.gz

Это работает, потому tarчто по умолчанию будет извлекать архив в любую папку, в которой вы находитесь , а не в папку, в которой находится архив (если они разные).

Другие Методы

Вы можете легко сделать вариант Метода 1, где вы извлекаете файлы графически с помощью Менеджера архивов, а затем копируете их в Терминале с помощью sudo. Но вы также можете сделать как root, запустив Nautilus (файловый браузер) как root. Если вы сделаете это, вы можете выполнить любую задачу управления файлами с помощью Nautilus, и любые программы, которые вы запускаете из Nautilus, также будут запускаться как root. Вы должны быть осторожны с этим, потому что вы можете повредить вашу систему, допустив ошибку (точно так же, как вы можете sudoвыполнить неправильную команду с помощью ), и потому что было бы особенно плохо забывать, что это окно Nautilus работало rootскорее, чем обычно ,

Для запуска графических программ rootне используйте sudoнапрямую. Вместо этого используйте gksu. Итак, чтобы запустить Nautilus как root, вы можете нажать Alt+ F2и запустить:

gksu nautilus

Если вы сделаете это, обязательно закройте окно Nautilus, когда вы закончите , и используйте его только для задач, в которых вы знаете, что вам нужно root(например, для внесения изменений в содержимое /usr/share/pixmaps).

Вы могли бы даже сделать вариант Метода 2 или Метода 3, где вы ничего не копируете как root, а вместо этого извлекаете архив в rootграфическом виде, запустив Менеджер архивов как root. Для этого нажмите Alt+ F2и запустите:

gksu file-roller

Однако большинству пользователей проще извлечь файлы, запустив Менеджер архивов из Nautilus, потому что тогда он открывается, зная, какой архив вы хотите использовать. (Вы можете передать имя архива как часть file-rollerкоманды ... но с этого момента вы начинаете терять преимущество удобства использования графического интерфейса над командной строкой.)

Предлагаемые ресурсы

Чтобы узнать больше об извлечении файлов с помощью tar, см man tar.

Если бы архив был .tar.bz2, вы бы использовали jвместо z. Если бы это было так .xz, вы бы использовали Jвместо этого. Для получения всей остальной информации см. Эту страницу руководства.

Чтобы узнать больше о выполнении административных задач в Ubuntu, см. Документацию сообщества по sudoиroot , а также man sudoи по man gksu(или, man kdesudoесли вы используете Kubuntu).

Документацию сообщества по сжатию файлов стоит прочитать, чтобы узнать больше об архивах и сжатии файлов. (Технически это две взаимосвязанные и перекрывающиеся, но разные вещи. Например: .tarфайл является архивом. .gzФайл сжат.)

В большинстве случаев вы tar, вероятно, не будете создавать и восстанавливать резервные копии, но это может быть полезно для этого, а также понимание того, как это работает, улучшает ваше понимание того, что tarможно и что нельзя делать и как его использовать. Если вас это интересует, обратитесь к документации сообщества по резервному копированию вашей системыtar .

Элия ​​Каган
источник
1
+1, но вы не можете устранить cpшаг? как то cd /usr/share/pixmapsа потом sudo tar xzvf ~/Downloads/Jupiter_Radiance_theme_icons.tar.gz?
adempewolff
Я попробую один на основе графического интерфейса, спасибо. ОБНОВЛЕНИЕ: этот метод работал отлично, спасибо
Джефф Х
@adempewolff Это правда, это будет работать. Я думаю, что способ, которым я представил, концептуально подобен ... но я продолжу и добавлю этот путь также, поскольку это экономит большую часть печати и может быть предпочтительным.
Элия ​​Каган
Я согласен , что это помидоры Томь ав -toes различие. Мне просто лень набирать несколько команд!
adempewolff
1
@ B1KMusic Правильно, вам обычно не нужно z. Теоретически могут быть поврежденные архивы, которые можно извлечь (возможно, только частично), но только если вы скажете, tarкакой тип архива пытаться извлечь, но на практике я думаю, что вы правы: даже поврежденные архивы, скорее всего, от этого не выиграют. Что касается производительности и vфлага: я объясняю, что vделает флаг, людям не нужно его использовать. Многофайловые архивы - такая ситуация, когда производительность будет снижаться - также приводят к быстрой прокрутке, неинтересному выводу. В любое время, когда кто-то действительно хочет использовать v, замедление маловероятно.
Элия ​​Каган