logo NodeSeekbeta

📂 一键脚本 FTP/SFTP 自动备份 & 管理工具完整教程(多账号 + 定时 + 远程浏览/下载/删除)

前言

在服务器上,最怕的就是:

  • 服务器崩了
  • 硬盘挂了
  • 网站文件没备份
  • 想恢复,发现啥都没有了……
  • 宝塔等备份莫名没备份上全备份自己服务器上,硬盘爆了

为了解决「自己文件自己掌控」的问题,我们写了一个纯 Bash 的 FTP/SFTP 自动备份与管理脚本,支持:

  • 多 FTP / FTPS / SFTP 账号
  • 多备份任务
  • 定时自动备份
  • 手动立即执行备份
  • 浏览远程目录
  • 下载远程文件/目录
  • 删除远程文件/目录
  • 一键卸载(清理配置 + crontab + 脚本本体)

📌 功能总览

功能 说明
多 FTP / FTPS / SFTP 账号 支持三协议,适配各种主机/VPS
多备份任务 每个账号可独立配置多个任务
定时备份 支持每天固定时间、每隔 N 分钟备份
即时执行 新建任务可立即执行一次
远程浏览 直接查看 FTP/SFTP 远程目录结构
远程下载 下载远程文件或目录
远程删除 删除文件/目录,带确认提示
自动保存脚本 支持 bash <(curl ...) 自动落地脚本
一键卸载 清除配置/任务/脚本,干净退出

兼容主流 Linux:Debian、Ubuntu、CentOS、AlmaLinux、Rocky、openSUSE、Arch 等。


🔐 三协议支持(新增完整说明)

脚本多账号完全支持:

1️⃣ FTP(传统)

用于一般虚拟主机、廉价空间等。

2️⃣ FTPS(FTP over SSL/TLS)

适合需要传输加密的网站空间:

  • 自动开启 SSL 强制加密
  • 自动保护数据通道
  • 自动 TLS AUTH
  • 登录方式与 FTP 一样,只是连接加密

3️⃣ SFTP(基于 SSH)

适合 VPS / 服务器 / OpenWrt / NAS:

  • 自动 SSH 连接
  • 自动跳过 host key 确认
  • 端口默认 22,可自定义
  • 不依赖 FTP 服务,安全性更高

✔ 无论 FTP/FTPS/SFTP,浏览/下载/上传/删除/备份逻辑完全一致。


⚡ 快速安装

bash <(curl -L https://raw.githubusercontent.com/hiapb/ftp/main/back.sh)

脚本会自动:

  • 检查依赖(lftp、crontab)
  • 如使用 <(curl ...),自动保存到 /root/back.sh
  • 自动赋予执行权限

后续进入主菜单:

bash /root/back.sh

🧭 主菜单功能说明

启动后界面如下:

=======================================
🌐 FTP 备份工具(多账号版)
=======================================

🔐 FTP 账号:已配置 X 个

1) 📂 管理 FTP/SFTP 账号
2) ➕ 新建备份任务
3) 📋 查看/立即执行备份任务
4) 🗑 删除备份任务
5) 🧹 卸载
0) ❎ 退出

说明:

  • 1)账号管理:新增/查看/删除账号 & 远程操作
  • 2)新建备份任务:设置本地路径 → 远程目录 → 定时方式
  • 3)查看/执行任务:可手动执行其中任意任务
  • 4)删除任务:从 crontab 移除
  • 5)卸载:删除配置、任务、脚本本体
  • 0)退出

🔐 FTP / FTPS / SFTP 账号管理

进入:

1) 📂 管理 FTP/SFTP 账号

菜单:

1) ➕ 新增账号
2) 📋 查看账号列表
3) 🗑 删除账号
4) 🔍 使用账号浏览/下载/删除远程文件
0) 返回

1️⃣ 新增账号

输入:

  • 协议(FTP / FTPS / SFTP)
  • 账号名称(如 main/web1/db1)
  • 主机名
  • 端口(FTP/FTPS 默认 21,SFTP 默认 22)
  • 用户名
  • 密码

保存位置:

~/.ftp_backup_tool/accounts/<ACCOUNT_ID>.conf

示例:

ACCOUNT_ID="web1"
FTP_HOST="ftp.example.com"
FTP_PORT="21"
FTP_USER="user"
FTP_PASS="password"
FTP_PROTO="ftp"

2️⃣ 查看账号列表

显示类似:

[1] 账号:main | 协议:FTP | 主机:ftp.example.com | 用户:user
[2] 账号:server | 协议:SFTP | 主机:1.2.3.4 | 用户:root

3️⃣ 删除账号(含关联任务)

删除账号会自动删掉:

  • 配置文件
  • 所有带 # FTP_BACKUP[ACCOUNT_ID] 的定时任务

🌍 使用账号浏览 / 下载 / 删除远程文件

进入远程操作菜单:

1) 📁 列出目录
2) 📥 下载文件
3) 📥 下载目录
4) ❌ 删除文件/目录
5) ⚠ 删除整个目录
0) 返回

1️⃣ 列出目录

输入路径:

  • 根目录:/
  • 子目录:/wwwroot
  • 自动过滤 ...

2️⃣ 下载远程文件

输入:

  • 远程目录(如 /wwwroot/
  • 远程文件名
  • 本地保存目录(自动创建)

使用 lftp:

get "文件名" -o "本地路径"

3️⃣ 下载远程目录

例如:

  • 远程目录:/site
  • 本地目录:/root/site_bak

内部执行:

mirror "/site" "/root/site_bak"

4️⃣ 删除远程文件(支持删除目录名)

输入:

  • 远程目录
  • 文件或目录名(都能删)

执行:

rm -r "名称"

支持删目录,不再出现 FTP 的 “550 Is a directory”。


5️⃣ 删除整个远程目录

输入目录路径,如:

/backup/old

禁止删除根目录 /


💾 新建备份任务(本地 → FTP/SFTP)

进入:

2) ➕ 新建备份任务

步骤:

  1. 输入本地路径(文件/目录)
  2. 输入远程目录
  3. 选择账号
  4. 选择定时方式
    • 每天固定时间(时:分)
    • 每隔 N 分钟
  5. 是否立即执行一次

备份逻辑

📂 本地目录 → 远程目录(mirror -R)

mirror -R "本地目录" "远程目录"

📄 本地文件 → 远程目录(put)

put "本地文件" -o "文件名"

⏰ 查看 / 立即执行任务

展示所有:

*/10 * * * * bash /root/back.sh run xxx ... # FTP_BACKUP[xxx]

你可以选择某条任务立即执行。


🗑 删除备份任务

从 crontab 移除选中的任务即可。


🧹 卸载工具(彻底清理)

功能:

  • 清理所有 # FTP_BACKUP 任务
  • 删除 ~/.ftp_backup_tool/
  • 删除脚本 /root/back.sh

卸载后完全无残留。


✅ 使用建议与技巧

路径带空格时:

ln -s "/path/with space" /root/path_nospace

建议账号分类:

  • web_backup:网站
  • db_backup:数据库
  • config_backup:配置文件

数据库备份示例:

  • mysqldump 导出到 /root/db_bak/db.sql
  • 本脚本同步 /root/db_bak/ 到 FTP

🎉 总结

这个脚本能让你:

  • 轻松管理多个 FTP/SFTP 账号
  • 自动定时备份本地文件/目录
  • 浏览、下载、删除远程文件
  • 一键下载远程整个目录
  • 一键卸载无残留
  • 完整支持 FTP / FTPS / SFTP

非常适合:

  • VPS 用户
  • 网站站长
  • 需要异地备份的人
  • 任何习惯 FTP/SFTP 同步的人

让备份真正变成「自动、可控、可靠」。

博客该文章地址

12
  • 好东西 ac01

  • xhj003 好帖

  • ftp?

  • @chy #3 对 因为买了bbr 7美元一年的存储盒,不想他浪费

  • @Whites #4 我也买了还没用,应该有支持rsync吧

  • 优秀,已点赞加鸡腿收藏

  • 我之前和ai聊,ai一直说ftp不安全,说至少也得用ftps,不知道到底安不安全 ac04

  • 先收藏

  • ftp明文传输有风险 xhj001
    换sftp怎么样,还能有证书验证

  • 好帖,顶

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有43594位seeker

🎉欢迎新用户🎉