Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Модное кулинарное Шоу! Игра в ресторан, приготовление блюд, декорирование домов и преображение внешности героев.

Кулинарные истории

Казуальные, Новеллы, Симуляторы

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
34
balaev84av
GNU/Linux

Архивация и компрессия файлов. Часть 1⁠⁠

7 лет назад

(НЕ является руководством по резервному копированию. Во второй части используется тот же тестовый каталог с теми же файлами.)


"АрхИв" (archive, "Акайв") в компьютерном смысле - набор файлов, подготовленный для длительного хранения. Предполагается, что файлами из архива какое-то время не будут пользоваться - подобно тому, как лишние вещи складывают в коробку и убирают в кладовку или ещё куда-то.


Цели архивАции файлов: иметь запасные копии; переслать несколько файлов/каталогов одной операцией; если нужно/возможно - сэкономить/высвободить место на диске. Для экономии места лишние файлы удаляют или "сжимают" (синонимы: "упаковывают", "подвергают компрессии").


Форматы архивов по сути - контейнеры: содержат "слепок" (snapshot) или "образ" (image) некоторой части дерева файловой системы или всего дерева (или даже больше). Важно, чтобы из архива можно было "разархивИровать" (извлечь) не только содержимое файлов, но и их имена/пути, даты, права и остальные нужные метаданные.


Традиционные и/или стандартные сейчас либо ранее (в POSIX) программы-архиваторы: cpio, pax, tar. Менее известные: dar, star.


Наиболее популярна - tar. Имя означает "tape archiver". Слово "tape" означает здесь - "[магнитная] лента". Устройства хранения на кассетах с магнитными лентами есть и сейчас, в основном в крупных организациях. Такое устройство называют "стрИмером" (streamer), а кассету - "кАртриджем" (cartridge). В отличие от магнитного диска, для операций чтения/записи ленту нужно перематывать; и создавать на ленте полноценную файловую систему (форматировать) обычно нецелесообразно. Поэтому здесь не достаточно простого копирования, а нужен формат-контейнер, файл которого пишется в символьный файл-устройство стримера сплошным потоком, хотя и условно разделён на блоки.


Примеры действий с архивами tar:


# Создать тестовый каталог с содержимым.

$ mkdir -p works/{today,old}


# Файл из нулей.

$ fallocate -l 100KiB works/old/file1.000


# Файл из случайно сгенерированных байтов.

$ dd if=/dev/urandom bs=1k count=100 of=works/old/file2.rnd


# Текстовый файл. Аргумент iflag=fullblock нужен,

# чтобы dd дождалась достаточного объёма данных от col,

# не завершаясь раньше этого.

$ man bash | col -b \

| dd bs=1k count=100 iflag=fullblock \

of=works/today/file3.txt


# Вот итоговый вид поддерева works от программы tree.

# (Она не стандартная, устанавливают отдельно.)

$ tree -F works/

works/

├── old/

│***├── file1.000

│***└── file2.rnd

└── today/

****└── file3.txt


(Редактор постов, как обычно, съел несколько пробелов, поэтому вместо них - звёздочки. Должно быть, разработчик редактора - любитель Пакмана.)


Предполагается заархивировать старые файлы, т. е. в old/.


Опции:

-c - создать архив;

-v - выводить список обрабатываемых файлов;

-f - архив не на ленте, а в указанном файле.


Всё остальное - архивируемые файлы/каталоги; для архивации поддерева будет достаточным указать только родительский каталог.


# Кавычки - просто выделение того, что именно идёт в архив.

$ cd works

$ tar -c -v -f archive.tar "old"

old/

old/file1.000

old/file2.rnd


# Посмотреть свойства архива:

# Формат.

$ file archive.tar

archive.tar: POSIX tar archive (GNU)

# Содержимое (список файлов).

$ tar -t -f archive.tar

old/

old/file1.000

old/file2.rnd

# Размер.

$ du -k archive.tar

212 archive.tar


# Освободить место, занятое старыми файлами.

$ rm -rv old/*

удалён 'old/file1.000'

удалён 'old/file2.rnd'

$ tree -F .

.

├── archive.tar

├── old/

└── today/

****└── file3.txt


# Извлечь содержимое архива.

# Сам архив останется прежним.

# Однобуквенные опции можно набрать слитно с общим дефисом.

$ tar -xvf archive.tar

old/

old/file1.000

old/file2.rnd


Опция -x - извлечь (скопировать) файлы из архива. Буква x - от extract. Если нужны только некоторые файлы, укажите их пути точно в том виде, в каком они записаны в архиве. В командном выражении пути файлов, извлекаемых из архива, указывают там, где при создании архива были указаны файлы, идущие в архив (то есть в конце).


Можно попробовать указать шаблоны имён с символами * и ?, но дополнительно нужна опция --wildcards, например:


$ tar -xv --wildcards -f archive.tar '*file?.???'


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


Архив можно пополнить. Пополнение архивов бывает "добавлением" (append) или "обновлением" (update).


Если нужно добавить какие-то ещё файлы - опция -r вместо -c; и опять указать пути к файлам в конце командного выражения.


Если в том же каталоге появились новые файлы или поправлены старые, то это обновление (замена старых файлов на новые); вместо опции -c указать -u. Программа tar сама обнаружит и добавит в архив новые/исправленные файлы.


$ mv today/file3.txt old/

$ tar -uvf archive.tar "old"

old/file3.txt


$ tar -tf archive.tar

old/

old/file1.000

old/file2.rnd

old/file3.txt


Опция --delete - удалить файлы из архива (только если архив не на ленте):


# Всё равно этот файл состоял только из нулей.

# Здесь путь к файлу не выводится.

$ tar --delete -v -f archive.tar "old/file1.000"

$ tar -tf archive.tar

old/

old/file2.rnd

old/file3.txt


В архивах tar можно хранить несколько файлов с одинаковым путём. Выполняется повторными действиями добавления и обновления. В списке по -t очередь идёт снизу вверх, то есть сверху - архивированные последними. Опция --occurence=3 - выполнить действие над третьим по очереди добавления файлом из тех, что с одинаковым путём (нумерация начинается с единицы).


И ещё много разных опций, например:

-k - не извлекать файлы, если они уже есть в целевом каталоге;

--keep-newer-files - почти то же, но с уточнением, если уже имеющиеся в целевом каталоге файлы - более новые (по метаданным даты и времени), чем в архиве;

-p - метаданные о правах на файлы тоже восстанавливать из архива при извлечении;

--same-owner - восстанавливать имя владельца и группы;

-w - просить подтверждения на каждое действие.

Документация: man tar, info tar.


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


$ cd today

$ find . -depth -print0 | cpio --null -pvd ../old

../old/./file3.txt


Программа find часто служит генератором списка имён для архивации или иных массовых действий над файлами. Архиватор cpio всегда требует перенаправления: <, > или |. Опции -print0 и --null - для корректной обработки путей, содержащих кириллицу, пробелы и иные символы за пределами правила "8.3" и подобных ему ограничений.


Следите за тем, чтобы правильно строить пути (чтобы, например, не получилось в итоге works/old/today/file3.txt вместо works/old/file3.txt). Для начала стоит запустить только find.


Формат tar имеет проблемы с хранением специальных файлов, со скоростью поиска файла в архиве, с хранением некоторых метаданных. Если это критично, то следует применять архиватор dar.

Показать полностью
[моё] Архивация Для начинающих Linux Длиннопост Текст
4
12
FuriousDonut
FuriousDonut

Поархивировать не желаете?⁠⁠

8 лет назад

Произошла тут со мной с утра пораньше неведомая дичь.
Призывает меня бухгалтерия с просьбой о помощи. Причем помощь нужна важная и неотложная. Прихожу, спрашиваю, что нужно сделать, получаю ответ - вот этот вот файл, дескать, нужно скачать, заархивировать и обратно отправить, команда сверху. Стандартная просьба, всё ок, вот только файл в архиве уже. Чтобы вы понимали всю суть проблемности ситуации, уточню - все действия производились под бдительными взглядами шести глаз.
Далее диалог с сотрудницами, который напрочь сломал мой мозг:
- Так, надо просто обратно отправить этот файл? Он в архиве уже
- Нет, ты что, не понимаешь? Его надо заархивировать
*конечно понимаю. Меня хлебом не корми, дай поархивировать с утреца*
- Архив второй раз заархивировать?
*БОЛЬШЕ АРХИВАЦИИ БОГУ АРХИВАЦИИ*
- Нет, табличку

- Но она уже в архиве

- Ну нет, это не тот архив

- Надо переделать rar в zip?

- Что такое зип? Не надо переделывать, его нельзя трогать, просто заархивируй файлик, ничего менять нельзя

...

- Так, давайте еще раз. Нужно вынуть таблицу из этого архива и засунуть в другой?

- Ну ты что, серьезно не понимаешь? Ничего не трогай, просто ЗА-АР-ХИ-ВИ-РУЙ! Эй, ты что, то же самое им отправляешь? Нет, надо заархивировать! Нет, зачем ты новый архив создаешь? Не надо новый, надо этот!

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

Что это было? А хрен его знает.  

Показать полностью 2
[моё] Тыжпрограммист Архивация Дичь Логика
9
14
dededDY

Заархивировалась⁠⁠

8 лет назад
Заархивировалась

Шёл мимо, а тут вот, пришлось поделиться бутером.Фото на Leeco Cool 1 на ходу.

[моё] Собака Winrar Архивация
8
14
Goofergaus

Очень вместительная дискета 3.5⁠⁠

8 лет назад

Как-то в начале 2000-х, когда в семье только появился первый компьютер, пошел я к друзьям скинуть игру Need for Speed: Porsche на дискету объемом 1.44 мб. Пришел, вставили дискету, с рабочего стола скопировали ярлык, ничего сложного как оказалось, даже Unreal Tournament вместился. Ну, и пошел я радостный домой играть в новые игры. :)

Очень вместительная дискета  3.5
[моё] Дискета Наивность 2000 Ностальгия Архивация
16
75
DoctorZloy
DoctorZloy

Архивация⁠⁠

9 лет назад
Архивация
[моё] Архивация Фото Забавное
1
11
derzaiii
derzaiii

Копирование важных данных⁠⁠

9 лет назад

Некоторое время назад (точно не помню сколько) перешёл я от хранения паролей в файле МОИ_ПАРОЛИ.txt к использованию замечательной программы специально созданной для этого. Название не буду писать, дабы не сочли за рекламу. Пользовался я ею без всяких бед примерно год. Пока не настал день Ч.

В этот день файл со всеми сохраненными в нём паролями просто не захотел открываться.

Я долго пытался его реанимировать, но результатов это не дало. Для меня это было весомой потерей, так как я фрилансер и помимо своих паролей(соц.сети/сайты/банковские карты) в файле было куча паролей от сайтов клиентов. Частично пароли удалось восстановить - копия файла 3-х месячной давности была на айфоне, но повторять печальный опыт больше не хотелось. И я решил (хотя с самого начала нужно было так и сделать) делать бэкап важного файла.


Специального рода программы я откинул сразу - лишний процесс в автозапуске не нужен, копирование вручную - муторно. И тут я вспомнил что в далеком 2008 работая админом в ПФР я писал BAT файлы которые автоматизировали процесс снятия бэкапов с баз данных. Решил понастальгировать и сделать нечто подобное.


Не буду говорить что писал я по памяти - пришлось изрядно допрашивать Яшу и Гошу пока не нашёл то что мне нужно. В итоге получился файл который создавал архивированную копию нужных мне файлов+раскладывал всё по папкам с номером дня недели. Кроме этого, если он обнаруживал в данной папке ранее созданный архив, этот архив переименовывался с расширением *.bak (на всякий случай).


Довольный результатом я решил не останавливаться на достигнутом и добавил в архивацию все важные для меня файлы/папки (настройки рабочих программ, базу данных дом.бухгалтерии). В итоге получился файлик создававший копию наиболее важной инфы и размещавший её на гугл диске для пущей безопасности.

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

Результатом работы доволен: недавно пришлось из созданных копий восстановить базу дом.бухгалтерии. Рад буду если кому нибудь пригодится данный вариант решения задачи. Всем удачи и пусть ваши файлы будут в сохранности!

Показать полностью 2
[моё] Копия Архивация Батник Длиннопост
8
15
Paranoed

Сжатие⁠⁠

9 лет назад
Сжатие
[моё] Кот Архивация Картинка с текстом Интересное
4
2634
qassaq
qassaq

Задержанные.rar⁠⁠

9 лет назад
Задержанные.rar
Упаковка Арест Компактность Правонарушение Архивация Winrar
87
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии