📂 一键脚本 FTP/SFTP 自动备份 & 管理工具完整教程(多账号 + 定时 + 远程浏览/下载/删除)
__2025年12月4日 __3条评论 __331次阅读 __0人点赞 __Tao_Qi
前言
在服务器上,最怕的就是:
- 服务器崩了
- 硬盘挂了
- 网站文件没备份
- 想恢复,发现啥都没有了……
- 宝塔等备份莫名没备份上全备份自己服务器上,硬盘爆了
为了解决「自己文件自己掌控 」的问题,我们写了一个纯 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,浏览/下载/上传/删除/备份逻辑完全一致。
- *
⚡ 快速安装
[code]
bash <(curl -L https://raw.githubusercontent.com/hiapb/ftp/main/back.sh)
[/code]
脚本会自动:
- 检查依赖(lftp、crontab)
- 如使用
<(curl ...),自动保存到/root/back.sh - 自动赋予执行权限
后续进入主菜单:
[code]
bash /root/back.sh
[/code]
- *
🧭 主菜单功能说明
启动后界面如下:
[code]
=======================================
🌐 FTP 备份工具(多账号版)
=======================================
🔐 FTP 账号:已配置 X 个
1) 📂 管理 FTP/SFTP 账号
2) ➕ 新建备份任务
3) 📋 查看/立即执行备份任务
4) 🗑 删除备份任务
5) 🧹 卸载
0) ❎ 退出
[/code]
说明:
- 1)账号管理 :新增/查看/删除账号 & 远程操作
- 2)新建备份任务 :设置本地路径 → 远程目录 → 定时方式
- 3)查看/执行任务 :可手动执行其中任意任务
- 4)删除任务 :从 crontab 移除
- 5)卸载 :删除配置、任务、脚本本体
- 0)退出
- *
🔐 FTP / FTPS / SFTP 账号管理
进入:
[code]
1) 📂 管理 FTP/SFTP 账号
[/code]
菜单:
[code]
1) ➕ 新增账号
2) 📋 查看账号列表
3) 🗑 删除账号
4) 🔍 使用账号浏览/下载/删除远程文件
0) 返回
[/code]
- *
1️⃣ 新增账号
输入:
- 协议(FTP / FTPS / SFTP)
- 账号名称(如 main/web1/db1)
- 主机名
- 端口(FTP/FTPS 默认 21,SFTP 默认 22)
- 用户名
- 密码
保存位置:
[code]
~/.ftp_backup_tool/accounts/.conf
[/code]
示例:
[code]
ACCOUNT_ID="web1"
FTP_HOST="ftp.example.com"
FTP_PORT="21"
FTP_USER="user"
FTP_PASS="password"
FTP_PROTO="ftp"
[/code]
- *
2️⃣ 查看账号列表
显示类似:
[code]
[1] 账号:main | 协议:FTP | 主机:ftp.example.com | 用户:user
[2] 账号:server | 协议:SFTP | 主机:1.2.3.4 | 用户:root
[/code]
- *
3️⃣ 删除账号(含关联任务)
删除账号会自动删掉:
- 配置文件
- 所有带
# FTP_BACKUP[ACCOUNT_ID]的定时任务
- *
🌍 使用账号浏览 / 下载 / 删除远程文件
进入远程操作菜单:
[code]
1) 📁 列出目录
2) 📥 下载文件
3) 📥 下载目录
4) ❌ 删除文件/目录
5) ⚠ 删除整个目录
0) 返回
[/code]
- *
1️⃣ 列出目录
输入路径:
- 根目录:
/ - 子目录:
/wwwroot - 自动过滤
.和..
- *
2️⃣ 下载远程文件
输入:
- 远程目录(如
/wwwroot或/) - 远程文件名
- 本地保存目录(自动创建)
使用 lftp:
[code]
get "文件名" -o "本地路径"
[/code]
- *
3️⃣ 下载远程目录
例如:
- 远程目录:
/site - 本地目录:
/root/site_bak
内部执行:
[code]
mirror "/site" "/root/site_bak"
[/code]
- *
4️⃣ 删除远程文件(支持删除目录名)
输入:
- 远程目录
- 文件或目录名(都能删)
执行:
[code]
rm -r "名称"
[/code]
支持删目录,不再出现 FTP 的 “550 Is a directory”。
- *
5️⃣ 删除整个远程目录
输入目录路径,如:
[code]
/backup/old
[/code]
禁止删除根目录 /。
- *
💾 新建备份任务(本地 → FTP/SFTP)
进入:
[code]
2) ➕ 新建备份任务
[/code]
步骤:
- 输入本地路径(文件/目录)
- 输入远程目录
- 选择账号
选择定时方式
- 每天固定时间(时:分)
- 每隔 N 分钟
- 是否立即执行一次
- *
备份逻辑
📂 本地目录 → 远程目录(mirror -R)
[code]
mirror -R "本地目录" "远程目录"
[/code]
📄 本地文件 → 远程目录(put)
[code]
put "本地文件" -o "文件名"
[/code]
- *
⏰ 查看 / 立即执行任务
展示所有:
[code]
*/10 * * * * bash /root/back.sh run xxx ... # FTP_BACKUP[xxx]
[/code]
你可以选择某条任务立即执行。
- *
🗑 删除备份任务
从 crontab 移除选中的任务即可。
- *
🧹 卸载工具(彻底清理)
功能:
- 清理所有
# FTP_BACKUP任务 - 删除
~/.ftp_backup_tool/ - 删除脚本
/root/back.sh
卸载后完全无残留。
- *
✅ 使用建议与技巧
路径带空格时:
[code]
ln -s "/path/with space" /root/path_nospace
[/code]
建议账号分类:
web_backup:网站db_backup:数据库config_backup:配置文件
数据库备份示例:
mysqldump导出到/root/db_bak/db.sql- 本脚本同步
/root/db_bak/到 FTP
- *
🎉 总结
这个脚本能让你:
- 轻松管理多个 FTP/SFTP 账号
- 自动定时备份本地文件/目录
- 浏览、下载、删除远程文件
- 一键下载远程整个目录
- 一键卸载无残留
- 完整支持 FTP / FTPS / SFTP
非常适合:
- VPS 用户
- 网站站长
- 需要异地备份的人
- 任何习惯 FTP/SFTP 同步的人
让备份真正变成「自动、可控、可靠」。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可
__ __ __ __ __ __ 打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
__No Tag
最后编辑:2025年12月4日
好东西
好帖
ftp?
发表回复 取消回复
电子邮件地址不会被公开。必填项已用 * 标注
__
*
__
*
__
*
__