it-swarm-ru.tech

Сжать папку с tar?

Я пытаюсь сжать папку (/var/www/) до ~/www_backups/$time.tar где $time текущая дата.

Вот что у меня есть:

cd /var/www && Sudo tar -czf ~/www_backups $time"

Я полностью потерян, и я был в этом часами. Не уверен, что если -czf верно. Я просто хочу скопировать весь контент в /var/www в $time.tar файл, и я хочу сохранить права доступа ко всем файлам. Может кто-нибудь мне помочь?

298
qwerty

Для tar и ​​gzip папки используется следующий синтаксис:

tar czf name_of_archive_file.tar.gz name_of_directory_to_tar

- не является обязательным. Если вы хотите tar текущий каталог, используйте . чтобы обозначить это.

Чтобы создать ваше имя файла, используйте утилиту date (посмотрите на его странице справочника доступные опции формата). Например:

cd /var/www && Sudo tar czf ~/www_backups/$(date +%Y%m%d-%H%M%S).tar.gz .

Это создало бы файл с именем что-то вроде 20120902-185558.tar.gz.

В Linux есть вероятность, что tar также поддерживает сжатие BZip2 с параметром j вместо z. И, возможно, другие. Проверьте страницу руководства в вашей локальной системе.

412
Mat

Примеры наиболее распространенных алгоритмов сжатия

Заголовок вопроса для этого просто "Сжать папку с tar?" Поскольку этот заголовок носит очень общий характер, но вопрос и ответ гораздо более конкретны, и из-за очень большого количества мнений, которые привлек этот вопрос, я чувствовал, что было бы полезно добавить обновленный список примеров обоих архивирование/сжатие и извлечение/распаковка, с различными обычно используемыми алгоритмами сжатия.

Они были протестированы с Ubuntu 18.04.4. Они очень просты для общего использования, но могут быть легко интегрированы в более конкретное содержание вопроса ОП, используя методы из принятого ответа и полезные комментарии выше.

Для более широкой аудитории следует отметить, что tar не будет добавлять необходимые расширения (например, .tar.gz) автоматически - пользователь должен явно добавить их, как показано в командах ниже:

# 1: tar (create uncompressed archive) all files and directories in the current working directory recursively into an uncompressed tarball
tar cvf filename.tar *

# 2: Untar (extract uncompressed archive) all files and directories in an uncompressed tarball recursively into the current working directory
tar xvf filename.tar

# 3: tar (create gzipped archive) all files and directories in the current working directory recursively into a tarball compressed with gzip
tar cvzf filename.tar.gz *

# 4: Untar (extract gzipped archive) all files and directories in a tarball compressed with gzip recursively into the current working directory
tar xvf filename.tar.gz # Note: same options as 2 above

# 5: tar (create bzip2'ed archive) all files and directories in the current working directory recursively into a tarball compressed with bzip2
tar cvjf filename.tar.bz2 * # Note: little 'j' in options

# 6: Untar (extract bzip2'ed archive) all files and directories in an tarball compressed with bzip2 recursively into the current working directory
tar xvf filename.tar.bz2 # Note: same options as 2 and 4 above

# 7: tar (create xz'ed archive) all files and directories in the current working directory recursively into a tarball compressed with xz
tar cvJf filename.tar.xz * # Note: capital 'J' in options

# 8: Untar (extract xz'ed archive) all files and directories in an tarball compressed with xz recursively into the current working directory
tar xvf filename.tar.xz # Note: same options as 2, 4, and 6 above

Смотрите tar man-страница (лучше всего использовать man tar на вашей конкретной машине) для получения дополнительной информации. Ниже я кратко излагаю параметры, использованные выше, непосредственно со страницы руководства:

-c, --создать
Создать новый архив

-x, --extract, --get
Извлекать файлы из архива

-v, --verbose
Подробный список обработанных файлов

-z, --gzip
Фильтровать архив через gzip

-j, --bzip2
Фильтровать архив через bzip2

-J, --xz
Отфильтровать архив через xz

-f, --file = АРХИВ
Использовать архивный файл или устройство АРХИВ

Не нужно добавлять - перед объединенными параметрами или = знак между параметром f и ​​именем файла.

Я получил все это из моей недавней article , которая будет расширена до гораздо более полной статьи, так как у меня есть время поработать над ней.

3
Xitalogy