Я могу архивировать всю папку с помощью gzip?

OwnCloud, как предполагается, является self-hostable облачным решением, видит его список функций. Это действительно предлагает доступ WebDAV, но также и многое другое.

В то время как создание Вашего собственного решения с помощью WebDAV, вероятно, возможно (и его достаточность в большой степени зависит от требуемых функций, как @cjm отмеченный), я советовал бы, чтобы также взглянуть на git-annex и особенно следите git-annex assistant.

420
10.05.2015, 11:11
6 ответов

Нет.

В отличие от этого, zip, gzip функции как алгоритм сжатия только.

Из-за различных причин, некоторые из которых слушают назад эру ленточных накопителей, Unix использует названную программу tar заархивировать данные, которые могут затем быть сжаты с программой сжатия как gzip, bzip2, 7zip, и т.д.

Для "архивирования" каталога корректная команда была бы

tar -zcvf archive.tar.gz directory/ 

Это скажет tar кому:

  • сожмите его с помощью z (gzip) алгоритм

  • c (создают) архив из файлов в directory (tar является рекурсивным по умолчанию),

  • v (verbosely) список (на/dev/stderr, таким образом, это не влияет на переданные по каналу команды) все файлы это добавляет к архиву.

  • и сохраните вывод как f названный (файл) archive.tar.gz

tar предложения команды gzip поддержка (через -z флаг) просто для Вашего удобства. gzip команда/lib является абсолютно отдельной. Команда выше является эффективно тем же как

tar -cv directory | gzip > archive.tar.gz

Чтобы распаковать и распаковать архив в текущий каталог, Вы использовали бы

tar -zxvf archive.tar.gz

Та команда является эффективно тем же как

gunzip < archive.tar.gz | tar -xv

tar имеет многих, многих, МНОГО других опций и использования также; я сердечно рекомендую прочитать его страницу справочника когда-то.

682
27.01.2020, 19:28
  • 1
    Только для создания вещей еще более явными это точно equivilant к tar -cv directory | gzip > archive.tar.gz. Получающийся архив может затем быть извлечен с tar -zxvf или даже zcat file.tar.gz | tar -xv. Причем точка - то, что tar абсолютно независим от gzip, tar команда просто включает поддержку gzip удобства. –  Patrick 02.10.2013, 03:16
  • 2
    я использовал tar cvzf долгое время. одна вещь отметить: если Вы используете Windows (7-zip быть указанным) для разархивации a *.tar.gz файл, требуется два раунда. Один для разархивации *.tar.gz файл в a *.tar файл, следующий, который разархивирует тот файл tar в исходное содержание. это увеличивает общее время разархивации, специально для больших файлов (например, журналы) –  Jeff Xiao 05.10.2016, 15:11
  • 3
    Именование архива влияют на что-либо мудрое машиной? Я знаю, что было бы хорошо позволить людям знать, что алгоритм первоначально раньше архивировал его (следовательно .gz), но кроме этого делает это, на самом деле имеют значение, как Вы называете архив? –  hello_there_andy 09.02.2017, 17:58
  • 4
    @hello_there_andy Это не имеет никакого значения к большей части unixes, но окон (и умное заполнение клавишей Tab в Linux) будет делать предположения на основе расширения файла. –  Shadur 09.02.2017, 18:00
  • 5
    @vadimkotov, Это могло бы быть тем, что Вы ищете: superuser.com/questions/168749 / … –  Shadur 19.03.2018, 15:56

gzip команда рекурсивно не сожмет каталог в единственный zip-файл при использовании -r переключатель. Скорее это обойдет ту структуру каталогов и архивирует каждый файл, который это находит в отдельный файл.

Пример

прежде

$ tree dir1/
dir1/
|-- dir11
|   |-- file11
|   |-- file12
|   `-- file13
|-- file1
|-- file2
`-- file3

теперь работайте gzip команда

$ gzip -r dir1

после

$ tree dir1/
dir1/
|-- dir11
|   |-- file11.gz
|   |-- file12.gz
|   `-- file13.gz
|-- file1.gz
|-- file2.gz
`-- file3.gz

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

$ tar zcvf dir1.tar.gz dir1/

Пример

$ tar zcvf dir1.tar.gz dir1/
dir1/
dir1/file1
dir1/file2
dir1/dir11/
dir1/dir11/file11.gz
dir1/dir11/file12.gz
dir1/dir11/file13.gz
dir1/file3

Который приводит к следующему единственному файлу:

$ ls -l | grep tar
-rw-rw-r-- 1 saml saml  271 Oct  1 08:07 dir1.tar.gz

Можно подтвердить его содержание:

$ tar ztvf dir1.tar.gz 
drwxrwxr-x saml/saml         0 2013-10-01 08:05 dir1/
-rw-rw-r-- saml/saml         0 2013-10-01 07:45 dir1/file1
-rw-rw-r-- saml/saml         0 2013-10-01 07:45 dir1/file2
drwxrwxr-x saml/saml         0 2013-10-01 08:04 dir1/dir11/
-rw-rw-r-- saml/saml        27 2013-10-01 07:45 dir1/dir11/file11.gz
-rw-rw-r-- saml/saml        27 2013-10-01 07:45 dir1/dir11/file12.gz
-rw-rw-r-- saml/saml        27 2013-10-01 07:45 dir1/dir11/file13.gz
-rw-rw-r-- saml/saml         0 2013-10-01 07:45 dir1/file3
47
27.01.2020, 19:28

Я написал эти 2 команды:

gzipdir :

#!/bin/bash
if [[ -d $1 ]]; then
    cd "$1"
    cd ..
    base=$(basename "$1")
    tar -zcvf "$base.tgz" "$base"
    if [[ $? == 0 && -f "$base.tgz" ]]; then
        rm -rf "$base"
    fi
else
    echo "Usage: $0 DIRECTORY";
fi

ungzipdir :

#!/bin/bash
if [[ -f $1 ]]; then
    base=${1%%.*}
    file=$(basename "$1");
    dir=$(basename "$base");
    if [[ ! -d $base ]]; then
        mkdir "$base"
        cd "$base"
        cd ..
        tar -xvf "$file"
        if [[ $? == 0 && -d "$dir" ]]; then
            rm -f "$file"
        fi
    else
        echo "Directory $base already exists. Nothing done."
    fi
else
    echo "Usage: $0 file.tgz";
fi

(!!!) Пожалуйста, проверьте перед использованием (так как есть 'rm -f', который потенциально может удалить важные данные, если используется необычным образом).

Как использовать:

cd / home /; gzipdir MyDirectory или gzipdir / home / MyDirectory

Создает /home/MyDirectory.tgz и удаляет MyDirectory в случае успеха (!!!).

ungzipdir /home/MyDirectory.tgz

Создает / home / MyDirectory и удаляет /home/MyDirectory.tgz в случае успеха.

5
27.01.2020, 19:28

Если ваш Linux tar не поддерживает параметр -z , вы можете использовать следующее:

tar -cvf - dir | gzip > dir.tar.gz
2
27.01.2020, 19:28

Я рекомендую использоватьpigz(Параллельную реализацию GZip)

tar -cvf - dir | pigz -9 > /path/to/dir.tar.gz

3
27.01.2020, 19:28

Для полноты картины, если вы хотите заархивировать файл в фоновом режиме, используйте ответ @Shadur и добавьте &в конце:

tar -zcvf archive.tar.gz directory/ &
2
27.01.2020, 19:28

Теги

Похожие вопросы