docker 安装 sftpgo
sftpgo 简介
sftpgo 是一个功能齐全且高度可配置的 SFTP 服务器,具有可选的 HTTP/S、FTP/S 和 WebDAV 支持。支持多种存储后端:本地文件系统、加密本地文件系统、S3(兼容)对象存储、Google 云存储、Azure Blob 存储、SFTP。

官方网站:https://sftpgo.com/
项目地址:https://github.com/drakkan/sftpgo
sftpgo 安装
准备一台linux服务器,以ubuntu 22.04 server为例,已安装docker环境。
创建sftpgo数据存储目录
mkdir -p /data/sftpgo/{data,home}
chown -R 1000:1000 /data/sftpgo/
说明:
SFTPGo 使用两个主要卷:
/srv/sftpgo处理持久数据。 SFTP/FTP/WebDAV 用户的默认主目录是 /srv/sftpgo/data/ 。/var/lib/sftpgo是容器内定义的 sftpgo 系统用户的主目录。这也是容器工作目录,使用默认配置时将在此处创建主机密钥。
运行sftpgo容器
docker run -d --name sftpgo \--restart always \-p 8080:8080 \-p 2022:2022 \-p 8090:8090 \--mount type=bind,source=/data/sftpgo/data,target=/srv/sftpgo \--mount type=bind,source=/data/sftpgo/home,target=/var/lib/sftpgo \-e TZ=Asia/Shanghai \-e SFTPGO_HTTPD__BINDINGS__0__PORT=8080 \-e SFTPGO_WEBDAVD__BINDINGS__0__PORT=8090 \drakkan/sftpgo:v2.5.4
SFTPGo 使用以下默认配置的 TCP 端口:
2022用于 SFTP 服务。8080用于 Web 管理员用户界面。8090用于webdav
查看容器运行状态
root@ubuntu:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44d9d989172c drakkan/sftpgo:v2.5.4 "sftpgo serve" 3 hours ago Up 3 hours 0.0.0.0:2022->2022/tcp, :::2022->2022/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:8090->8090/tcp, :::8090->8090/tcp sftpgo
访问Web GUI
访问其 Web GUI。为此,只需打开本地系统浏览器并将其指向已安装 SFTPGo 的服务器或桌面 IP 地址,端口号为 8080。
例如:
http://server-ip-addres:8080
创建管理员用户
访问 Web GUI 后,它会要创建一个管理员帐户。

创建sftp新用户
一旦拥有了 SFTPGo 的仪表板,就可以创建一个新用户来使用任何 Web 或本地客户端(例如 Filezilla)访问存储数据。单击“用户”选项。之后点击 + 图标。

添加要使用的用户名和密码。如果需要,还可以添加公钥。
如果使用本地文件系统可以选择local,而其他选项(例如 AWS S3 和 Google 云存储)也可用。

不指定Home Dir时默认为/srv/sftpgo/data/admin1,这里保持默认。
访问用户 Web 客户端界面
在浏览器中访问以下网址,并使用新用户帐户详细信息登录
http://192.168.72.16:8080/web/client
登录界面如下:

在这里用户可以轻松上传和下载文件。

测试sftp连接
使用sftp命令测试连接
现在测试新用户,linux操作系统默认自带sftp命令,在linux客户端测试连接sftpgo服务器。
连接后可以执行help命令查看支持的参数,使用put或get指令上传下载文件。
root@ubuntu:~# sftp -P 2022 admin1@192.168.72.16
The authenticity of host '[192.168.72.16]:2022 ([192.168.72.16]:2022)' can't be established.
ED25519 key fingerprint is SHA256:Op+5ORK2iLBucnxiL6xRnfPl+D+wXURVS7qOk4WeUMM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[192.168.72.16]:2022' (ED25519) to the list of known hosts.
(admin1@192.168.72.16) Password:
Connected to 192.168.72.16.
sftp>
使用winscp客户端测试连接
输入在SFTPGo上创建的用户名和密码,端口使用2022。示例配置如下:

使用raidrive客户端测试连接,该工具支持sftp、webdav等各种连接方式。

本地 windows 此电脑 中可以将sftp作为本地磁盘使用

SFTPGo挂载为WebDav
那些想要像使用其他本地磁盘一样使用远程服务器存储文件系统的人可以在 SFTPGo 的帮助下将其挂载为 WebDav。
在 Windows 上挂载 WebDav
首先,在系统注册表中进行一些更改。按 Win+R 键并输入 regedit 打开注册表。切换到以下路径
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
现在,双击“BasicAuthLevel”,将值 1 更改为 2。按确定按钮。
重新启动 WebDav 服务:
以管理员身份运行 PowerShell 并一一键入给定的命令。
net stop webclient
net start webclient
转至此电脑或 Windows 上的我的电脑,然后从菜单中选择“映射网络驱动器”。

以下格式输入 SFTPGo 的地址以及端口号。
http://server-ip:8090
当它要求输入用户名和密码时,请执行此操作。

很快就会像系统上的任何本地驱动器一样安装该驱动器。

在 Linux 上挂载 WebDav
在linux客户端 安装davfs2, 以ubuntu 为例
root@ubuntu:~# apt install -y davfs2
root@ubuntu:~# mount.davfs -V
创建挂载目录
$ sudo mkdir /mnt/dav
使用 mount 命令挂载WebDAV 共享目录,提供 SFTPGo 上创建的用户名和密码
mount -t davfs -o noexec http://192.168.72.40:8090 /mnt/dav/
查看挂载结果
root@ubuntu:~# df -h|grep mnt
http://192.168.72.40:8090 1.3T 763G 509G 61% /mnt/dav
sftpgo 基于 restic 增量备份
使用restic对某台linux服务器中的/data路径下的数据执行增量备份。
在需要备份的linux服务器上安装restic,以ubuntu操作系统为例
wget https://github.com/restic/restic/releases/download/v0.16.0/restic_0.16.0_linux_amd64.bz2
bzip2 -d restic_0.16.0_linux_amd64.bz2
mv restic_0.16.0_linux_amd64 /usr/local/bin/restic
chmod +x /usr/local/bin/restic
使用restic命令在sftpgo服务端创建存储库
root@ubuntu:~# export RESTIC_PASSWORD="123456"
root@ubuntu:~# restic init -r sftp://admin1@[192.168.72.16]:2022//restic-repo
The authenticity of host '[192.168.72.16]:2022 ([192.168.72.16]:2022)' can't be established.
ED25519 key fingerprint is SHA256:Op+5ORK2iLBucnxiL6xRnfPl+D+wXURVS7qOk4WeUMM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
subprocess ssh: Warning: Permanently added '[192.168.72.16]:2022' (ED25519) to the list of known hosts.
(admin1@192.168.72.16) Password:
created restic repository 81e4c7ae2d at sftp://admin1@[192.168.72.16]:2022//restic-repoPlease note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.
通过restic备份linux下/data/目录所有数据到sftpgo
root@ubuntu:~# export RESTIC_PASSWORD="123456"
root@ubuntu:~# export RESTIC_REPOSITORY="sftp://admin1@[192.168.72.16]:2022//restic-repo"
root@ubuntu:~# restic backup /data/
(admin1@192.168.72.16) Password:
repository 81e4c7ae opened (version 2, compression level auto)
created new cache in /root/.cache/restic
no parent snapshot found, will read all filesFiles: 7197 new, 0 changed, 0 unmodified
Dirs: 1886 new, 0 changed, 0 unmodified
Added to the repository: 393.453 MiB (150.566 MiB stored)processed 7197 files, 395.592 MiB in 0:03
snapshot a5be14c4 saved
登录sftpgo客户端查看备份数据

当/data/目录数据有变化时,重复执行以上命令,会持续创建增量快照,查看历史备份快照:
root@ubuntu:~# restic snapshots
(admin1@192.168.72.16) Password:
repository 81e4c7ae opened (version 2, compression level auto)
ID Time Host Tags Paths
------------------------------------------------------------
a5be14c4 2023-10-21 18:11:44 ubuntu /data
dcda67da 2023-10-21 18:13:57 ubuntu /data
2eeff04f 2023-10-21 18:14:02 ubuntu /data
------------------------------------------------------------
3 snapshots
选择某个快照,将数据还原到本地
root@ubuntu:~# restic restore a5be14c4 --target /tmp/restor-data
(admin1@192.168.72.16) Password:
repository 81e4c7ae opened (version 2, compression level auto)
restoring <Snapshot a5be14c4 of [/data] at 2023-10-21 18:11:44.118135197 +0800 CST by root@ubuntu> to /tmp/restor-data
Summary: Restored 9084 Files (395.592 MiB) in 0:03
root@ubuntu:~#
root@ubuntu:~# ls /tmp/restor-data/
data
相关文章:
docker 安装 sftpgo
sftpgo 简介 sftpgo 是一个功能齐全且高度可配置的 SFTP 服务器,具有可选的 HTTP/S、FTP/S 和 WebDAV 支持。支持多种存储后端:本地文件系统、加密本地文件系统、S3(兼容)对象存储、Google 云存储、Azure Blob 存储、SFTP。 官…...
threejs (一) 创建一个场景
引入 npm install three import * as THREE from three;const scene new THREE.Scene();或者使用bootCDN复制对应的版本连接 <script src"https://cdn.bootcdn.net/ajax/libs/three.js/0.156.1/three.js"></script>基础知识 场景、相机、渲染器 通过…...
二分查找,求方程多解
1.暴力遍历: 解为两位小数,故0.001的范围肯定可以包含(零点存在) 2.均分为区间长度为1的小区间(由于两解,距离不小于1),一个区间最多一个解 1.防止两边端点都为解 2&…...
代码随想录算法训练营第二十九天 | 回溯算法总结
代码随想录算法训练营第二十九天 | 回溯算法总结 1. 组合问题 1.1 组合问题 在77. 组合中,我们开始用回溯法解决第一道题目:组合问题。 回溯算法跟k层for循环同样是暴力解法,为什么用回溯呢?回溯法的魅力,用递…...
运算方法和运算电路
一、逻辑门电路 1、逻辑门电路基础总结 2、异或运算妙用 3、逻辑常用公式 二、加法器(重点) 1、标志位的生成原理 2、加法器总结 三、多路门选择器,三态门...
计算机网络篇之TCP滑动窗口
文章目录 前言概述 前言 在网络数据传输时,若传输的原始数据包比较大,会将数据包分解成多个数据包进行发送。需要对数据包确认后,才能发送下一个数据包。在等待确认包的这个过程浪费了大量的时间,不过还好TCP引入了滑动窗口的概念…...
本地安装telepresence,访问K8S集群 Mac(m1) 非管理員
kubeconfig 一.安装telepresence 1.安装 Telepresence Quickstart | Telepresence (1)brew install datawire/blackbird/telepresence 2.配置 目录kubectl 将使用默认的 kubeconfig 文件:$HOME/.kube/config 创建文件夹&…...
今日思考(2) — 训练机器学习模型用GPU还是NUP更有优势(基于文心一言的回答)
前言 深度学习用GPU,强化学习用NPU。 1.训练深度学习模型,强化学习模型用NPU还是GPU更有优势 在训练深度学习模型时,GPU相比NPU有优势。GPU拥有更高的访存速度和更高的浮点运算能力,因此更适合深度学习中的大量训练数据、大量矩阵…...
8.3 C++ 定义并使用类
C/C语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。…...
Git学习笔记——超详细
Git笔记 安装git: apt install git 创建版本库: git init 添加文件到版本库: git add 文件 提交文件到仓库: git commit -m “注释” 查看仓库当前的状态信息: git status 查看修改内容和之前版本的区别&am…...
Locust负载测试工具实操
本中介绍如何使用Locust为开发的服务/网站执行负载测试。 Locust 是一个开源负载测试工具,可以通过 Python 代码构造来定义用户行为,避免混乱的 UI 和臃肿的 XML 配置。 步骤 设置Locust。 在简单的 HTTP 服务上模拟基本负载测试。 准备条件 Python…...
关闭mysql,关闭redis服务
1. 关闭redis服务: 查询redis安装目录: whereis redis which redis find / -name redis 关闭redis服务: redis-cli -h 127.0.0.1 -p 6379 auth 输入密码 shutdown 关闭redis服务 2. 关闭mysql服务: 查询mysql安装目录&…...
微机原理:汇编语言语句类型与格式
文章目录 壹、语句类型1、语句分类2、常用伪代码和运算符2.1数据定义伪指令2.1.1字节定义伪指令DB(8位)2.1.2字定义伪指令DW(16位)2.1.3双字节伪指令DD2.1.4 多字节定义DF/DQ/DT(了解) 2.2 常用运算符2.2.1…...
iOS Flutter Engine源码调试和修改
iOS Flutter Engine源码调试和修改 1. 前提:2. 步骤:3. 参考资料 1. 前提: 已将成功安装deop_tools工具已经通过gclient命令同步好flutter engine源码 2. 步骤: 进入engine/src目录 创建flutter engine构建文件 真机文件debug模式: ./flu…...
Java日志系统之Log4j
目录 Log4J Log4j的简单使用 日志级别 Log4j的组件 Loggers Appenders Layout Layout格式 设置配置文件加载 配置文件解析 Log4J 是Apache下开源的日志框架 Log4j的简单使用 Testpublic void testLog4J(){Logger logger Logger.getLogger(Log4jTest.class);logger…...
Windows11系统安装WSL教程
WSL,全称Windows Subsystem for Linux,是微软官方提供的可以在Windows上直接运行的Linux环境,包括大多数命令行工具、程序和应用,由系统底层虚拟机平台支持。 开启相关服务 1、控制面板-启用或关闭Windows功能 2、勾选以下两个…...
总结一下vue中v-bind的常见用法
文章目录 🐕前言:🏨简述一下v-bind命令🧸其它写法1.还是当成字符串🦓其它写法2.当成对象来使用 🐕前言: 本篇博客主要总结一下v-bind命令在vue中的常见用法(看完即懂) …...
全面超越AutoGPT,面壁智能联合清华NLP实验室开源大模型「超级英雄」XAgent
近日,国内领先的人工智能大模型公司面壁智能又放大招,联合清华大学 NLP 实验室共同研发并推出大模型「超级英雄」——XAgent。 通过任务测试,XAgent 在真实复杂任务的处理能力已全面超越 AutoGPT。 现已在 GitHub 正式开源,地址 …...
springBoot--web--http缓存机制测试
springBoot--web--http缓存机制测试 前言1、多端内容适配基于请求头内容协商(默认开启)基于请求参数内容协商(需要开启) 2、默认返回json数据3、设置返回xml数据导入jackson-dataformat-xml包在类文件中添加注解 JacksonXmlRootEl…...
免费活动】11月4日敏捷武林上海站 | Scrum.org CEO 亲临现场
活动介绍 过去的几年里,外界的风云变幻为我们的生活增添了一些不一样的色彩。在VUCA世界的浪潮里,每一个人都成为自己生活里的冒险家。面对每一次的变化,勇于探索未知,迎接挑战,努力追逐更好的自己。 七月࿰…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
