docs(readme): align multilingual readmes
This commit is contained in:
1 parent
33aae43b40
commit
5774eddbbb
10 files changed
+1048
-1038
No files matched your search
+105
-104
@@ -13,24 +13,25 @@
|
||||
|
||||
[🇺🇸 English](./README.md) | [🇨🇳 汉语](./README.zh.md) | [🇪🇸 español](./README.es.md) | [🇯🇵 日本語](./README.ja.md) | [🇦🇪 العربية](./README.ar.md) | **🇷🇺 русский** | [🇩🇪 Deutsch](./README.de.md) | [🇫🇷 français](./README.fr.md) | [🇰🇷 한국어](./README.ko.md) | [🇧🇷 português](./README.pt.md)
|
||||
|
||||
**tzst** — это библиотека Python нового поколения, разработанная для современного управления архивами, использующая передовое сжатие Zstandard для обеспечения превосходной производительности, безопасности и надёжности. Созданная исключительно для Python 3.12+, это корпоративное решение объединяет атомарные операции, эффективность потоковой передачи и тщательно разработанный API для переосмысления того, как разработчики работают с архивами `.tzst`/`.tar.zst` в производственных средах. 🚀
|
||||
**tzst** — это библиотека и CLI для Python 3.12+, предназначенные для создания, извлечения, просмотра и проверки архивов `.tzst` и `.tar.zst`. Она объединяет совместимость с tar, сжатие Zstandard, потоковый режим, атомарную запись и безопасное извлечение по умолчанию в компактном интерфейсе для production.
|
||||
|
||||
Опубликована статья с углублённым техническим анализом: **[Deep Dive into tzst: A Modern Python Archiving Library Based on Zstandard](https://blog.xi-xu.me/2025/11/01/deep-dive-into-tzst-en.html)**.
|
||||
> [!NOTE]
|
||||
> Подробная техническая статья: **[Deep Dive into tzst: A Modern Python Archiving Library Based on Zstandard](https://blog.xi-xu.me/2025/11/01/deep-dive-into-tzst-en.html)**.
|
||||
|
||||
## ✨ Особенности
|
||||
## Особенности
|
||||
|
||||
- **🗜️ Высокое сжатие**: Сжатие Zstandard для отличных коэффициентов сжатия и скорости
|
||||
- **📁 Совместимость с Tar**: Создаёт стандартные tar-архивы, сжатые с помощью Zstandard
|
||||
- **💻 Интерфейс командной строки**: Интуитивный CLI с поддержкой потоковой передачи и всесторонними опциями
|
||||
- **🐍 Python API**: Чистый, pythonic API для программного использования
|
||||
- **🌍 Кроссплатформенность**: Работает на Windows, macOS и Linux
|
||||
- **📂 Множественные расширения**: Поддерживает как `.tzst`, так и `.tar.zst` расширения
|
||||
- **💾 Эффективность памяти**: Режим потоковой передачи для обработки больших архивов с минимальным использованием памяти
|
||||
- **⚡ Атомарные операции**: Безопасные файловые операции с автоматической очисткой при прерывании
|
||||
- **🔒 Безопасность по умолчанию**: Использует фильтр 'data' для максимальной безопасности при извлечении
|
||||
- **🚨 Улучшенная обработка ошибок**: Чёткие сообщения об ошибках с полезными альтернативами
|
||||
- **Высокое сжатие**: Сжатие Zstandard для отличных коэффициентов сжатия и скорости
|
||||
- **Совместимость с Tar**: Создаёт стандартные tar-архивы, сжатые с помощью Zstandard
|
||||
- **Интерфейс командной строки**: Интуитивный CLI с поддержкой потоковой передачи и всесторонними опциями
|
||||
- **Python API**: Чистый, pythonic API для программного использования
|
||||
- **Кроссплатформенность**: Работает на Windows, macOS и Linux
|
||||
- **Множественные расширения**: Поддерживает как `.tzst`, так и `.tar.zst` расширения
|
||||
- **Эффективность памяти**: Режим потоковой передачи для обработки больших архивов с минимальным использованием памяти
|
||||
- **Атомарные операции**: Безопасные файловые операции с автоматической очисткой при прерывании
|
||||
- **Безопасность по умолчанию**: Использует фильтр 'data' для максимальной безопасности при извлечении
|
||||
- **Улучшенная обработка ошибок**: Чёткие сообщения об ошибках с полезными альтернативами
|
||||
|
||||
## 📥 Установка
|
||||
## Установка
|
||||
|
||||
### Из релизов GitHub
|
||||
|
||||
@@ -40,30 +41,30 @@
|
||||
|
||||
| Платформа | Архитектура | Файл |
|
||||
|----------|-------------|------|
|
||||
| **🐧 Linux** | x86_64 | `tzst-{версия}-linux-amd64.zip` |
|
||||
| **🐧 Linux** | ARM64 | `tzst-{версия}-linux-arm64.zip` |
|
||||
| **🪟 Windows** | x64 | `tzst-{версия}-windows-amd64.zip` |
|
||||
| **🪟 Windows** | ARM64 | `tzst-{версия}-windows-arm64.zip` |
|
||||
| **🍎 macOS** | Intel | `tzst-{версия}-darwin-amd64.zip` |
|
||||
| **🍎 macOS** | Apple Silicon | `tzst-{версия}-darwin-arm64.zip` |
|
||||
| **Linux** | x86_64 | `tzst-{версия}-linux-amd64.zip` |
|
||||
| **Linux** | ARM64 | `tzst-{версия}-linux-arm64.zip` |
|
||||
| **Windows** | x64 | `tzst-{версия}-windows-amd64.zip` |
|
||||
| **Windows** | ARM64 | `tzst-{версия}-windows-arm64.zip` |
|
||||
| **macOS** | Intel | `tzst-{версия}-darwin-amd64.zip` |
|
||||
| **macOS** | Apple Silicon | `tzst-{версия}-darwin-arm64.zip` |
|
||||
|
||||
#### 🛠️ Шаги установки
|
||||
#### Шаги установки
|
||||
|
||||
1. **📥 Скачайте** подходящий архив для вашей платформы со [страницы последних релизов](https://github.com/xixu-me/tzst/releases/latest)
|
||||
2. **📦 Извлеките** архив, чтобы получить исполняемый файл `tzst` (или `tzst.exe` на Windows)
|
||||
3. **📂 Переместите** исполняемый файл в директорию в вашем PATH:
|
||||
- **🐧 Linux/macOS**: `sudo mv tzst /usr/local/bin/`
|
||||
- **🪟 Windows**: Добавьте директорию, содержащую `tzst.exe`, в переменную окружения PATH
|
||||
4. **✅ Проверьте** установку: `tzst --help`
|
||||
1. **Скачайте** подходящий архив для вашей платформы со [страницы последних релизов](https://github.com/xixu-me/tzst/releases/latest)
|
||||
2. **Извлеките** архив, чтобы получить исполняемый файл `tzst` (или `tzst.exe` на Windows)
|
||||
3. **Переместите** исполняемый файл в директорию в вашем PATH:
|
||||
- **Linux/macOS**: `sudo mv tzst /usr/local/bin/`
|
||||
- **Windows**: Добавьте директорию, содержащую `tzst.exe`, в переменную окружения PATH
|
||||
4. **Проверьте** установку: `tzst --help`
|
||||
|
||||
#### 🎯 Преимущества бинарной установки
|
||||
#### Преимущества бинарной установки
|
||||
|
||||
- ✅ **Python не требуется** - Автономный исполняемый файл
|
||||
- ✅ **Быстрый запуск** - Нет накладных расходов интерпретатора Python
|
||||
- ✅ **Лёгкое развёртывание** - Распространение одним файлом
|
||||
- ✅ **Последовательное поведение** - Встроенные зависимости
|
||||
- **Python не требуется** - Автономный исполняемый файл
|
||||
- **Быстрый запуск** - Нет накладных расходов интерпретатора Python
|
||||
- **Лёгкое развёртывание** - Распространение одним файлом
|
||||
- **Последовательное поведение** - Встроенные зависимости
|
||||
|
||||
### 📦 Из PyPI
|
||||
### Из PyPI
|
||||
|
||||
Используя pip:
|
||||
|
||||
@@ -77,7 +78,7 @@ pip install tzst
|
||||
uv tool install tzst
|
||||
```
|
||||
|
||||
### 🔧 Из исходного кода
|
||||
### Из исходного кода
|
||||
|
||||
```bash
|
||||
git clone https://github.com/xixu-me/tzst.git
|
||||
@@ -85,7 +86,7 @@ cd tzst
|
||||
pip install .
|
||||
```
|
||||
|
||||
### 🚀 Установка для разработки
|
||||
### Установка для разработки
|
||||
|
||||
Этот проект использует современные стандарты упаковки Python:
|
||||
|
||||
@@ -95,25 +96,25 @@ cd tzst
|
||||
pip install -e .[dev]
|
||||
```
|
||||
|
||||
## 🚀 Быстрый старт
|
||||
## Быстрый старт
|
||||
|
||||
### 💻 Использование командной строки
|
||||
### Использование командной строки
|
||||
|
||||
```bash
|
||||
# 📁 Создать архив
|
||||
# Создать архив
|
||||
tzst a archive.tzst file1.txt file2.txt directory/
|
||||
|
||||
# 📤 Извлечь архив
|
||||
# Извлечь архив
|
||||
tzst x archive.tzst
|
||||
|
||||
# 📋 Список содержимого архива
|
||||
# Список содержимого архива
|
||||
tzst l archive.tzst
|
||||
|
||||
# 🧪 Проверить целостность архива
|
||||
# Проверить целостность архива
|
||||
tzst t archive.tzst
|
||||
```
|
||||
|
||||
### 🐍 Использование Python API
|
||||
### Использование Python API
|
||||
|
||||
```python
|
||||
from tzst import create_archive, extract_archive, list_archive
|
||||
@@ -130,11 +131,11 @@ for item in contents:
|
||||
print(f"{item['name']}: {item['size']} bytes")
|
||||
```
|
||||
|
||||
## 💻 Интерфейс командной строки
|
||||
## Интерфейс командной строки
|
||||
|
||||
### 📁 Операции с архивами
|
||||
### Операции с архивами
|
||||
|
||||
#### ➕ Создать архив
|
||||
#### Создать архив
|
||||
|
||||
```bash
|
||||
# Базовое использование
|
||||
@@ -148,7 +149,7 @@ tzst add archive.tzst files/
|
||||
tzst create archive.tzst files/
|
||||
```
|
||||
|
||||
#### 📤 Извлечь архив
|
||||
#### Извлечь архив
|
||||
|
||||
```bash
|
||||
# Извлечь с полной структурой директорий
|
||||
@@ -167,7 +168,7 @@ tzst e archive.tzst -o output/
|
||||
tzst x archive.tzst --streaming -o output/
|
||||
```
|
||||
|
||||
#### 📋 Список содержимого
|
||||
#### Список содержимого
|
||||
|
||||
```bash
|
||||
# Простой список
|
||||
@@ -180,7 +181,7 @@ tzst l archive.tzst -v
|
||||
tzst l archive.tzst --streaming -v
|
||||
```
|
||||
|
||||
#### 🧪 Проверка целостности
|
||||
#### Проверка целостности
|
||||
|
||||
```bash
|
||||
# Проверить целостность архива
|
||||
@@ -190,7 +191,7 @@ tzst t archive.tzst
|
||||
tzst t archive.tzst --streaming
|
||||
```
|
||||
|
||||
### 📊 Справочник команд
|
||||
### Справочник команд
|
||||
|
||||
| Команда | Псевдонимы | Описание | Поддержка потоковой передачи |
|
||||
|---------|---------|-------------|-------------------|
|
||||
@@ -200,7 +201,7 @@ tzst t archive.tzst --streaming
|
||||
| `l` | `list` | Список содержимого архива | ✓ `--streaming` |
|
||||
| `t` | `test` | Проверить целостность архива | ✓ `--streaming` |
|
||||
|
||||
### ⚙️ Опции CLI
|
||||
### Опции CLI
|
||||
|
||||
- `-v, --verbose`: Включить подробный вывод
|
||||
- `-o, --output DIR`: Указать выходную директорию (команды извлечения)
|
||||
@@ -209,7 +210,7 @@ tzst t archive.tzst --streaming
|
||||
- `--filter FILTER`: Фильтр безопасности для извлечения (data/tar/fully_trusted)
|
||||
- `--no-atomic`: Отключить атомарные файловые операции (не рекомендуется)
|
||||
|
||||
### 🔒 Фильтры безопасности
|
||||
### Фильтры безопасности
|
||||
|
||||
```bash
|
||||
# Извлечь с максимальной безопасностью (по умолчанию)
|
||||
@@ -222,15 +223,15 @@ tzst x archive.tzst --filter tar
|
||||
tzst x archive.tzst --filter fully_trusted
|
||||
```
|
||||
|
||||
**🔐 Опции фильтра безопасности:**
|
||||
**Опции фильтра безопасности:**
|
||||
|
||||
- `data` (по умолчанию): Наиболее безопасно. Блокирует опасные файлы, абсолютные пути и пути вне директории извлечения
|
||||
- `tar`: Стандартная совместимость tar. Блокирует абсолютные пути и обход директорий
|
||||
- `fully_trusted`: Никаких ограничений безопасности. Используйте только с полностью доверенными архивами
|
||||
|
||||
## 🐍 Python API
|
||||
## Python API
|
||||
|
||||
### 📦 Класс TzstArchive
|
||||
### Класс TzstArchive
|
||||
|
||||
```python
|
||||
from tzst import TzstArchive
|
||||
@@ -256,13 +257,13 @@ with TzstArchive("large_archive.tzst", "r", streaming=True) as archive:
|
||||
archive.extract(path="output/")
|
||||
```
|
||||
|
||||
**⚠️ Важные ограничения:**
|
||||
**Важные ограничения:**
|
||||
|
||||
- **❌ Режим добавления не поддерживается**: Создавайте множественные архивы или пересоздавайте весь архив вместо этого
|
||||
- **Режим добавления не поддерживается**: Создавайте множественные архивы или пересоздавайте весь архив вместо этого
|
||||
|
||||
### 🎯 Удобные функции
|
||||
### Удобные функции
|
||||
|
||||
#### 📁 create_archive()
|
||||
#### create_archive()
|
||||
|
||||
```python
|
||||
from tzst import create_archive
|
||||
@@ -275,7 +276,7 @@ create_archive(
|
||||
)
|
||||
```
|
||||
|
||||
#### 📤 extract_archive()
|
||||
#### extract_archive()
|
||||
|
||||
```python
|
||||
from tzst import extract_archive
|
||||
@@ -293,7 +294,7 @@ extract_archive("backup.tzst", "restore/", flatten=True)
|
||||
extract_archive("large_backup.tzst", "restore/", streaming=True)
|
||||
```
|
||||
|
||||
#### 📋 list_archive()
|
||||
#### list_archive()
|
||||
|
||||
```python
|
||||
from tzst import list_archive
|
||||
@@ -308,7 +309,7 @@ files = list_archive("backup.tzst", verbose=True)
|
||||
files = list_archive("large_backup.tzst", streaming=True)
|
||||
```
|
||||
|
||||
#### 🧪 test_archive()
|
||||
#### test_archive()
|
||||
|
||||
```python
|
||||
from tzst import test_archive
|
||||
@@ -322,9 +323,9 @@ if test_archive("large_backup.tzst", streaming=True):
|
||||
print("Большой архив действителен")
|
||||
```
|
||||
|
||||
## 🔧 Продвинутые возможности
|
||||
## Продвинутые возможности
|
||||
|
||||
### 📂 Расширения файлов
|
||||
### Расширения файлов
|
||||
|
||||
Библиотека автоматически обрабатывает расширения файлов с интеллектуальной нормализацией:
|
||||
|
||||
@@ -341,7 +342,7 @@ create_archive("backup", files) # Создаёт backup.tzst
|
||||
create_archive("backup.txt", files) # Создаёт backup.tzst (нормализовано)
|
||||
```
|
||||
|
||||
### 🗜️ Уровни сжатия
|
||||
### Уровни сжатия
|
||||
|
||||
Уровни сжатия Zstandard варьируются от 1 (самый быстрый) до 22 (лучшее сжатие):
|
||||
|
||||
@@ -350,17 +351,17 @@ create_archive("backup.txt", files) # Создаёт backup.tzst (норм
|
||||
- **Уровень 10-15**: Лучшее сжатие, медленнее
|
||||
- **Уровень 20-22**: Максимальное сжатие, намного медленнее
|
||||
|
||||
### 🌊 Режим потоковой передачи
|
||||
### Режим потоковой передачи
|
||||
|
||||
Используйте режим потоковой передачи для эффективной обработки больших архивов в памяти:
|
||||
|
||||
**✅ Преимущества:**
|
||||
**Преимущества:**
|
||||
|
||||
- Значительно сниженное использование памяти
|
||||
- Лучшая производительность для архивов, которые не помещаются в память
|
||||
- Автоматическая очистка ресурсов
|
||||
|
||||
**🎯 Когда использовать:**
|
||||
**Когда использовать:**
|
||||
|
||||
- Архивы больше 100MB
|
||||
- Среды с ограниченной памятью
|
||||
@@ -378,7 +379,7 @@ contents = list_archive(large_archive, streaming=True, verbose=True)
|
||||
extract_archive(large_archive, "restore/", streaming=True)
|
||||
```
|
||||
|
||||
### ⚡ Атомарные операции
|
||||
### Атомарные операции
|
||||
|
||||
Все операции создания файлов используют атомарные файловые операции по умолчанию:
|
||||
|
||||
@@ -395,7 +396,7 @@ create_archive("important.tzst", files) # Безопасно от прерыв
|
||||
create_archive("test.tzst", files, use_temp_file=False)
|
||||
```
|
||||
|
||||
### 🚨 Обработка ошибок
|
||||
### Обработка ошибок
|
||||
|
||||
```python
|
||||
from tzst import TzstArchive
|
||||
@@ -419,43 +420,43 @@ except KeyboardInterrupt:
|
||||
# Очистка обрабатывается автоматически
|
||||
```
|
||||
|
||||
## 🚀 Производительность и сравнение
|
||||
## Производительность и сравнение
|
||||
|
||||
### 💡 Советы по производительности
|
||||
### Советы по производительности
|
||||
|
||||
1. **🗜️ Уровни сжатия**: Уровень 3 оптимален для большинства случаев использования
|
||||
2. **🌊 Потоковая передача**: Используйте для архивов больше 100MB
|
||||
3. **📦 Пакетные операции**: Добавляйте множественные файлы в одной сессии
|
||||
4. **📄 Типы файлов**: Уже сжатые файлы не будут сжиматься намного дальше
|
||||
1. **Уровни сжатия**: Уровень 3 оптимален для большинства случаев использования
|
||||
2. **Потоковая передача**: Используйте для архивов больше 100MB
|
||||
3. **Пакетные операции**: Добавляйте множественные файлы в одной сессии
|
||||
4. **Типы файлов**: Уже сжатые файлы не будут сжиматься намного дальше
|
||||
|
||||
### 🆚 против других инструментов
|
||||
### против других инструментов
|
||||
|
||||
**против tar + gzip:**
|
||||
|
||||
- ✅ Лучшие коэффициенты сжатия
|
||||
- ⚡ Быстрее распаковка
|
||||
- 🔄 Современный алгоритм
|
||||
- Лучшие коэффициенты сжатия
|
||||
- Быстрее распаковка
|
||||
- Современный алгоритм
|
||||
|
||||
**против tar + xz:**
|
||||
|
||||
- 🚀 Значительно быстрее сжатие
|
||||
- 📊 Похожие коэффициенты сжатия
|
||||
- ⚖️ Лучший компромисс скорость/сжатие
|
||||
- Значительно быстрее сжатие
|
||||
- Похожие коэффициенты сжатия
|
||||
- Лучший компромисс скорость/сжатие
|
||||
|
||||
**против zip:**
|
||||
|
||||
- 🗜️ Лучшее сжатие
|
||||
- 🔐 Сохраняет разрешения Unix и метаданные
|
||||
- 🌊 Лучшая поддержка потоковой передачи
|
||||
- Лучшее сжатие
|
||||
- Сохраняет разрешения Unix и метаданные
|
||||
- Лучшая поддержка потоковой передачи
|
||||
|
||||
## 📋 Требования
|
||||
## Требования
|
||||
|
||||
- 🐍 Python 3.12 или выше
|
||||
- 📦 zstandard >= 0.19.0
|
||||
- Python 3.12 или выше
|
||||
- zstandard >= 0.19.0
|
||||
|
||||
## 🛠️ Разработка
|
||||
## Разработка
|
||||
|
||||
### 🚀 Настройка среды разработки
|
||||
### Настройка среды разработки
|
||||
|
||||
Этот проект использует современные стандарты упаковки Python:
|
||||
|
||||
@@ -465,7 +466,7 @@ cd tzst
|
||||
pip install -e .[dev]
|
||||
```
|
||||
|
||||
### 🧪 Запуск тестов
|
||||
### Запуск тестов
|
||||
|
||||
```bash
|
||||
# Запустить тесты с покрытием
|
||||
@@ -475,7 +476,7 @@ pytest --cov=tzst --cov-report=html
|
||||
pytest
|
||||
```
|
||||
|
||||
### ✨ Качество кода
|
||||
### Качество кода
|
||||
|
||||
```bash
|
||||
# Проверить качество кода
|
||||
@@ -485,16 +486,16 @@ ruff check src tests
|
||||
ruff format src tests
|
||||
```
|
||||
|
||||
## 🤝 Вклад
|
||||
## Вклад
|
||||
|
||||
Мы приветствуем вклады! Пожалуйста, прочитайте наше [Руководство по вкладу](CONTRIBUTING.md) для:
|
||||
|
||||
- Настройки разработки и структуры проекта
|
||||
- Руководящих принципов стиля кода и лучших практик
|
||||
- Руководящих принципов стиля кода и лучших практик
|
||||
- Требований к тестированию и написанию тестов
|
||||
- Процесса pull request'ов и рабочего процесса обзора
|
||||
|
||||
### 🚀 Быстрый старт для участников
|
||||
### Быстрый старт для участников
|
||||
|
||||
```bash
|
||||
git clone https://github.com/xixu-me/tzst.git
|
||||
@@ -503,22 +504,22 @@ pip install -e .[dev]
|
||||
python -m pytest tests/
|
||||
```
|
||||
|
||||
### 🎯 Типы приветствуемых вкладов
|
||||
### Типы приветствуемых вкладов
|
||||
|
||||
- 🐛 **Исправления ошибок** - Исправить проблемы в существующей функциональности
|
||||
- ✨ **Возможности** - Добавить новые возможности в библиотеку
|
||||
- 📚 **Документация** - Улучшить или добавить документацию
|
||||
- 🧪 **Тесты** - Добавить или улучшить покрытие тестами
|
||||
- ⚡ **Производительность** - Оптимизировать существующий код
|
||||
- 🔒 **Безопасность** - Устранить уязвимости безопасности
|
||||
- **Исправления ошибок** - Исправить проблемы в существующей функциональности
|
||||
- **Возможности** - Добавить новые возможности в библиотеку
|
||||
- **Документация** - Улучшить или добавить документацию
|
||||
- **Тесты** - Добавить или улучшить покрытие тестами
|
||||
- **Производительность** - Оптимизировать существующий код
|
||||
- **Безопасность** - Устранить уязвимости безопасности
|
||||
|
||||
## 🙏 Благодарности
|
||||
## Благодарности
|
||||
|
||||
- [Meta Zstandard](https://github.com/facebook/zstd) за отличный алгоритм сжатия
|
||||
- [python-zstandard](https://github.com/indygreg/python-zstandard) за связи Python
|
||||
- Сообществу Python за вдохновение и обратную связь
|
||||
|
||||
## 📄 Лицензия
|
||||
## Лицензия
|
||||
|
||||
Авторские права © [Си Сюй](https://xi-xu.me). Все права защищены.
|
||||
|
||||
|
||||
Reference in new issue
Block a user