OwnCloud, как предполагается, является self-hostable облачным решением, видит его список функций. Это действительно предлагает доступ WebDAV, но также и многое другое.
В то время как создание Вашего собственного решения с помощью WebDAV, вероятно, возможно (и его достаточность в большой степени зависит от требуемых функций, как @cjm отмеченный), я советовал бы, чтобы также взглянуть на git-annex
и особенно следите git-annex assistant
.
Нет.
В отличие от этого, 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
имеет многих, многих, МНОГО других опций и использования также; я сердечно рекомендую прочитать его страницу справочника когда-то.
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
Я написал эти 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 в случае успеха.
Если ваш Linux tar не поддерживает параметр -z
, вы можете использовать следующее:
tar -cvf - dir | gzip > dir.tar.gz
Я рекомендую использоватьpigz
(Параллельную реализацию GZip)
tar -cvf - dir | pigz -9 > /path/to/dir.tar.gz
Для полноты картины, если вы хотите заархивировать файл в фоновом режиме, используйте ответ @Shadur и добавьте &
в конце:
tar -zcvf archive.tar.gz directory/ &
tar -cv directory | gzip > archive.tar.gz
. Получающийся архив может затем быть извлечен сtar -zxvf
или дажеzcat file.tar.gz | tar -xv
. Причем точка - то, что tar абсолютно независим от gzip,tar
команда просто включает поддержку gzip удобства. – Patrick 02.10.2013, 03:16tar cvzf
долгое время. одна вещь отметить: если Вы используете Windows (7-zip
быть указанным) для разархивации a*.tar.gz
файл, требуется два раунда. Один для разархивации*.tar.gz
файл в a*.tar
файл, следующий, который разархивирует тот файл tar в исходное содержание. это увеличивает общее время разархивации, специально для больших файлов (например, журналы) – Jeff Xiao 05.10.2016, 15:11