Как программой tar архивировать список файлов

Как же консольной программой tar заархивировать (сжать) целый список определённых файлов? Чтобы передать программе tar список файлов для архивирования, используется ключ -T с указанием текстового файла, содержащего список имён файлов. Т.е. если вы хотите, чтобы tar архивировал все файлы, перечисленные в списке, вы должны использовать команду: tar -T filename.list.

Пример создания архива из файла-списка:

tar -cf filename.tgz -T filename.list

Вытяжка из tar справочника:

 -T, --files-from FILE
       get names to extract or create from FILE

Использование -T не позволит вам получать сообщение об ошибке: «Argument list too long», если вы пытаетесь сжать большое количество файлов.

Файл со списком имён файлов

Это обычный текстовый файл, содержащий список файлов/папок для добавления их в архив. Такой список легко создать, например, при помощи стандартной программы «ls»: ls > files.list.

Пример списка:

/backup/server/sites/default.domain
/root/documents/my_document.doc
./data
/home/user1/some

Если текстовый файл создавался или редактировался в ОС Windows, то не забудьте удалить из него (из файла-списка) все управляющие последовательности переноса каретки (\r), если таковые в нём имеются т.к. в Linux они не используются и вызовут проблемы и ошибки, наподобие такой: «tar: /home/user/.gconf\r: Cannot stat: No such file or directory».

Рекурсивное сжатие

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

Примеры

Команда архивирования списка файлов без рекурсии будет выглядеть так:

tar -pcf filename.tgz -T filename.list --no-recursion

Создание сжатого архива:

tar -czvf /root/archived_data/dump.tar.gz -T /root/list.txt

Links

  • http://askubuntu.com/questions/178809/compressing-a-list-of-files-by-using-tar