Tar linux как добавить файлы с именами в русской кодировке

Обновлено: 05.07.2024

Параметры монтирования в том live-cd сказать не могу, его в меня больше нет. В Debian, который сейчас использую монтируется автоматически, как любая флешка или т.п. В ручную тоже пробовала разные параменты - не помогало. Из посоветованных выше -o codepage=866,iocharset=cp1251 превращает крокозябры (кроме цифр) в вопросительные знаки, а c -o utf8 результат ничем не отличается от автоматического.

Вообще, очень похоже на UTF-8, т.к. каждая русская буква превратилась в две крокозябры (русские буквы в UTF-8 кодируются как раз двумя байтами), но почему не работает параметр utf-8 -не знаю.

хотя у меня и как я выше писал нормально монтировалось.
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
хотя у меня и как я выше писал нормально монтировалось.

-o utf8,iocharset=utf8 не помогло - остались те же крокозябры

Тогда могу только предположить, что диск был криво смонтирован с livecd (например с utf8,iocharset=iso8859-1), и имена файлов записались коряво. Тогда надо не подбирать опции монтирования, а думать, как сконвертить имена файлов в нормальные.
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Тогда могу только предположить, что диск был криво смонтирован с livecd (например с utf8,iocharset=iso8859-1), и имена файлов записались коряво. Тогда надо не подбирать опции монтирования, а думать, как сконвертить имена файлов в нормальные.
Вполне возможно, live-cd был довольно старым и не русским. На исходном разделе имена файлов были в UTF-8, вполне возможно, что он неверно ститал их, не говоря уже о том, чтобы правильно записать. А если, кстати, смонтировать с теми опциями, что я написал в скобках?
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
А если, кстати, смонтировать с теми опциями, что я написал в скобках?

немного некрасивый совет, но все же.
попробуйте на смонтированом диске сделать
ls | recode utf-8..windows-1251
или
ls | recode utf-8..cp866

возможно придется поставить recode.

Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.

немного некрасивый совет, но все же.
попробуйте на смонтированом диске сделать
ls | recode utf-8..windows-1251
или
ls | recode utf-8..cp866

возможно придется поставить recode.

Сейчас обязательно попробую

Интересная вещь (это тот же самый "Город 312"):

Тобишь 4 байта (. ) на букву, по видимому одиночным кодированием utf-8 из/в однобайтовую кодировку тут отделаться не получится ((((

немного некрасивый совет, но все же.
попробуйте на смонтированом диске сделать
ls | recode utf-8..windows-1251
или
ls | recode utf-8..cp866
Остаётся придумать, как автоматизировать процесс переименовывания файлов. ну, вообще для этого существует convmv, но я не знаю, можно ли ей сделать такую последовательность.
если не получится - пишите, набросаем скриптик. Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.

convmv заставить корректно переименовывать файлы не удалось, вообще, он не умеет делать больше одной перекодировки, а казалось бы эквивалентное разбиение на UTF-8 -> ISO-8859-1 и ISO-8859-1 -> UTF-8 не даёт ничего хорошего, видимо чего-то не понимаю. пришлось сочинять скрипты в меру своего знания shell. скрипт для переименовывания одного файла или каталога работает прекрасно, а вот как заставить его конвертировать их пачками придумать не получилось.

1.sh для перекодировки 1 файла или папки:

Причём есть одна проблема - нужно заэкранировать все пробелы в имени файла, чтобы оно не распадалось на несколько параметров.

Как поступить дальше - не знаю. Очевидно, что нужно организовать рекурсию по всем подкаталогам, причём начиная с наиболее "дальних". find с параметром -exec в чистом виде не подошел - во первых он добавляет какие-то странные знаки в конец некоторых имён подкаталогов, во вторых он не хочет выдавать результаты "в обратном порядке". В голову пришёл вот такой вариант организации цикла:

Но и тут не всё гладко - for разбивает строку на составляющие и по \n и по пробелам, т.е. если в имени файла или папки есть пробел - оно делится пополам.

Команда tar создает файлы tar путем преобразования группы файлов в архив. Он также может извлекать архивы tar, отображать список файлов, включенных в архив, добавлять дополнительные файлы к существующему архиву и выполнять различные другие операции.

Изначально Tar был разработан для создания архивов для хранения файлов на магнитной ленте, поэтому получил свое название « T ape AR chive».

В этой статье показано, как использовать команду tar для извлечения, перечисления и создания архивов tar на практических примерах и подробных объяснениях наиболее распространенных параметров tar.

Синтаксис команды tar

Существует две версии tar, BSD tar и GNU tar , с некоторыми функциональными отличиями. В большинстве систем Linux по умолчанию предустановлен GNU tar.

Общий синтаксис команды tar следующий:

Создание архива Tar

Tar поддерживает широкий спектр программ сжатия, таких как gzip , bzip2 , lzip , lzma , lzop , xz и compress . При создании сжатых tar-архивов принято добавлять суффикс компрессора к имени файла архива. Например, если архив был сжат с помощью gzip , он должен называться archive.tar.gz.

Чтобы создать tar-архив, используйте параметр -c за которым следует -f и имя архива.

Например, чтобы создать архив с именем archive.tar из файлов с именами file1 , file2 , file3 , вы должны выполнить следующую команду:

Вот эквивалентная команда, использующая параметры полной формы:

Вы можете создавать архивы из содержимого одного или нескольких каталогов или файлов. По умолчанию каталоги архивируются рекурсивно, если не указана опция --no-recursion .

В следующем примере будет создан архив с именем user_backup.tar из user_backup.tar /home/user :

Используйте параметр -v если вы хотите увидеть файлы, которые обрабатываются.

Создание архива Tar Gz

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

Создание архива Tar Bz2

Чтобы сжать архив с помощью алгоритма bzip2 , вызовите tar с параметром -j . Следующая команда создает архив tar.bz2 из указанных файлов:

Листинг архивов Tar

При использовании с параметром --list ( -t ) команда tar выводит список содержимого архива tar без извлечения его.

Команда ниже отобразит содержимое файла archive.tar :

Чтобы получить дополнительную информацию, такую как владелец файла, размер файла, временная метка, используйте параметр --verbose ( -v ):

Извлечение архива Tar

Большинство архивных файлов в Linux заархивированы и сжаты с использованием формата tar или tar.gz. Важно знать, как извлекать эти файлы из командной строки.

Чтобы извлечь tar-архив, используйте параметр --extract ( -x ), за которым следует имя архива:

Также часто добавляют параметр -v для вывода имен извлекаемых файлов.

Извлечение архива Tar в другой каталог

По умолчанию tar извлекает содержимое архива в текущий рабочий каталог . Используйте --directory ( -C ) для извлечения архивных файлов в определенный каталог:

Например, чтобы извлечь содержимое архива в каталог /opt/files , вы можете использовать:

Извлечение архивов Tar Gz и Tar Bz2

При извлечении сжатых архивов, таких как tar.gz или tar.bz2 , вам не нужно указывать параметр распаковки. Команда такая же, как при распаковке tar архива:

Извлечение определенных файлов из архива Tar

Иногда вместо извлечения всего архива вам может потребоваться извлечь из него только несколько файлов.

Чтобы извлечь определенный файл (ы) из архива tar, добавьте разделенный пробелами список имен файлов, которые нужно извлечь, после имени архива:

При извлечении файлов вы должны --list их точные имена, включая путь, как напечатано с помощью --list ( -t ).

Извлечение одного или нескольких каталогов из архива аналогично извлечению файлов:

Извлечение файлов из архива Tar с использованием подстановочного знака

Чтобы извлечь файлы из архива на основе шаблона с подстановочными знаками, используйте переключатель --wildcards и --wildcards шаблон в кавычки, чтобы оболочка не интерпретировала его.

Например, чтобы извлечь файлы, имена которых заканчиваются на .js (файлы Javascript), вы можете использовать:

Добавление файлов в существующий архив Tar

Чтобы добавить файлы или каталоги в существующий tar-архив, используйте --append ( -r ).

Например, чтобы добавить файл с именем newfile в archive.tar, вы должны запустить:

Удаление файлов из архива Tar

Используйте операцию --delete для удаления файлов из архива.

В следующем примере показано, как удалить файл file1 из archive.tar:

Выводы

Чаще всего команда tar используется для создания и извлечения архива tar. Чтобы извлечь архив, используйте команду tar -xf за которой следует имя архива, а для создания нового используйте tar -czf за которым следует имя архива, а также файлы и каталоги, которые вы хотите добавить в архив.

Для получения дополнительной информации о команде tar обратитесь к странице документации Gnu tar .

В качестве инструмента для архивации данных в Linux используются разные программы. Например архиватор Zip Linux, приобретший большую популярность из-за совместимости с ОС Windows. Но это не стандартная для системы программа. Поэтому хотелось бы осветить команду tar Linux — встроенный архиватор.

Изначально tar использовалась для архивации данных на ленточных устройствах. Но также она позволяет записывать вывод в файл, и этот способ стал широко применяться в Linux по своему назначению. Здесь будут рассмотрены самые распространенные варианты работы с этой утилитой.

Синтаксис команды tar

Синтаксис команд для создания и распаковки архива практически не отличается (в том числе с утилитами сжатия bzip2 или gzip). Так, чтобы создать новый архив, в терминале используется следующая конструкция:

tar опции архив.tar файлы_для_архивации

Для его распаковки:

tar опции архив.tar

Функции, которые может выполнять команда:

Функция Длинный
формат
Описание
-A --concatenate Присоединить существующий архив к другому
-c --create Создать новый архив
-d --diff
--delete
Проверить различие между архивами
Удалить из существующего архива файл
-r --append Присоединить файлы к концу архива
-t --list Сформировать список содержимого архива
-u --update Обновить архив более новыми файлами с тем же именем
-x --extract Извлечь файлы из архива

При определении каждой функции используются параметры, которые регламентируют выполнение конкретных операций с tar-архивом:

А дальше рассмотрим примеры того, как может применяться команда tar Linux.

Как пользоваться tar

1. Создание архива tar

С помощью следующей команды создается архив archive.tar с подробным выводом информации, включающий файлы file1, file2 и file3:

tar --totals --create --verbose --file archive.tar file1 file2 file3

Но длинные опции и параметры можно заменить (при возможности) однобуквенными значениями:

tar --totals -cvf archive.tar file1 file2 file3

Создание архива tar

2. Просмотр содержимого архива

Следующая команда выводит содержимое архива, не распаковывая его:

tar -tf archive.tar

Отображение архива

3. Распаковка архива tar Linux

Распаковывает архив test.tar с выводом файлов на экран:

tar -xvf archive.tar

Распаковка архива

Чтобы сделать это в другой каталог, можно воспользоваться параметром -C:

tar -C "Test" -xvf archive.tar

Распаковка в другой каталог

3. Работа со сжатыми архивами

Следует помнить, что tar только создаёт архив, но не сжимает. Для этого используются упомянутые компрессорные утилиты bzip2 и gzip. Файлы, сжатые с их помощью, имеют соответствующие расширения .tar.bz2 и .tar.gz. Чтобы создать сжатый архив с помощью bzip2, введите:

tar -cjvf archive.tar.bz2 file1 file2 file3

Сжатие в bz2

Синтаксис для gzip отличается одной буквой в параметрах, и меняется окончание расширения архива:

tar -czvf archive.tar.gz file1 file2 file3

Сжатие в gz

При распаковке tar-архивов с таким расширением следует указывать соответствующую опцию:

tar -C "Test" -xjvf arhive.tar.bz2

Распаковка bz2

tar -xzvf archive.tar.gz

Распаковка gz

На заметку: архиватор tar — одна из немногих утилит в GNU/Linux, в которой перед использованием однобуквенных параметров, стоящих вместе, можно не ставить знак дефиса.

Выводы

В этой статье была рассмотрена команда tar Linux, которая используется для архивации файлов и поставляется по умолчанию во всех дистрибутивах. В её возможности входит создание и распаковка архива файлов без их сжатия. Для сжатия утилита применяется в связке с популярными компрессорами bzip2 и gzip.

Favorite

Добавить в избранное

Главное меню » Операционная система Linux » Создание и извлечение архивов с помощью команды Tar в Linux

Как установить tar.gz в CentOS

В этой статье мы покажем вам, как использовать утилиту Tar для извлечения и создания tar-архивов с помощью практических примеров и подробных объяснений наиболее распространенных параметров Tar.

Что такое Tar?

Команда tar используется для создания архивов tar, путем преобразования группы файлов в архив. Она также имеет возможность извлекать архивы tar, отображать список файлов, включенных в архив, добавлять дополнительные файлы в существующий архив, а также различные другие виды операций.

Tar поддерживает широкий спектр программ сжатия , таких как gzip , bzip2 , lzip , lzma , lzop , xz и compress . При создании сжатых tar-архивов принято считать добавление суффикса компрессора к имени файла архива. Например, если архив был сжат с помощью gzip, он должен быть назван archive.tar.gz.

Tar был первоначально разработан для создания архивов при хранения файлов на магнитной ленте, поэтому он имеет свое название « T ape AR chive».

Существуют две версии tar, BSD tar и GNU tar с некоторыми функциональными отличиями. Большинство систем Linux поставляются с предустановленной GNU tar по умолчанию. Если у вас не установлен tar, рекомендуем сначало установить его следую нашей статьи как установить tar.gz в CentOS.

Синтаксис командной строки

Прежде чем перейти к использованию команды tar, давайте начнем с рассмотрения базового синтаксиса.

Создание Tar Archive

Используйте оператор -c для создания архива tar. Например, чтобы создать архивный файл с именем archive.tar из файлов с именем file1 , file2 , file3 выполните следующую команду:

Вот эквивалентная команда, использующая параметры длинной формы:

В следующем примере будет создан архив backup.tar из каталога /home/username :

Вы можете создавать архивы из содержимого одного или нескольких каталогов или файлов. По умолчанию каталоги архивируются рекурсивно, если не указан параметр --no-recursion . Используйте параметр -v , если хотите просмотреть файлы, которые обрабатываются.

Создание архива Tar Gz

Чтобы создать архив tar.gz из заданных файлов, вы можете использовать следующую команду:

Опция -z сообщает tar сжать архив, используя алгоритм gzip .

Создание архива Tar Bz2

Другим популярным алгоритмом сжатия tar-файлов является bzip2. При сжатии архивов tar с bzip2 имя архива должно заканчиваться либо tar.bz2 либо tbz .

Когда указана опция -j , tar будет использовать алгоритм bzip2 сжатия архива.

Следующая команда создаст архив tar.bz2 из заданных файлов:

Листинг архива Tar

Чтобы перечислить содержимое tar-архива, используйте операцию --list ( -t ).

Если вы укажете содержимое архива с помощью параметра --verbose ( -v ), tar будет печатать больше информации, например, владельца, размера файла, метки времени и т.д.:

Извлечение архива Tar

Для извлечения tar-архива используйте оператор --extract ( -x ) и укажите имя файла архива:

Также обычно добавляется опция -v для печати имен извлеченных файлов.

По умолчанию tar будет извлекать содержимое архива в текущем рабочем каталоге. Используйте --directory ( -C ) для извлечения архивных файлов в определенном каталоге:

Например, чтобы извлечь содержимое архива в каталог /opt/files , вы можете использовать:

Извлечение архивов Tar Gz и Tar Bz2

При извлечении сжатых архивов, например, tar.gz или tar.bz2 вам не нужно указывать параметр декомпрессии. Команда такая же, как при извлечении архива tar :

Извлечение определенных файлов из tar-архива

Чтобы извлечь определенные файлы из архива tar, добавьте список имен файлов, разделенных пробелами, которые будут извлечены после имени архива:

При извлечении файлов вы должны указать свои точные имена, включая путь, как напечатано --list ( -t ).

Извлечение одной или нескольких каталогов из архива аналогично извлечению файлов:

Извлечение файлов из архива Tar с помощью подстановочного знака

Чтобы извлечь файлы из архива на основе шаблона подстановочных знаков, используйте переключатель --wildcards и укажите шаблон, чтобы предотвратить интерпретацию оболочки.

Например, чтобы извлечь файлы, имена которых заканчиваются на .js (файлы Javascript), вы можете использовать:

Добавление файлов в существующий архив

Чтобы добавить файлы или каталоги в существующий архив tar, используйте операцию --append ( -r ).

Например, чтобы добавить файл с именем newfile в archive.tar, вы можете использовать:

Удаление файлов из tar-архива

Используйте операцию --delete для удаления файлов из архива.

Например, чтобы удалить файл с именем file1 из archive.tar, вы можете использовать:

Вывод

К настоящему времени у вас должно быть хорошее понимание того, как создавать и извлекать архивы tar.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: