<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.mywiki.cn/Hovercool/index.php?action=history&amp;feed=atom&amp;title=Seafile%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90%E4%B8%8E%E8%A7%A3%E5%86%B3</id>
	<title>Seafile同步问题分析与解决 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://www.mywiki.cn/Hovercool/index.php?action=history&amp;feed=atom&amp;title=Seafile%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90%E4%B8%8E%E8%A7%A3%E5%86%B3"/>
	<link rel="alternate" type="text/html" href="https://www.mywiki.cn/Hovercool/index.php?title=Seafile%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90%E4%B8%8E%E8%A7%A3%E5%86%B3&amp;action=history"/>
	<updated>2026-09-01T04:48:41Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.mywiki.cn/Hovercool/index.php?title=Seafile%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90%E4%B8%8E%E8%A7%A3%E5%86%B3&amp;diff=162956&amp;oldid=prev</id>
		<title>2026年6月16日 (二) 09:24 Hovercool</title>
		<link rel="alternate" type="text/html" href="https://www.mywiki.cn/Hovercool/index.php?title=Seafile%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90%E4%B8%8E%E8%A7%A3%E5%86%B3&amp;diff=162956&amp;oldid=prev"/>
		<updated>2026-06-16T09:24:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年6月16日 (二) 09:24的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l277&quot;&gt;第277行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第277行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 检查同步状态&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 检查同步状态&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;seaf-cli status&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;seaf-cli status&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# 如果上述命令出错，先启动&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;$ seaf-cli start&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 检查同步目录&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# 检查同步目录&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hovercool</name></author>
	</entry>
	<entry>
		<id>https://www.mywiki.cn/Hovercool/index.php?title=Seafile%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90%E4%B8%8E%E8%A7%A3%E5%86%B3&amp;diff=162826&amp;oldid=prev</id>
		<title>2026年6月8日 (一) 19:15 Hovercool</title>
		<link rel="alternate" type="text/html" href="https://www.mywiki.cn/Hovercool/index.php?title=Seafile%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98%E5%88%86%E6%9E%90%E4%B8%8E%E8%A7%A3%E5%86%B3&amp;diff=162826&amp;oldid=prev"/>
		<updated>2026-06-08T19:15:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;markdown style=&amp;quot;gemini&amp;quot;&amp;gt;&lt;br /&gt;
# Seafile 同步问题分析与解决&lt;br /&gt;
&lt;br /&gt;
&amp;gt; 日期：2026-06-09&lt;br /&gt;
&amp;gt; 服务器：Ubuntu 24.04&lt;br /&gt;
&amp;gt; 服务端：自建 Seafile 服务器&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 一、问题现象&lt;br /&gt;
&lt;br /&gt;
SeaDrive FUSE 挂载盘文件不同步：&lt;br /&gt;
- 服务端已删除的文件在挂载盘上仍然显示&lt;br /&gt;
- 服务端 head_commit_id 与本地 master 不一致&lt;br /&gt;
- 进程只有 3 个线程（2 FUSE + 1 主线程），没有同步工作线程&lt;br /&gt;
- seadrive 反复重启（每几秒一次），日志中不断出现 `Starting SeaDrive client` 和 `rpc server started`&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 二、排查过程（详细）&lt;br /&gt;
&lt;br /&gt;
### 2.1 第一轮：查看运行状态和日志&lt;br /&gt;
&lt;br /&gt;
**操作：**&lt;br /&gt;
```bash&lt;br /&gt;
systemctl status seadrive&lt;br /&gt;
ps aux | grep seadrive&lt;br /&gt;
tail -f /home/openclaw/.seadrive/log&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**发现：**&lt;br /&gt;
- seadrive 进程在运行，但日志中有大量 SSL 错误&lt;br /&gt;
- 进程反复重启，systemd `Restart=on-failure` 导致 crash-loop&lt;br /&gt;
- 日志显示 seadrive 在启动后立即退出，systemd 10 秒后重新拉起&lt;br /&gt;
&lt;br /&gt;
### 2.2 SSL 证书问题&lt;br /&gt;
&lt;br /&gt;
**日志报错：**&lt;br /&gt;
```&lt;br /&gt;
http-tx-mgr.c(557): libcurl failed to GET https://&amp;lt;server&amp;gt;/api2/repos/:&lt;br /&gt;
  Problem with the SSL CA cert (path? access rights?).&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**排查过程：**&lt;br /&gt;
1. 用系统 curl 测试 `curl https://&amp;lt;server&amp;gt;/api2/ping/` → ✅ 正常&lt;br /&gt;
2. 检查 seadrive 进程的环境变量 → `SEAFILE_SSL_CA_PATH` 未设置&lt;br /&gt;
3. 查看 seadrive 源码中 `load_ca_bundle()` 函数 → 读取 `SEAFILE_SSL_CA_PATH` 环境变量&lt;br /&gt;
4. 检查 AppImage 打包的 libcurl → 链接了自带的 OpenSSL 1.1，不是系统 OpenSSL 3.0&lt;br /&gt;
&lt;br /&gt;
**解决：** 在 systemd service 中添加：&lt;br /&gt;
```&lt;br /&gt;
Environment=&amp;quot;SEAFILE_SSL_CA_PATH=/etc/ssl/certs/ca-certificates.crt&amp;quot;&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**验证：** 重启后 SSL 错误消失（日志中不再出现），且通过 `/proc/&amp;lt;pid&amp;gt;/fd/` 确认 seadrive 打开了 CA 证书文件。&lt;br /&gt;
&lt;br /&gt;
### 2.3 同步不工作 — 深入分析&lt;br /&gt;
&lt;br /&gt;
SSL 问题解决后，seadrive 不再报错，但文件仍然不同步。&lt;br /&gt;
&lt;br /&gt;
**排查步骤：**&lt;br /&gt;
&lt;br /&gt;
#### 步骤 1：检查进程线程数&lt;br /&gt;
```bash&lt;br /&gt;
ps -T -p &amp;lt;seadrive_pid&amp;gt;&lt;br /&gt;
```&lt;br /&gt;
→ 只有 3 个线程（2 FUSE + 1 主线程），没有 glib 线程池工作线程&lt;br /&gt;
&lt;br /&gt;
#### 步骤 2：检查网络连接&lt;br /&gt;
```bash&lt;br /&gt;
ls -la /proc/&amp;lt;pid&amp;gt;/fd/ | grep socket&lt;br /&gt;
ss -tnp | grep seadrive&lt;br /&gt;
```&lt;br /&gt;
→ 只有本地监听 socket（RPC server），**没有 TCP 连接到 seafile 服务器**&lt;br /&gt;
&lt;br /&gt;
说明 sync-mgr 根本没有发起 HTTP 请求。&lt;br /&gt;
&lt;br /&gt;
#### 步骤 3：查看 seadrive 源码中 sync-mgr 的启动路径&lt;br /&gt;
&lt;br /&gt;
下载 seadrive-fuse 源码，追踪调用链：&lt;br /&gt;
&lt;br /&gt;
**seadrive.c (main 函数)：**&lt;br /&gt;
```c&lt;br /&gt;
// 在子线程中运行 seafile 会话&lt;br /&gt;
pthread_create(&amp;amp;tid, &amp;amp;attr, seafile_session_thread, NULL);&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**seafile-session.c：**&lt;br /&gt;
```c&lt;br /&gt;
void seafile_session_start(SeafileSession *session) {&lt;br /&gt;
    on_start_cleanup(session);          // 提交清理 job&lt;br /&gt;
    event_base_loop(session-&amp;gt;ev_base, 0);  // 进入事件循环&lt;br /&gt;
}&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**关键发现：** `on_start_cleanup` 通过 job manager 提交一个清理任务，任务完成后回调 `cleanup_job_done`，而 **`seaf_sync_manager_start()` 正是在 `cleanup_job_done` 里被调用的！**&lt;br /&gt;
&lt;br /&gt;
```c&lt;br /&gt;
static void cleanup_job_done(void *vdata) {&lt;br /&gt;
    http_tx_manager_start(session-&amp;gt;http_tx_mgr);&lt;br /&gt;
    seaf_sync_manager_start(session-&amp;gt;sync_mgr);  // ← 同步定时器在这里启动&lt;br /&gt;
    seaf_repo_manager_start(session-&amp;gt;repo_mgr);&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
#### 步骤 4：查看 job 提交机制&lt;br /&gt;
&lt;br /&gt;
**job-mgr.c：**&lt;br /&gt;
```c&lt;br /&gt;
SeafJobManager *seaf_job_manager_new(SeafileSession *session, int max_threads) {&lt;br /&gt;
    mgr-&amp;gt;thread_pool = g_thread_pool_new(job_thread_wrapper, NULL,&lt;br /&gt;
                                          max_threads, FALSE, NULL);&lt;br /&gt;
    // 第5个参数传 NULL！不检查错误！&lt;br /&gt;
    return mgr;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int job_thread_create(SeafJob *job) {&lt;br /&gt;
    g_thread_pool_push(job-&amp;gt;manager-&amp;gt;thread_pool, job, NULL);&lt;br /&gt;
    // 如果 thread_pool 是 NULL，push 静默失败&lt;br /&gt;
    event_base_once(session-&amp;gt;ev_base, job-&amp;gt;pipefd[0], EV_READ, job_done_cb, job, NULL);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**根因确认：** `g_thread_pool_new` 返回 NULL → `thread_pool` 为 NULL → `g_thread_pool_push` 静默失败 → 清理 job 不执行 → `cleanup_job_done` 不调用 → sync-mgr 定时器不启动。&lt;br /&gt;
&lt;br /&gt;
#### 步骤 5：验证 GLib 版本&lt;br /&gt;
&lt;br /&gt;
用 Python ctypes 测试 AppImage 自带的 GLib：&lt;br /&gt;
```python&lt;br /&gt;
glib = ctypes.CDLL(&amp;quot;/tmp/squashfs-root/usr/lib/libglib-2.0.so.0&amp;quot;)&lt;br /&gt;
glib_major_version.value  # → 2&lt;br /&gt;
glib_minor_version.value  # → 66&lt;br /&gt;
glib_micro_version.value  # → 8&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**AppImage 打包的 GLib 版本：2.66.8（2020年发布）**&lt;br /&gt;
**系统 GLib 版本：2.80.0（Ubuntu 24.04 自带）**&lt;br /&gt;
&lt;br /&gt;
### 2.4 两个 seadrive 进程之谜&lt;br /&gt;
&lt;br /&gt;
**现象：** 每次启动 seadrive 都会产生两个进程：&lt;br /&gt;
```&lt;br /&gt;
/usr/local/bin/seadrive ...          # wrapper 进程&lt;br /&gt;
/tmp/.mount_seadriXXXXX/usr/bin/seadrive ...  # 真正的 seadrive&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**原因：** AppImage 的运行机制。&lt;br /&gt;
1. 执行 AppImage 文件&lt;br /&gt;
2. AppImage runtime 自动将自身挂载到 `/tmp/.mount_seadriXXXXX/`（只读 FUSE 挂载）&lt;br /&gt;
3. 从挂载点执行真正的二进制&lt;br /&gt;
4. wrapper 进程监控子进程状态&lt;br /&gt;
&lt;br /&gt;
**验证：** `pkill` 杀掉子进程后，wrapper 检测到子进程退出，自动重新拉起，产生新的挂载点。&lt;br /&gt;
&lt;br /&gt;
### 2.5 LD_PRELOAD 方案尝试&lt;br /&gt;
&lt;br /&gt;
尝试用系统 GLib 覆盖 AppImage 自带的旧版：&lt;br /&gt;
&lt;br /&gt;
```ini&lt;br /&gt;
Environment=&amp;quot;LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0&amp;quot;&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**结果：** LD_PRELOAD 生效（`/proc/pid/maps` 确认加载了系统 GLib），但线程数仍然为 3。说明问题不仅是 GLib 版本，可能和 AppImage 的挂载环境、libcurl/OpenSSL 的初始化路径也有关系。&lt;br /&gt;
&lt;br /&gt;
### 2.6 多版本兼容性测试&lt;br /&gt;
&lt;br /&gt;
从 GitHub Releases 和 seafile 官方下载站下载了多个版本逐一测试：&lt;br /&gt;
&lt;br /&gt;
| 版本 | 类型 | 大小 | 守护进程版本 | GLib | 线程数 | 结果 |&lt;br /&gt;
|------|------|------|-------------|------|--------|------|&lt;br /&gt;
| v3.0.12 GUI | AppImage | 161MB | 2.0.16 | 2.66.8 | 3 | ❌ 启动失败 |&lt;br /&gt;
| v3.0.12 CLI | AppImage | 13MB | 2.0.16 | 2.66.8 | 3 | ❌ 同步不工作 |&lt;br /&gt;
| v3.0.17 CLI | AppImage | 13MB | 3.0.17 | 2.66.8 | 3 | ❌ 同步不工作 |&lt;br /&gt;
| v3.0.21 CLI | AppImage | 13MB | 3.0.21 | 2.66.8 | 3 | ❌ 同步不工作 |&lt;br /&gt;
| v3.0.22 GUI | AppImage | 154MB | 3.0.22 | 2.66.8 | 3 | ❌ 同步不工作 |&lt;br /&gt;
| v3.0.22 CLI | AppImage | 13MB | 3.0.22 | 2.66.8 | — | ❌ core dump |&lt;br /&gt;
| v3.0.23 CLI | 未下载 | — | — | 2.66.8(预计) | — | 未测试(预期一致) |&lt;br /&gt;
&lt;br /&gt;
**测试方法：** 每个版本替换 seadrive 二进制，启动后等待 35 秒（sync-mgr 的 repo list 更新间隔），检查线程数和日志。&lt;br /&gt;
&lt;br /&gt;
**结论：** 所有 AppImage 版本都用 Ubuntu 20.04 构建环境 + GLib 2.66.8，线程池问题普遍存在。&lt;br /&gt;
&lt;br /&gt;
### 2.7 关于某次手动启动正常的原因&lt;br /&gt;
&lt;br /&gt;
之前文档提到某次手动启动（非 systemd）同步正常。分析可能原因：&lt;br /&gt;
- 手动启动时的环境变量（PATH、LD_LIBRARY_PATH 等）与 systemd 不同&lt;br /&gt;
- 手动启动时终端会话的 cgroup/资源限制不同&lt;br /&gt;
- 但后续无法复现，且所有 AppImage 版本在 systemd 下都有问题&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 三、最终方案：seafile-daemon + seafile-cli&lt;br /&gt;
&lt;br /&gt;
### 3.1 seadrive vs seafile-daemon 详细对比&lt;br /&gt;
&lt;br /&gt;
| 对比维度 | seadrive (AppImage) | seafile-daemon (apt) |&lt;br /&gt;
|---------|-------------------|---------------------|&lt;br /&gt;
| **本质** | FUSE 虚拟挂载盘 | 传统文件同步客户端 |&lt;br /&gt;
| **工作方式** | 按需拉取，文件在访问时才下载 | 全量同步到本地目录 |&lt;br /&gt;
| **本地占用** | 小（仅缓存访问过的文件） | 大（所有文件完整副本） |&lt;br /&gt;
| **离线可用** | 仅缓存过的文件 | 所有已同步文件 |&lt;br /&gt;
| **双向同步** | ✅ | ✅ |&lt;br /&gt;
| **安装方式** | 手动下载 AppImage | `apt install` |&lt;br /&gt;
| **依赖管理** | 自包含（打包了 GLib/OpenSSL/curl 等） | 系统包管理 |&lt;br /&gt;
| **GLib 版本** | 2.66.8（2020年，自带的） | 2.80.0（系统） |&lt;br /&gt;
| **OpenSSL** | 1.1（自带的） | 3.0（系统） |&lt;br /&gt;
| **线程池** | ❌ 不工作 | ✅ 正常（7+ 线程） |&lt;br /&gt;
| **稳定性** | ❌ crash-loop | ✅ 稳定 |&lt;br /&gt;
| **二进制大小** | 13MB（CLI）~ 161MB（GUI） | 404KB（daemon） |&lt;br /&gt;
| **进程模型** | wrapper + 子进程（2个） | 单进程 |&lt;br /&gt;
| **适用场景** | 节省磁盘空间、按需访问 | 全量同步、离线可用 |&lt;br /&gt;
&lt;br /&gt;
### 3.2 安装与配置步骤&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
# 1. 安装系统包&lt;br /&gt;
sudo apt-get install -y seafile-daemon seafile-cli&lt;br /&gt;
&lt;br /&gt;
# 2. 初始化数据目录&lt;br /&gt;
mkdir -p /home/&amp;lt;user&amp;gt;/.seafile-data&lt;br /&gt;
echo &amp;quot;/home/&amp;lt;user&amp;gt;/.seafile-data&amp;quot; &amp;gt; /home/&amp;lt;user&amp;gt;/.ccnet/seafile.ini&lt;br /&gt;
&lt;br /&gt;
# 3. 启动守护进程&lt;br /&gt;
seaf-cli start&lt;br /&gt;
&lt;br /&gt;
# 4. 查看远程仓库列表&lt;br /&gt;
seaf-cli list-remote -s https://&amp;lt;server&amp;gt; \&lt;br /&gt;
  -u &amp;lt;username&amp;gt; \&lt;br /&gt;
  -T &amp;lt;token&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# 5. 同步指定仓库到本地&lt;br /&gt;
seaf-cli sync -l &amp;lt;library_id&amp;gt; \&lt;br /&gt;
  -s https://&amp;lt;server&amp;gt; \&lt;br /&gt;
  -u &amp;lt;username&amp;gt; \&lt;br /&gt;
  -T &amp;lt;token&amp;gt; \&lt;br /&gt;
  -d /home/&amp;lt;user&amp;gt;/SeaFile&lt;br /&gt;
&lt;br /&gt;
# 6. 查看同步状态&lt;br /&gt;
seaf-cli status&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
### 3.3 开机自启配置&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
sudo tee /etc/systemd/system/seafile-daemon.service &amp;lt;&amp;lt; &amp;#039;EOF&amp;#039;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Seafile daemon&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=forking&lt;br /&gt;
Environment=&amp;quot;HOME=/home/&amp;lt;user&amp;gt;&amp;quot;&lt;br /&gt;
ExecStart=/usr/bin/seaf-cli start&lt;br /&gt;
ExecStop=/usr/bin/seaf-cli stop&lt;br /&gt;
User=&amp;lt;user&amp;gt;&lt;br /&gt;
Group=&amp;lt;user&amp;gt;&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
RestartSec=10&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
sudo systemctl daemon-reload&lt;br /&gt;
sudo systemctl enable seafile-daemon&lt;br /&gt;
sudo systemctl start seafile-daemon&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
### 3.4 验证&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
# 检查进程和线程数（正常应有 7+ 线程）&lt;br /&gt;
ps -T -p $(pgrep seaf-daemon)&lt;br /&gt;
&lt;br /&gt;
# 检查同步状态&lt;br /&gt;
seaf-cli status&lt;br /&gt;
&lt;br /&gt;
# 检查同步目录&lt;br /&gt;
ls -la /home/&amp;lt;user&amp;gt;/SeaFile/&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 四、关键文件路径&lt;br /&gt;
&lt;br /&gt;
| 用途 | 路径 |&lt;br /&gt;
|------|------|&lt;br /&gt;
| seafile 数据目录 | `~/.seafile-data/` |&lt;br /&gt;
| seafile 配置目录 | `~/.ccnet/` |&lt;br /&gt;
| seafile 日志目录 | `~/.ccnet/logs/` |&lt;br /&gt;
| 同步目录 | `~/SeaFile/` |&lt;br /&gt;
| seafile-daemon systemd service | `/etc/systemd/system/seafile-daemon.service` |&lt;br /&gt;
| seadrive 二进制（保留备用） | `/usr/local/bin/seadrive` |&lt;br /&gt;
| seadrive 旧 service（已 disable） | `/etc/systemd/system/seadrive.service` |&lt;br /&gt;
| seadrive 配置 | `~/.seadrive/seadrive.conf` |&lt;br /&gt;
| seadrive 日志 | `~/.seadrive/log` |&lt;br /&gt;
| seadrive 数据 | `~/.seadrive/data/` |&lt;br /&gt;
| seadrive-fuse 源码 | `/tmp/seadrive-fuse/` |&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 五、后续注意事项&lt;br /&gt;
&lt;br /&gt;
1. **seadrive 新版可试**：如果官方发布新版 AppImage（用更新的 GLib 构建），可以随时切回去测试&lt;br /&gt;
   ```bash&lt;br /&gt;
   sudo systemctl stop seafile-daemon&lt;br /&gt;
   sudo systemctl enable seadrive&lt;br /&gt;
   sudo systemctl start seadrive&lt;br /&gt;
   ```&lt;br /&gt;
&lt;br /&gt;
2. **AppImage 残留清理**：每次 seadrive 启动会在 `/tmp/.mount_seadri*/` 创建 FUSE 挂载点，crash 后会残留&lt;br /&gt;
   ```bash&lt;br /&gt;
   sudo umount -l /tmp/.mount_seadri* 2&amp;gt;/dev/null&lt;br /&gt;
   ```&lt;br /&gt;
&lt;br /&gt;
3. **seafile-daemon 日志**：`~/.ccnet/logs/`&lt;br /&gt;
&lt;br /&gt;
4. **token 管理**：seafile token 长期有效，更换时需要重新获取&lt;br /&gt;
&lt;br /&gt;
5. **切换回 seadrive 测试**：&lt;br /&gt;
   ```bash&lt;br /&gt;
   sudo systemctl stop seafile-daemon&lt;br /&gt;
   sudo systemctl disable seafile-daemon&lt;br /&gt;
   sudo systemctl enable seadrive&lt;br /&gt;
   sudo systemctl start seadrive&lt;br /&gt;
   ```&lt;br /&gt;
   恢复 seafile-daemon：&lt;br /&gt;
   ```bash&lt;br /&gt;
   sudo systemctl stop seadrive&lt;br /&gt;
   sudo systemctl disable seadrive&lt;br /&gt;
   sudo systemctl enable seafile-daemon&lt;br /&gt;
   sudo systemctl start seafile-daemon&lt;br /&gt;
   ```&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/markdown&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hovercool</name></author>
	</entry>
</feed>