OpenSSH resource synchronization tool for Aliyun mirrors
Project description
OpenSSH 资源同步工具
一个用于从阿里云镜像同步 OpenSSH 资源的 Python 工具,支持定时检测和版本过滤。
功能特性
- ✅ 从阿里云镜像同步 OpenSSH 资源
- ✅ 支持设置检测间隔时间(最小12小时)
- ✅ 版本过滤(只同步大于等于 openssh-10.2p1 的版本)
- ✅ 只同步 tar.gz 文件
- ✅ 无限循环后台守护进程
- ✅ Docker 容器化支持
- ✅ 命令行接口,易于使用
- ✅ 基于 pyproject.toml 最新标准
安装
从源码安装
# 克隆项目
git clone https://gitee.com/liumou_site/openssh-synchronization.git
cd openssh-synchronization
安装依赖
pip install .
或者安装开发版本
pip install -e .
### 从 PyPI 安装(未来发布)
```bash
pip install openssh-synchronization
Docker 安装
构建镜像
# 构建Docker镜像
docker build -t openssh-sync .
# 或者使用docker-compose
docker-compose build
运行容器
# 直接运行(推荐使用环境变量配置)
docker run -d \
--name openssh-sync \
-v /path/to/downloads:/data/openssh \
-e CHECK_INTERVAL=24 \
-e DOWNLOAD_DIR=/data/openssh \
-e MIN_VERSION=10.3.0 \
-e DEBUG=false \
openssh-sync
# 使用docker-compose
docker-compose up -d
查看日志
# 查看容器日志
docker logs openssh-sync
# 实时查看日志
docker logs -f openssh-sync
快速开始
查看帮助
openssh-sync --help
列出可用版本
openssh-sync list
输出示例:
🔍 正在获取OpenSSH版本列表...
📋 找到 3 个符合条件的版本:
------------------------------------------------------------
🔸 openssh-10.2p1
文件: openssh-10.2p1.tar.gz
大小: 1.9 MB
🔸 openssh-10.1p1
文件: openssh-10.1p1.tar.gz
大小: 1.9 MB
💡 提示: 使用 'openssh-sync sync' 命令下载这些版本
执行一次性同步
# 使用默认配置
openssh-sync sync
# 自定义参数
openssh-sync sync --interval 48 --dir /opt/openssh --min-version 10.3.0
启动定时同步服务
# 启动守护进程
openssh-sync daemon --interval 24 --dir /tmp/openssh
# 使用配置文件
openssh-sync daemon --config-file config.json
生成配置文件
# 生成默认配置文件
openssh-sync config
# 生成自定义配置文件
openssh-sync config --interval 48 --dir /opt/openssh --extract --output my-config.json
配置说明
环境变量配置
OpenSSH同步工具支持通过环境变量配置参数,优先级:命令行参数 > 环境变量 > 默认值
| 环境变量 | 说明 | 示例值 | 默认值 |
|---|---|---|---|
CHECK_INTERVAL |
检查间隔时间(小时) | 24 |
24 |
DOWNLOAD_DIR |
下载目录路径 | /tmp/openssh |
./downloads |
MIN_VERSION |
最小版本要求 | 10.2.1 |
10.2.1 |
DEBUG |
启用调试模式 | true |
false |
使用示例:
# 通过环境变量配置
CHECK_INTERVAL=36 DOWNLOAD_DIR=/tmp/openssh MIN_VERSION=10.3.1 DEBUG=true openssh-sync sync
# 容器环境推荐用法
docker run -d \
-e CHECK_INTERVAL=24 \
-e DOWNLOAD_DIR=/data/openssh \
-e MIN_VERSION=10.3.0 \
-e DEBUG=false \
openssh-sync
命令行参数
| 参数 | 说明 | 示例值 | 默认值 |
|---|---|---|---|
--interval, -i |
检查间隔时间(小时) | 24 |
24 |
--dir, -d |
下载目录路径 | /tmp/openssh |
./downloads |
--min-version |
最小版本要求 | 10.2.1 |
10.2.1 |
--debug |
启用调试模式 | --debug |
False |
--config-file |
配置文件路径 | /etc/openssh-sync.json |
None |
配置文件格式
生成的 JSON 配置文件示例:
{
"check_interval": 24,
"download_dir": "./downloads",
"min_version": [10, 2, 1],
"mirror_url": "https://mirrors.aliyun.com/openssh/portable",
"timeout": 30,
"debug": false
}
API 使用
基本用法
from openssh_sync import Config, OpenSSHSync
# 创建配置
config = Config(
check_interval=24, # 检查间隔:24小时
download_dir="/tmp/openssh" # 下载目录
)
# 创建同步实例
sync_tool = OpenSSHSync(config)
# 执行同步
success = sync_tool.sync_files()
if success:
print("同步成功")
else:
print("同步失败")
高级用法
from openssh_sync import create_sync, create_config_from_dict
# 从字典创建配置
config_dict = {
'check_interval': 48,
'download_dir': '/opt/openssh',
'min_version': [10, 3, 0],
'debug': True
}
config = create_config_from_dict(config_dict)
sync_tool = create_sync(config)
# 获取文件列表
files = sync_tool.get_file_list()
for file_info in files:
print(f"版本: {file_info['version']}, 文件: {file_info['filename']}")
# 启动定时同步
sync_tool.start_scheduled_sync()
项目结构
openssh-synchronization/
├── pyproject.toml # 项目配置
├── README.md # 项目说明
├── LICENSE # 许可证
├── .gitignore # Git忽略文件
└── openssh_sync/ # 主程序包
├── __init__.py # 包初始化
├── main.py # 主程序逻辑
├── config.py # 配置管理
├── utils.py # 工具函数
└── cli.py # 命令行接口
开发
安装开发依赖
pip install -e .[dev]
运行测试
pytest
代码格式化
black openssh_sync/
isort openssh_sync/
许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
贡献
欢迎提交 Issue 和 Pull Request!
更新日志
v1.0.0 (2024-01-01)
- 初始版本发布
- 支持 OpenSSH 资源同步
- 支持定时检测和版本过滤
- 提供命令行接口和 API
技术支持
如有问题,请提交 Issue 或联系开发者。
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openssh_synchronization-1.0.0.tar.gz.
File metadata
- Download URL: openssh_synchronization-1.0.0.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
925a8641e7d856b272b36ffc254800b1528154c7dea7afd1ebf454a140881b83
|
|
| MD5 |
ef0ce825e1e66e290c92a59016bddccc
|
|
| BLAKE2b-256 |
e984a0c7b261319147d714933dc8523045bc6f3c8b1a786331736771c92999d7
|
File details
Details for the file openssh_synchronization-1.0.0-py3-none-any.whl.
File metadata
- Download URL: openssh_synchronization-1.0.0-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5532174ff43b9811b17c6e95a23de22590c9bb97e0a85c745a3937082c1e837f
|
|
| MD5 |
ed48d7e030176758cff972f0e162b84c
|
|
| BLAKE2b-256 |
0db7e5b7d333447183b2047a15142673200374b2980deadca57f94db3583f182
|