43 KiB
Sbackup
Лёгкий и эффективный инструмент резервного копирования папок с поддержкой командной строки, позволяющий удобно управлять стратегиями бэкапов.
English | Deutsch | Espanol | Francais | Portugues | Pycckuu | 日本語 | 한국어 | 中文
- Введение
- Возможности
- Быстрый старт
- Файл конфигурации
- Удалённое резервное копирование через SFTP
- Удалённое резервное копирование через WebDAV
- Принцип работы
- Руководство для разработчиков
- Часто задаваемые вопросы
- Руководство по участию в разработке
- Лицензия
- Автор
Введение
Sbackup -- это лёгкий инструмент резервного копирования папок, позволяющий добавлять, удалять и просматривать стратегии бэкапов через командную строку. Он определяет необходимость резервного копирования на основе времени последнего изменения папки, гарантируя, что ваши данные всегда остаются актуальными.
Возможности
- Инкрементальное резервное копирование: копируются только изменённые папки, что экономит время и дисковое пространство
- Поддержка множества форматов: семь форматов упаковки -- ZIP, tar, tar.gz, tar.bz2, tar.xz, tar.zst, 7z; можно задавать как глобально, так и для каждого элемента отдельно
- Удалённое резервное копирование через SFTP: на базе библиотеки paramiko, поддержка аутентификации по паролю/SSH-ключу, автоматическое определение ключа по умолчанию
- Удалённое резервное копирование через WebDAV: на базе стандартной библиотеки urllib, без дополнительных зависимостей; поддержка Jianguoyun/NextCloud/Synology
- Облачное хранилище S3: на базе библиотеки minio, совместимо со всеми S3-хранилищами (AWS/MinIO/Aliyun OSS и др.)
- Параллельное копирование в несколько направлений: одновременное резервное копирование на локальный диск и несколько удалённых хранилищ
- Восстановление из бэкапа: распаковка и восстановление в указанную директорию с возможностью выборочного восстановления
- Очистка старых бэкапов: автоматическое удаление с поддержкой стратегий по количеству/времени/ежедневному хранению
- Шифрование: парольное шифрование для формата 7z + шифрование PBKDF2 для всех форматов
- Планирование: автоматическое выполнение по расписанию, поддержка мониторинга файловой системы в реальном времени (watchdog)
- История резервных копий: запись времени, размера и контрольной суммы SHA256 каждого бэкапа для удобного отслеживания
- Журнал аудита: запись всех событий резервного копирования и восстановления
- Pre/Post Hook: выполнение пользовательских команд до и после резервного копирования
- Профили конфигурации: сохранение, переключение, импорт и экспорт нескольких конфигураций
- Поиск по архивам: поиск совпадающих имён файлов в нескольких бэкапах
- Целостность данных: генерация и проверка контрольных сумм SHA256, корректирующие коды Рида-Соломона
- Валидация конфигурации: автоматическая проверка параметров конфигурации, обнаружение несанкционированных изменений
- Очередь задач: управление очередью задач резервного копирования с возможностью добавления, выполнения и отмены
- Бенчмарк сжатия: сравнение производительности различных форматов и уровней сжатия
- Оценка дискового пространства: предварительный расчёт размера бэкапа по типам файлов с проверкой места на диске
- Интернационализация: поддержка девяти языков -- китайский, английский, французский, испанский, русский, немецкий, японский, португальский, корейский
- Автодополнение в оболочке: bash/zsh/fish/powershell
- Лёгкость и эффективность: малый размер, быстрый запуск, низкое потребление ресурсов
- Кроссплатформенность: поддержка Windows, macOS и Linux
Быстрый старт
Установка
Установка через pip
pip install sbackup-cli
После установки доступна команда sbackup (имя пакета на PyPI -- sbackup-cli, имя CLI-команды -- sbackup).
Установка из исходного кода
git clone https://github.com/xiatianxuan/sbackup.git
cd sbackup
uv sync
Использование
Основной синтаксис
uv run python main.py <command> [options]
Доступные команды
| Команда | Описание |
|---|---|
add |
Добавить стратегию резервного копирования |
rm / remove |
Удалить стратегию резервного копирования |
edit |
Редактировать существующую стратегию |
all |
Показать все стратегии резервного копирования |
save |
Выполнить резервное копирование |
watch |
Запустить резервное копирование по расписанию |
restore |
Восстановить из файла резервной копии |
info |
Показать подробную информацию о файле резервной копии |
diff |
Сравнить исходную директорию с резервной копией |
verify |
Проверить целостность файла резервной копии |
search |
Поиск файлов в резервной копии |
xsearch |
Поиск по нескольким архивам резервных копий |
versions |
Показать историю версий резервных копий |
sftp |
Управление удалённым резервным копированием через SFTP |
webdav |
Управление удалённым резервным копированием через WebDAV |
remote |
Управление удалёнными файлами (list/rm) |
task |
Управление очередью задач резервного копирования |
audit |
Запрос журнала аудита |
hooks |
Ручной запуск Pre/Post Hook |
profile |
Управление профилями конфигурации |
rotate |
Ротация резервных копий |
clean |
Очистка старых резервных копий |
diskcheck |
Оценка дискового пространства |
benchmark |
Бенчмарк форматов сжатия |
integrity |
Проверка целостности директории резервных копий |
dry-run |
Предварительный просмотр выбора файлов |
export / import |
Экспорт/импорт стратегий резервного копирования |
ignore |
Генерация файла .sbackupignore |
schedule |
Экспорт конфигурации планировщика |
webhook |
Настройка предустановок Webhook |
config |
Шифрование/проверка конфигурации |
report |
Генерация отчёта о резервном копировании |
completion |
Генерация скрипта автодополнения для оболочки |
wizard |
Интерактивный мастер настройки |
status |
Панель состояния резервного копирования |
version |
Показать информацию о версии |
help |
Показать справку |
Глобальные параметры
| Параметр | Описание |
|---|---|
--lang zh_CN / en_US / fr_FR / es_ES / ru_RU / de_DE / ja_JP / pt_BR / ko_KR |
Установить язык интерфейса (сохраняется в config.json) |
--format zip / tar / tar.gz / tar.bz2 / tar.xz / tar.zst / 7z |
Установить формат упаковки (сохраняется в config.json) |
--debug |
Включить отладочное логирование |
Добавление стратегии резервного копирования
uv run python main.py add <source> <dest> [-i ignore_patterns]
Параметры:
- source: путь к исходной папке для резервного копирования
- dest: путь к директории для хранения резервных копий
- -i, --ignore: имена файлов или папок, которые следует игнорировать, через запятую (по умолчанию:
.git,__pycache__) - --format: формат упаковки на уровне элемента (применяется только к данной стратегии; если не указан, используется глобальный по умолчанию):
zip/tar/tar.gz/tar.bz2/tar.xz/tar.zst/7z
Примеры:
# Добавить стратегию с форматом по умолчанию
uv run python main.py add F:/my_folder F:/backup -i node_modules,.git
# Указать формат tar.gz для данной стратегии (каждый бэкап этой папки будет в формате tar.gz)
uv run python main.py add F:/my_folder F:/backup --format tar.gz
# Указать формат 7z (только для этой папки)
uv run python main.py add F:/my_folder F:/backup --format 7z
Удаление стратегии резервного копирования
uv run python main.py rm <path>
Параметры:
- path: путь к исходной папке, стратегию которой нужно удалить
Пример:
uv run python main.py rm F:/my_folder
Просмотр всех стратегий резервного копирования
uv run python main.py all
Отображает все текущие настроенные стратегии резервного копирования.
Выполнение резервного копирования
# С использованием формата по умолчанию (ZIP)
uv run python main.py save
# С использованием формата tar.gz
uv run python main.py --format tar.gz save
# Сохранить последние 5 резервных копий, автоматически удалить старые
uv run python main.py save --keep 5
# Использовать формат 7z с шифрованием
uv run python main.py --format 7z save --password mysecret
# Английский интерфейс + формат tar.xz
uv run python main.py --lang en_US --format tar.xz save
Параметры команды save:
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
--keep N |
0 |
Сохранять N последних резервных копий; 0 -- не удалять старые |
--password PASSWORD |
"" |
Пароль шифрования (только для формата 7z) |
--sftp |
false |
Загрузить на SFTP-сервер после завершения резервного копирования |
--webdav |
false |
Загрузить на WebDAV-сервер после завершения резервного копирования |
Автоматическое резервное копирование изменённых папок в соответствии с настроенными стратегиями.
Планирование резервного копирования
# Выполнять резервное копирование каждые 60 минут
uv run python main.py watch --interval 60
# Каждые 2 часа, сохранять последние 10 файлов
uv run python main.py watch --interval 120 --keep 10
# Планирование + шифрование 7z
uv run python main.py --format 7z watch --interval 60 --password mysecret
Параметры команды watch:
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
--interval MINUTES |
60 |
Интервал резервного копирования (в минутах) |
--keep N |
0 |
Сохранять N последних резервных копий |
--password PASSWORD |
"" |
Пароль шифрования (только для формата 7z) |
--sftp |
false |
Загружать на SFTP-сервер после каждого бэкапа |
--webdav |
false |
Загружать на WebDAV-сервер после каждого бэкапа |
Нажмите Ctrl+C, чтобы остановить планирование.
Восстановление из резервной копии
uv run python main.py restore <backup_file> <target_dir>
Параметры:
- backup_file: путь к файлу резервной копии (поддерживаются форматы .zip / .tar / .tar.gz / .tar.bz2 / .tar.xz / .tar.zst / .7z)
- target_dir: целевая директория для восстановления
Примеры:
uv run python main.py restore F:/backup/my_folder.tar.gz F:/restored
uv run python main.py restore F:/backup/my_folder.7z F:/restored
uv run python main.py restore F:/backup/my_folder.tar.zst F:/restored
Удалённое резервное копирование через SFTP
# ============ Быстрый старт (рекомендуется) ============
# 1. Настроить SFTP (автоматическое определение SSH-ключа, без ручного указания)
sbackup sftp config --host 192.168.1.100 --user admin --remote-path /backups
# 2. Проверить соединение
sbackup sftp test
# 3. Выполнить резервное копирование и загрузить
sbackup save --sftp
# ============ Способы аутентификации ============
# Способ 1: Автоматическое определение ключа (рекомендуется)
# Система автоматически проверяет ~/.ssh/id_ed25519 -> id_rsa -> id_ecdsa
sbackup sftp config --host 192.168.1.100 --user admin
# Способ 2: Аутентификация по паролю
sbackup sftp config --host 192.168.1.100 --user admin --password secret
# Способ 3: Указание конкретного ключа
sbackup sftp config --host 192.168.1.100 --user admin --key-file ~/.ssh/id_rsa
# Способ 4: Ключ + парольная фраза (интерактивный ввод)
sbackup sftp config --host 192.168.1.100 --user admin --key-file ~/.ssh/id_rsa
# Способ 5: Ключ + парольная фраза (через командную строку)
sbackup sftp config --host 192.168.1.100 --user admin --key-file ~/.ssh/id_rsa --key-passphrase mykeypass
# ============ Сценарии использования ============
# Сценарий 1: Разовое резервное копирование с загрузкой
sbackup save --sftp
# Сценарий 2: Планирование с автоматической загрузкой (каждые 60 минут)
sbackup watch --interval 60 --sftp
# Сценарий 3: Указание формата + загрузка
sbackup --format tar.gz save --sftp
# Сценарий 4: Шифрованное резервное копирование + загрузка
sbackup --format 7z save --password mysecret --sftp
# Сценарий 5: Сохранение последних 5 копий + загрузка
sbackup save --keep 5 --sftp
# ============ Расширенное использование ============
# Интерактивная настройка (пошаговый ввод всех параметров)
sbackup sftp config
# Неинтерактивная настройка (все параметры через командную строку)
sbackup sftp config --host 192.168.1.100 --port 22 --user admin --password secret --remote-path /backups
# Проверка соединения с подробным логом
sbackup --debug sftp test
Подкоманды sftp:
| Подкоманда | Описание | Пример |
|---|---|---|
sftp config |
Настройка параметров подключения SFTP (host/port/user/password/key_file/key_passphrase/remote_path) | sbackup sftp config --host 192.168.1.100 --user admin |
sftp test |
Проверка доступности SFTP-соединения | sbackup sftp test |
Способы аутентификации:
| Способ | Параметры | Описание | Пример |
|---|---|---|---|
| Автоопределение | Без указания параметров аутентификации | Автоматическая проверка ~/.ssh/id_ed25519 -> id_rsa -> id_ecdsa (рекомендуется) |
sbackup sftp config --host ... --user ... |
| Пароль | --password |
Вход по паролю | sbackup sftp config --host ... --user ... --password secret |
| Приватный ключ | --key-file |
Вход с использованием указанного SSH-ключа | sbackup sftp config --host ... --user ... --key-file ~/.ssh/id_rsa |
| Ключ + фраза | --key-file + --key-passphrase |
Для ключа с парольной фразой | sbackup sftp config --host ... --user ... --key-file ~/.ssh/id_rsa --key-passphrase mypass |
Поддерживаемые форматы ключей: RSA, Ed25519, ECDSA.
Кроссплатформенная поддержка путей:
| Платформа | Пример пути к ключу | Описание |
|---|---|---|
| Linux/macOS | ~/.ssh/id_rsa |
Автоматически раскрывается в /home/user/.ssh/id_rsa |
| Windows | ~/.ssh/id_rsa |
Автоматически раскрывается в C:\Users\username\.ssh\id_rsa |
| Все платформы | Абсолютный путь | Используется полный путь напрямую |
Конфигурация SFTP сохраняется в поле sftp файла config.json, параметры можно задать через командную строку или интерактивно.
Просмотр информации о версии
sbackup version
Файл конфигурации
Sbackup поддерживает пользовательскую настройку через файл config.json. Файл конфигурации должен находиться в корневой директории проекта.
Описание параметров конфигурации
{
"compression_format": "ZIP",
"compression": {
"algorithm": "ZIP_DEFLATED",
"level": 6
},
"skip_patterns": [".git", "__pycache__"],
"data_file": "sbackup.json",
"lang": "zh_CN",
"password": "",
"sftp": {
"host": "",
"port": 22,
"user": "",
"password": "",
"key_file": "",
"key_passphrase": "",
"remote_path": "/",
"enabled": false
}
}
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
compression_format |
string | "ZIP" |
Формат упаковки; допустимые значения: ZIP, TAR, TAR_GZ, TAR_BZ2, TAR_XZ, TAR_ZST, 7Z |
compression.algorithm |
string | "ZIP_DEFLATED" |
Алгоритм сжатия ZIP; допустимые значения: ZIP_DEFLATED, ZIP_STORED, ZIP_BZIP2, ZIP_LZMA |
compression.level |
int | 6 |
Уровень сжатия, диапазон 0-9 (0 -- без сжатия, 9 -- максимальное сжатие) |
skip_patterns |
list | [".git", "__pycache__"] |
Шаблоны игнорируемых файлов или папок (поддержка fnmatch-подстановок и сопоставления путей) |
data_file |
string | Путь по умолчанию для платформы | Путь к файлу данных стратегий резервного копирования |
lang |
string | "zh_CN" |
Язык интерфейса; допустимые значения: zh_CN, en_US, fr_FR, es_ES, ru_RU, de_DE, ja_JP, pt_BR, ko_KR |
password |
string | "" |
Пароль шифрования для формата 7z |
sftp.host |
string | "" |
Адрес SFTP-сервера |
sftp.port |
int | 22 |
Порт SFTP |
sftp.user |
string | "" |
Имя пользователя SFTP |
sftp.password |
string | "" |
Пароль SFTP (используется при аутентификации по паролю) |
sftp.key_file |
string | "" |
Путь к файлу приватного SSH-ключа (используется при аутентификации по ключу, рекомендуется) |
sftp.key_passphrase |
string | "" |
Парольная фраза ключа (при наличии) |
sftp.remote_path |
string | "/" |
Путь к удалённой директории назначения |
sftp.enabled |
bool | false |
Включить или отключить SFTP |
Пример конфигурации
Резервное копирование с высокой степенью сжатия в формате tar.bz2:
{
"compression_format": "TAR_BZ2",
"compression_level": 9,
"skip_patterns": [".git", "__pycache__", "node_modules", "*.log"],
"data_file": "backup_strategies.json",
"lang": "zh_CN"
}
Сравнение форматов упаковки
| Формат | Расширение | Степень сжатия | Скорость | Зависимости | Применение |
|---|---|---|---|---|---|
| ZIP | .zip | Средняя | Высокая | Стандартная библиотека | Универсальный, лучшая совместимость с Windows |
| tar | .tar | Нет | Очень высокая | Стандартная библиотека | Чистая архивация, для внешнего сжатия |
| tar.gz | .tar.gz | Средняя | Высокая | Стандартная библиотека | Универсальный для Linux/macOS |
| tar.bz2 | .tar.bz2 | Высокая | Средняя | Стандартная библиотека | Архивация с высокой степенью сжатия |
| tar.xz | .tar.xz | Максимальная | Низкая | Стандартная библиотека | Долгосрочное архивирование, экономия места |
| tar.zst | .tar.zst | Средне-высокая | Очень высокая | zstandard | Современный формат, баланс скорости и сжатия |
| 7z | .7z | Очень высокая | Низкая | py7zr | Максимальное сжатие, поддержка шифрования |
Удалённое резервное копирование через WebDAV
WebDAV -- это файловый протокол на основе HTTP, поддерживаемый такими сервисами, как Jianguoyun, NextCloud, Synology и другими. Использует стандартную библиотеку Python urllib, без дополнительных зависимостей.
# ============ Быстрый старт ============
# 1. Настроить WebDAV
sbackup webdav config --url https://dav.jianguoyun.com/dav/ --user user@example.com --password secret
# 2. Проверить соединение
sbackup webdav test
# 3. Выполнить резервное копирование и загрузить
sbackup save --webdav
# ============ Сценарии использования ============
# Сценарий 1: Разовое резервное копирование с загрузкой
sbackup save --webdav
# Сценарий 2: Планирование с автоматической загрузкой (каждые 60 минут)
sbackup watch --interval 60 --webdav
# Сценарий 3: Указание удалённой поддиректории
sbackup webdav config --url https://dav.jianguoyun.com/dav/ --user user@example.com --remote-path /backups/sbackup
# Сценарий 4: Одновременная загрузка на SFTP и WebDAV
sbackup save --sftp --webdav
# ============ Типичные адреса WebDAV-сервисов ============
# Jianguoyun: https://dav.jianguoyun.com/dav/
# NextCloud: https://your-server/remote.php/dav/files/username/
# Synology: https://your-synology:5006/webdav/
Подкоманды webdav:
| Подкоманда | Описание | Пример |
|---|---|---|
webdav config |
Настройка параметров подключения WebDAV (url/user/password/remote_path) | sbackup webdav config --url ... --user ... |
webdav test |
Проверка доступности WebDAV-соединения | sbackup webdav test |
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
--url URL |
"" |
Адрес WebDAV-сервера (например, https://dav.jianguoyun.com/dav/) |
--user USER |
"" |
Имя пользователя WebDAV (обычно адрес электронной почты) |
--password PASS |
"" |
Пароль WebDAV (для Jianguoyun необходимо сгенерировать пароль приложения в настройках) |
--remote-path PATH |
/ |
Путь к удалённой директории назначения |
Принцип работы
Sbackup реализует резервное копирование следующим образом:
- Хранение стратегий: стратегии резервного копирования хранятся в файле JSON и содержат пути к папкам, время последнего изменения, пути назначения, шаблоны игнорирования и формат упаковки на уровне элемента.
- Инкрементальное копирование: путём сравнения времени последнего изменения папки копируются только изменённые папки.
- Множественные форматы сжатия: используются встроенные модули Python
zipfileиtarfile, а также сторонние библиотекиzstandardиpy7zrдля поддержки семи форматов упаковки. - Формат на уровне элемента: каждая стратегия может иметь собственный формат упаковки (
add --format), который имеет приоритет над глобальным параметром--format; при отсутствии используется значение по умолчанию. - Очистка бэкапов: после успешного резервного копирования автоматически сканируется целевая директория, файлы сортируются по времени изменения и удаляются старые копии, превышающие лимит хранения.
- Шифрование: формат 7z поддерживает шифрование LZMA2 через параметр
--passwordили настройку вconfig.json. - Планирование: команда
watchвыполняет резервное копирование в цикле с указанным интервалом, для безопасного выхода используетсяCtrl+C. - История бэкапов: после каждого резервного копирования записываются временная метка, размер файла и количество файлов; хранятся последние 100 записей.
- Удалённое копирование через SFTP: на базе библиотеки paramiko реализован SFTP-клиент с поддержкой проверки соединения, автоматического создания удалённых директорий и загрузки файлов с индикатором прогресса.
Формат файла данных
{
"/path/to/source/folder": [
1719235200.0,
"/path/to/target/folder",
[".git", "__pycache__"],
""
],
"/path/to/another/folder": [
1719235200.0,
"/path/to/another/target",
[".git"],
"TAR_GZ"
],
"_history": [
{
"time": "2026-05-01T12:00:00",
"source": "/path/to/source/folder",
"size_mb": 12.5,
"files_count": 150
}
]
}
Каждая запись стратегии резервного копирования представляет собой список из 4 элементов: [mtime, target, skip_patterns, compression_format]
| Поле | Описание |
|---|---|
mtime |
Время последнего изменения исходной папки (для определения необходимости инкрементального копирования) |
target |
Путь к директории для хранения резервных копий |
skip_patterns |
Список шаблонов игнорируемых файлов/папок |
compression_format |
Формат упаковки на уровне элемента (пустая строка означает использование глобального значения по умолчанию) |
Руководство для разработчиков
Запуск тестов
uv run coverage run -m unittest discover -s tests -t . && uv run coverage report -m
Структура кода
sbackup/
├── main.py # Точка входа программы
├── sbackup/
│ ├── __init__.py # Экспорт основных функций
│ ├── __main__.py # Точка входа python -m sbackup
│ ├── cli.py # Разбор аргументов CLI и маршрутизация команд (30+ команд)
│ ├── config.py # Загрузка конфигурации, шифрование, настройки Webhook/SMTP
│ ├── auto_save.py # Основной движок BackupManager
│ ├── compression.py # Движок сжатия/распаковки для 7 форматов
│ ├── i18n.py # Интернационализация (9 языков)
│ ├── sftp.py # SFTP-клиент для удалённого копирования (paramiko)
│ ├── webdav.py # WebDAV-клиент для удалённого копирования (без зависимостей)
│ ├── cloud_storage.py # S3-клиент для облачного хранилища (minio)
│ ├── multi_dest.py # Параллельное копирование в несколько направлений
│ ├── handlers.py # Обработчики команд SFTP/WebDAV/Remote/Schedule
│ ├── hooks.py # Выполнение Pre/Post Hook
│ ├── audit.py # Система журналирования аудита
│ ├── profile.py # Управление профилями конфигурации
│ ├── selective.py # Выборочное восстановление
│ ├── cross_search.py | Поиск по архивам
│ ├── integrity.py # Контрольные суммы SHA256
│ ├── rotation.py # Стратегии ротации резервных копий
│ ├── dryrun.py # Предварительный просмотр (dry-run)
│ ├── diskcheck.py # Оценка дискового пространства
│ ├── task_queue.py # Система очереди задач
│ ├── schema.py # Валидатор конфигурации
│ ├── benchmark.py # Бенчмарк сжатия
│ ├── chunked_backup.py# Блочное инкрементальное копирование
│ ├── dedup.py # Дедупликация файлов по SHA256
│ ├── export.py # Экспорт метаданных (CSV/JSON)
│ ├── monitor.py # Мониторинг файловой системы (watchdog)
│ ├── lock.py # Кроссплатформенная блокировка процессов
│ ├── retry.py | Повторные попытки с экспоненциальной задержкой
│ ├── ratelimiter.py | Ограничитель скорости (алгоритм токен-ведра)
│ ├── keychain.py | Интеграция с системной связкой ключей
│ ├── parity.py | Корректирующие коды Рида-Соломона
│ ├── completion.py | Автодополнение для оболочки
│ ├── wizard.py | Интерактивный мастер настройки
│ └── locales/ # Файлы перевода на 9 языков
└── tests/
└── sbackup/
└── test_*.py # 30 тестовых файлов, покрывающих все модули
Добавление нового функционала
- Создайте новый файл модуля в директории
sbackup/ - Импортируйте функции нового модуля в
sbackup/__init__.py - Добавьте обработку новой команды в функцию
run() - Добавьте соответствующий тестовый файл в директорию
tests/
Часто задаваемые вопросы
В: Что делать, если файл стратегий резервного копирования был случайно удалён?
О: Стратегии хранятся в файле данных. Если файл был удалён, просто заново добавьте стратегии с помощью команды add.
В: Как изменить ранее добавленную стратегию?
О: Используйте команду sbackup edit: sbackup edit <source> --dest <new_dest> --ignore <patterns> --format <fmt>.
В: Поддерживается ли удалённое резервное копирование?
О: Да! Предоставляются три способа удалённого копирования:
- SFTP: настройка через
sbackup sftp config, загрузка черезsbackup save --sftp - WebDAV: настройка через
sbackup webdav config, загрузка черезsbackup save --webdav(поддержка Jianguoyun/NextCloud/Synology) - Облачное хранилище S3: настройка поля
cloudвconfig.json, загрузка черезsbackup save --cloud - Можно включить несколько способов одновременно:
sbackup save --sftp --webdav --cloud
В: В чём разница между tar.gz и ZIP?
О: tar.gz чаще используется в Linux/macOS и обеспечивает немного лучшее сжатие; ZIP более универсален на Windows и обладает лучшей совместимостью. tar.bz2 и tar.xz обеспечивают более высокую степень сжатия, но работают медленнее. tar.zst -- современный алгоритм с высокой скоростью и хорошим сжатием. 7z обеспечивает максимальное сжатие и поддерживает шифрование.
В: Как зашифровать резервную копию?
О: Используйте формат 7z с паролем: uv run python main.py --format 7z save --password yourpassword. Пароль также можно указать в поле password файла config.json.
В: Как автоматически очищать старые резервные копии?
О: Используйте параметр --keep: uv run python main.py save --keep 5 сохранит только 5 последних резервных копий. При планировании тоже поддерживается: uv run python main.py watch --interval 60 --keep 10.
В: Как настроить автоматическое резервное копирование по расписанию?
О: Используйте команду watch: uv run python main.py watch --interval 60 -- резервное копирование каждые 60 минут. Нажмите Ctrl+C для остановки.
В: Безопасно ли хранение паролей?
О: Пароли SFTP и шифрования 7z в файле config.json хранятся в открытом виде. Убедитесь, что доступ к файлу config.json имеют только доверенные пользователи (например, chmod 600 config.json). Не добавляйте файл config.json, содержащий пароли, в систему контроля версий.
Руководство по участию в разработке
Приветствуются Issues и Pull Requests!
- Сделайте форк репозитория
- Создайте ветку для новой функции (
git checkout -b feature/AmazingFeature) - Внесите изменения (
git commit -m 'Add some AmazingFeature') - Отправьте в ветку (
git push origin feature/AmazingFeature) - Создайте Pull Request
Стиль кодирования
Проект следует стандартам PEP 8 и Google Python Style Guide. Убедитесь, что ваш код:
- Использует аннотации типов
- Следует Google-стилю docstrings
- Проходит все модульные тесты
Лицензия
Проект распространяется под лицензией GNU GPL v3.0. Подробности см. в файле LICENSE.
Автор
xiatianxuan (CodeSeed)
Благодарности
Связь с нами
По вопросам и предложениям обращайтесь по электронной почте: xiatianxuan2025@163.com
Последнее обновление: 19 июня 2026 г.