Skip to content

xjxjin/alist-sync

Repository files navigation

Alist-Sync

一个基于 Web 界面的 Alist 存储同步工具,支持多任务管理、定时同步、差异处理等功能。

github tag docker pulls docker image size
如果好用,请Star!非常感谢! GitHub Gitee DockerHub

功能特点

  • 📱 美观的 Web 管理界面
  • 🔄 支持多任务管理
  • ⏰ 支持 Cron 定时任务
  • 📂 支持数据同步和文件同步两种模式
  • 🗑️ 支持多种差异处理策略(保留/移动到回收站/删除)
  • 📝 详细的同步日志记录
  • 🔒 支持用户认证和密码管理
  • 🐳 支持 Docker 部署
  • 🐉 支持青龙面板定时任务

快速开始

Docker 部署(推荐)

  1. 创建必要的目录:
mkdir -p /DATA/AppData/alist-sync-web/data 
  1. 创建 docker-compose.yml:
version: '3'

services:
  alist-sync-web:
    image: xjxjin/alist-sync:1.1.1
    container_name: alist-sync
    restart: unless-stopped
    ports:
      - "52441:52441"
    volumes:
      - /DATA/AppData/alist-sync/data:/app/data
    environment:
      - TZ=Asia/Shanghai 
  1. 启动服务:
docker-compose up -d
  1. 访问 Web 界面:

http://localhost:52441

默认登录账号:

  • 用户名:admin
  • 密码:admin

使用说明

1. 基础配置

首次使用需要配置 Alist 的基本连接信息:

  • 服务地址:Alist 服务的访问地址
  • 用户名:Alist 管理员账号
  • 密码:Alist 管理员密码
  • 令牌:Alist 令牌

2. 同步任务配置

支持两种同步模式:

数据同步模式

  • 各个网盘之间同目录数据备份
  • 选择源存储器和目标存储器
  • 配置同步目录
  • 支持排除目录
  • 支持多目标存储同步
  • 参照最后图片

文件同步模式

  • 需要填写全路径
  • 手动配置源路径和目标路径
  • 支持多个路径对
  • 支持排除目录
  • 参照最后图片

文件移动模式

  • 需要填写全路径
  • 手动配置源路径和目标路径
  • 支持多个路径对
  • 支持排除目录
  • 注:文件移动实现方式是先复制到目标路径,然后在下次自动执行任务时,判断目标路径是否已存在文件,如果存在则删除源路径文件

3. 差异处理策略

提供三种差异处理方式:

  • 不处理:保留目标目录中的差异文件
  • 移动到回收站:将差异文件移动到目标存储的回收站(trash)
  • 删除:直接删除目标目录中的差异文件
  • 移动/删除 在有的存储源会失效欢迎提交Issue,我反馈到 Alist 作者

4. 定时任务

  • 支持 Cron 表达式配置定时任务
  • 可查看未来 5 次执行时间
  • 支持立即执行功能

5. 日志查看

  • 支持查看当前日志
  • 支持查看历史日志
  • 日志自动按天切割

配置文件说明

所有配置文件存储在 data/config 目录:

  • alist_sync_base_config.json:基础连接配置
  • alist_sync_sync_config.json:同步任务配置
  • alist_sync_users_config.json:用户认证配置

日志文件存储在 data/log 目录:

  • alist_sync.log:当前日志
  • alist_sync.log.YYYY-MM-DD:历史日志

注意事项

  1. 首次使用请修改默认登录密码
  2. 建议定期备份配置文件
  3. 请确保 Alist 服务正常可访问
  4. 建议先测试连接再保存配置
  5. 可以通过日志查看同步执行情况

青龙使用

点击这里展开/折叠内容

参数

BASE_URL: 服务器基础URL(结尾不带/)
USERNAME: 用户名
PASSWORD: 密码
TOKEN: 令牌
DIR_PAIRS: 源目录和目标目录的配对(源目录和目标目录的配对,用分号隔开,冒号分隔)
CRON_SCHEDULE: 调度日期,参考cron语法   "分 时 日 月 周" 非必填,不填为一次调度
--以下参数用于目标目录有,但源目录不存在的文件处理,可选参数--
SYNC_DELETE_ACTION: 同步删除动作,可选值为move,delete。
当SYNC_DELETE_ACTION设置为move时,文件将移动到trash目录下;比如存储器目录为 /dav/quark,则源目录多余的文件将会移动到/dav/quark/trash 目录下
EXCLUDE_DIRS: 排除目录
MOVE_FILE: 是否移动文件,会删除源目录,且与SYNC_DELETE_ACTION 不能同时生效

国内执行

ql raw https://gitee.com/xjxjin/alist-sync/raw/main/alist-sync-ql.py

国际执行

ql raw https://github.com/xjxjin/alist-sync/raw/main/alist-sync-ql.py

更新记录

v1.1.1

  • 2025-02-06
  • 修复 docker 镜像打包文件缺失

v1.1.0

  • 2025-02-06
  • 新增文件移动功能,由【kuke2733】小哥提供
  • 新增版本号展示
  • 执行前会重新执行失败任务
  • 执行中排除已创建任务文件
  • 修复排除目录会在目标目录创建 bug

v1.0.8

  • 2025-01-09
  • 修复源目录不存在 bug
  • 修复删除模式下目标目录为空判断报错异常
  • 修复页面刷新任务展示异常

v1.0.7

  • 2025-01-08
  • 新增令牌验证
  • 新增导入导出配置文件功能
  • 修复登录后无法显示存储器下拉列表
  • 修改配置文件以 alist_sync开头

v1.0.6

  • 2025-01-07
  • 在删除模式下,修复源目录为空,目标目录多余文件不能正确删除问题
  • 简单适配移动端 UI

v1.0.5

  • 2025-01-05
  • 初始UI版本发布
  • 支持基础的同步功能
  • 支持 Web 界面管理

2024-12-16更新

  • 当源文件和目标文件大小不一致时,如果目标文件修改时间晚于源文件,则跳过覆盖

2024-11-13更新

  • 修复删除目标目录多余文件重复删除问题
  • 优化移动目标目录多余文件到存储器根目录
  • 优化设置多目录,一个目录失败导致所有目录失败问题

2024-09-06更新

  • 新增参数,处理目标目录有多的文件或者文件夹,但是源目录没有的处理方式,功能由【RWDai】小哥提供
  • none 什么也不做
  • move 移动到目标目录下的trash目录
  • delete 真实删除

2024-06-29更新

  • 新增DIR_PAIRS参数个数,最多到50,参数内容和之前一致(源目录和目标目录的配对(源目录和目标目录的配对,用分号隔开,冒号分隔)),参数格式为
  •   DIR_PAIRS
      DIR_PAIRS1
      DIR_PAIRS2
      DIR_PAIRS3
      .....
      DIR_PAIRS50

2024-05-23更新

  • 新增青龙调度

2024-05-13更新

  • 1.新增文件存在判断逻辑
    • 文件名称
    • 文件大小
  • 2.CRON_SCHEDULE 变更为参数可选
    • 当参数不传变更为一次调度,可以配合青龙远程调度

问题反馈

如果您在使用过程中遇到任何问题,请提交 Issue。

警告

  • 在两个目录相互备份的情况下使用删除功能时请格外谨慎。可能导致文件永久丢失,后果自负。

Tips

  • 前端页面均为 AI 生成,使用过程中可能有小瑕疵,欢迎前端大神提交代码修复
  • 初次使用,保存基础配置后,可以点击添加任务,刷新源存储器和目标存储器下拉列表
  • 如果忘记密码,请删除data/config/alist_sync_users_config.json 文件,会默认变成 admin/admin
  • 令牌从 Alist 的 管理-设置-其他 获取,获取后不要重置令牌
  • 有其他新增功能欢迎提交 Issue。
  • 文件同步填写全目录,参照最后面图片
  • 如果无法获取docker镜像,可以参考以下脚本换源,国内执行如下代码
bash <(curl -sSL https://gitee.com/xjxjin/scripts/raw/main/check_docker_registry.sh)
  • 国际执行如下代码
bash <(curl -sSL https://github.com/xjxjin/scripts/raw/main/check_docker_registry.sh)

License

MIT License

数据同步

数据同步

文件同步

文件同步

文件移动

文件移动

令牌获取

令牌获取

查看任务进度

查看任务进度