Как же консольной программой 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