前言
不推荐阿里云Webdav,非常不稳定。更新信息(最新2022-12-20)请见这里。
在Docker系列 搭建密码管理应用bitwarden中,我们安装了一个实用的Docker应用bitwarden
。用了一段时间,你会发现它是真的好用呀!但同时你也有一点担心:万一bitwarden的数据损坏或者丢失了怎么办?
随着你安装的Docker应用越来越多,这种担心会越来越明显。比如,我通过docker进行wordpress个人博客和chevereto图床的布署。wordpress个人博客不多说,就是你现在访问的网站。chevereto图床是我用typora写markdown时绑定的图床,天天在用,经常要Ctrl+v
粘贴图片的嘛!本博客的图片也是托管于我个人的chevereto图床:https://chevereto.hwb0307.com/。万一数据丢失了怎么办?比如VPS机房着火了、不小rm了、不小心你重置自己的系统了,甚至是被黑客入侵搞破坏导致数据丢失了。怎么办呢?
当然,你可以写个shell脚本进行简单的备份。不过我认为,我今天要说的duplicati
才是解决这个问题的终极方案。它的docker镜像是linuxserver/duplicati
,由linuxserver
团队进行维护。用的人还蛮多的,最近还有更新:
这是Github repo的地址,好像没什么人用过:https://github.com/linuxserver/docker-duplicati。是不是大家有更好的选择呀?求推荐一波!
就我个人来说,duplicati
已经足够好用了。它可以在本地备份,也可以通过WebDAV
协议备份至阿里云、坚果云、nextcloud等云盘中。由于个人的VPS容量是有限的,我就没有备份到本地,只备份到了阿里云盘。
此外,如果有人不知道WebDAV
是什么的话,建议还是Google百度一下喔!这里我粘贴一段wiki的机翻:
WebDAV(Web 分布式创作和版本控制)是超文本传输协议(HTTP)的一组扩展,它允许用户代理通过提供并发控制和命名空间操作的设施,直接在HTTP Web 服务器中协作创作内容,从而允许Web被视为可写的、协作的媒体,而不仅仅是只读媒体。[1] WebDAV由Internet 工程任务组(IETF)的一个工作组在RFC 4918中定义。 [2]
WebDAV 协议为用户在服务器上创建、更改和移动文档提供了一个框架。最重要的功能包括维护有关作者或修改日期的属性、命名空间管理、集合和覆盖保护。属性维护包括文件信息的创建、删除和查询等。命名空间管理处理在服务器命名空间内复制和移动网页的能力。集合处理各种资源的创建、删除和列表。最后,覆盖保护处理与文件锁定相关的方面。它利用了现有技术,例如传输层安全、摘要访问身份验证或XML来满足这些要求。[3]
许多现代操作系统为 WebDAV提供内置客户端支持。
我个人理解,WebDAV
就是一种被广泛使用的、基础的网络存储协议。在本文中,我们会展示在阿里云盘中展示WebDAV
协议的使用方案。其它网盘应该也类似,我就没有试过了。
如果你没有注册过阿里云盘的话,可以手机或者电脑点我的邀请链接注册:https://pages.aliyundrive.com/mobile-page/web/beinvited.html?code=2061fe1。目前它还在公测阶段,我还是比较看好这个网盘的。这算是夹带私货。哈哈!
可能有小伙伴说:阿里云盘可能也不安全呀!不用担心,duplicati
备份数据可以经过内置AES-256算法加密,只有知道密码的人才可以执行恢复数据的操作。这样一看,也没啥问题,对吧!
duplicati
还有另外一个我觉得不错的特性,即增量备份
。每一次只备份和上一次备份的差异量,这对于节省VPS流量十分有利呢!我和玩NAS的小伙伴们交流,他们说TrueNAS
系统都会内置类似duplicati的应用。所以真的很帅呢!
duplicati
支持很多云传输的标准协议或者专有服务。如果你想备份到nas或者其它vps,应该可以试试SFTP。当然也可以像本文的示范,用WebDAV
协议。
Duplicati备份时对VPS系统资源的持续占用并不大。这是我用Duplicati备份一个实例时的系统占用(最大上传数据块=10M,阿里云WebDav):
总之,Duplicati是个不错的备份神器,我已经准备使用它了。话不多说,下面我们来安装吧!
测试环境
不了解docker的小伙伴请先看:《Docker系列 配置Docker全局环境》;《Docker系列 了解Docker Compose的配置文件》。
uname -a # Linux VM-12-8-ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
docker --version # Docker version 20.10.5, build 55c4c88
docker-compose --version # docker-compose version 1.28.6, build 5db8d86f
安装aliyundrive-webdav
不建议常规使用,因为服务不够稳定。仅供参考。
准备工作
对于阿里云盘来说,你要先获取一个REFRESH_TOKEN
。你可以参考官网提供的方法:
你要记得保管好REFRESH_TOKEN
。因为有了它,就可以直接访问你的阿里云盘呢!
经典的目录管理:
# 工作目录请按需修改
work=~/docker/aliyun_webdav && mkdir -p $work && cd $work
# 打开防火墙
sudo ufw allow 7569/tcp comment 'apliyun-webdav' && sudo ufw reload
配置yml文件
新建一个docker-compose.yml
文件:
vim docker-compose.yml
添加以下内容。你可以用bitwarden
的生成器来生成强密码喔:
version: '3'
services:
webdav:
image: tickstep/aliyunpan-webdav:v0.1.8
container_name: aliyunpan-webdav
restart: unless-stopped
ports:
- 7569:23077
environment:
- TZ=Asia/Shanghai
# refresh token用于登录
- ALIYUNPAN_REFRESH_TOKEN=<你的token>
# webdav 登录用户名
- ALIYUNPAN_AUTH_USER=test_user
# webdav 登录密码
- ALIYUNPAN_AUTH_PASSWORD=test_user_password
# 指定网盘文件夹作为webdav服务根目录
- ALIYUNPAN_PAN_DIR=/
# 上传下载链接类型:1-默认 2-阿里ECS环境(ECS必须是经典网络类型)
- ALIYUNPAN_TRANSFER_URL_TYPE=1
# 上传数据块大小,单位为KB,默认为1024KB,建议范围1024KB~10240KB。这里我调大了一点点。
- ALIYUNPAN_BLOCK_SIZE=11240
上线服务:
docker-compose up -d
NPM设置https和反代
不了解Nginx Proxy Manager用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。
添加域名:example.com
。类似于:
如果你在安装docker镜像后才新建文件夹,记得重启aliyun-webdav的docker容器:
docker-compose restart
如果中途有换域名的操作,可以:
docker-compose down && docker-compose up -d
OK,到这里的话,阿里云Webdave就准备好了!
安装duplicati
准备工作
按需修改工作目录:
work=~/docker/duplicati && mkdir -p $work && cd $work
按需修改端口,开启防火墙:
sudo ufw allow 8200/tcp comment 'duplicati' && sudo ufw reload
配置yml文件
打开Vim
编辑器:
vim $work/docker-compose.yml
将以下内容添加到docker-compose.yml
文件中:
version: "2.1"
services:
app:
# image: lscr.io/linuxserver/duplicati:latest
image: linuxserver/duplicati:latest
container_name: duplicati # 指定容器的名字
restart: unless-stopped
environment:
- PUID=0
- PGID=0
- TZ=Asia/Shanghai
volumes:
- ./config:/config
- ./backups:/backups
- /:/source # 这里你完全可以选一个高一点一目录。我这里选择的是根目录
ports:
- 8200:8200 # 这里可以替换自己喜欢的端口号。 一般不使用默认的。
networks:
- default
networks:
default:
name: duplicati
按:wq
保存并退出。
上线服务:
docker-compose up -d # 我在腾讯云上下载,非常慢,不知道为什么~换了镜像源也没用
# docker-compose pull # 更新服务
我们可以观察一下duplicati
的工作日志:
docker logs -f duplicati
当看到这些字样:
[services.d] starting services
[services.d] done.
说明duplicati
已经成功启动。
定时重启
根据经验,Docker版duplicati
在运行某个备份时,如果源-目标的网络连接不稳定,容易产生超时连接且没有任何警告、报错或自动重启的处理,因此建议大家在自己的备份冷却时间里重启duplicati。比如,我们打开crontab:
sudo vim /etc/crontab
添加一条记录:
# restart duplicati to avoid stuck
1 18 * * * root docker restart duplicati >/dev/null 2>&1
如图所示:
该命令的意思是在每天18: 01重启名字为“duplicati”的容器。大家根据自己的实际情况修改即可。如果不太了解Linux的cron服务,可以看《Linux crontab 命令 | 菜鸟教程》。
NPM设置https和反代
不了解Nginx Proxy Manager用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。
添加域名domain.com
。NPM中添加反代。类似于:
第一次登陆duplicati
的后台时,会有一个密码设置。我推荐按一下yes,然后用bitwarden设置一个强密码。
下次登陆就需要额外的密码了。
尝试使用duplicati
以阿里云WebDav为例。
准备工作
我们不要马上使用duplicati
。建议创建一些文件夹来练练手,等整个流程跑通了,再来备份正式的文件!
比如,我先在阿里云创建一个test_user_duplicati
的文件夹专门保存duplicati
的备份文件。
回到shell,我们创建一些测试目录和文件
# 回home目录
mkdir -p ~/test && cd ~/test
# 创建一个文本
touch test.txt && echo '我爱你!'> test.txt
OK,搞定!
备份目录
添加新备份:
我们填入一个密码,比如用bitwarden生成一个强密码:QHdH#WZD^J$@QS8*v9S6bQgXF6
。下一步。
可以按下面的填法。一般172.17.0.1
是docker0
的局域网ip地址。由于duplicati
和aliyundrive-webdave
装在同一个docker中,因此可以通过172.17.0.1:端口号
来互相访问。NPM的地址设置172.17.0.1
也是同样的道理。其它类型的ip设置我就不细说了,不懂的请评论留言。用户名和密码就是刚刚安装阿里云的密码。建议点一下测试连接
,当提示连接正常
时再进行下一步。
这里多说一句。如果你用SFPT(SSH)
的方式来备份数据的话,通常还会有请添加 --ssh-fingerprint="ssh-ed25519 32 XXXX" 来信任此主机。视情况,你也可以使用 --ssh-accept-any-fingerprints (不安全) 进行测试!
的报错。这个时候要在高级选项里添加--ssh-fingerprint="ssh-ed25519 32 XXXX
值以信任对方的主机。当然,在这里的示范是不需要的。
添加源数据。在本次示范中,是这样的:
这个路径和VPS的实际路径是不一样的,一般是在/source
里面找。我在docker-compose中,挂载了根目录/
。下一步。
计划就随便你了,自己选吧。选完下一步。
最后是备份的其它设置。我觉得它的智能模式不错。你也可以选其它的。点击“保存”。阿里云WebDav有个注意事项,就是远程卷大小的上限应该为10MB
:
最后,首页会出现一个新的备份项目:
我们按下立即运行
,试试看能不能成功。因为我们的文件很小,很快就成功了:
我们可以去阿里云看看它的备份文件:
看吧,并不是原来的样子啦!我们原来是test.txt
。所以就算阿里云不安全,也没有太多关系!
备份增量
下面,我们对文件进行一些改动,然后创建一些新文件。
# 目录
cd ~/test
# 改动文件
echo '你知道吗?' >> test.txt
touch test2.txt && echo '你好呀!!' > test2.txt
# 观察文件
ls -hl
文件已经发生了较大的改动:
total 8.0K
-rw-r--r-- 1 test_user test 16 Apr 22 14:07 test2.txt
-rw-r--r-- 1 test_user test 29 Apr 22 14:07 test.txt
下面,我们再备份一下。很快就成功了:
这时,我们去阿里云康康:
已经发生了备份了!现在我们将本地的内容全部删除:
cd ~/test && rm -r *
然后尝试恢复文件。
恢复文件
尝试从项目中恢复。下一步。
看下面!它可以恢复你保留的任何版本。我们已经产生了2个版本:
我们选择其中那个最新的吧!选中文件夹,然后点继续
。
下面它会询问恢复的位置。你可以自己选一个位置。我们这里可以用原位置,恢复读写权限,并覆盖。这些用法都看实际情况了:
最后,按恢复文件
。成功了!它还打了个小广告,不用理踩。
我们在shell里检查一下:
cd ~/test && ls -hl
看到文件已经回来了。
total 8.0K
-rw-r--r-- 1 test_user test 16 Apr 22 14:07 test2.txt
-rw-r--r-- 1 test_user test 29 Apr 22 14:07 test.txt
看看内容的改变情况:
cat test.txt && cat test2.txt
输出为:
我爱你!
你知道吗?
你好呀!!
内容也没有什么改变呀!当然,更严谨的做法应该是比较恢复前后文件的md5sum或者是sha-265之类的。不过我懒得搞了。
有没有一种自己的文件瞬间很安全的感觉?你可以试试备份自己的bitwarden
文件夹、甚至是duplicati
的文件夹喔!操作一下!
导出配置
在Duplicati中,每一条备份记录可以导出为一个json文件。具体操作如下:
然后点击导出即可:
如果在某个Duplicati中想要恢复的时候,只要:
如果路径有不同,就自己更改一下即可。也是蛮简单的!
其它备份媒介
SFTP
如果你有NAS或者是甲骨文免费大盘鸡(4核24G内存最高200G硬盘,网上相关的视频/博客教程很多,比如这里;建议有条件的小伙伴去申请一下)这种磁盘比较大的Linux服务器,将数据通过sftp的方式进行加密备份是非常方便的,也很安全。
下图展示了我在甲骨文免费大盘鸡里的实时备份信息:
要记得先在VPS里面的创建服务器上路径。如果你不事先创建,可能会带来问题。切记切记!
一般的设置类似于:
Google drive
临时添加此部分内容。因为aliyundrive-webdav对于备份wordpress和chevereto这种大文件夹非常不稳定。
推荐有Google drive的朋友使用。不过,Google drive的初始容易只有15G。如果你要备份更大的文件,还是推荐通过SFTP(SSH)的方式备份到自己的NAS里。
Google drive的备份是非常奇怪的,至少我刚刚开始用的时候不知道是怎么回事。这可能是duplicati的问题,未来的版本可能会修复(我用的版本是Duplicati - 2.0.6.3_beta_2021-06-17
)。
主要问题在第2部分,也就是写备份保存位置
这里:
你要严格地遵循以下步骤:
- 不要在Google drive手动创建任何新文件夹(Duplicati无法识别你手动建立的文件夹)。不要在
服务器上路径
写任何内容。先申请授权ID
。 - 测试连接。正常情况下可以成功。
服务器上路径
可参照我的写法,子文件夹用/
分隔。- 再测试连接。应该会出现
Failed to connect
,但没有关系。这是因为Duplicati还没有在你的Google drive上建立文件夹(所以就有点傻) - 完成其它步骤
你设置完后,马上进行一次备份。应该可以成功。你可以去Google drive后台查看,应该是有内容的。
有问题评论区留言吧!
Nextcloud
如果你不知道Nextcloud怎么安装和使用,去我的学习地图里查看Nextcloud系列教程吧!如果你有NAS的话,强烈建议你安装一个Nextcloud!有Nextcloud后,你完全可以通过WebDAV的方式进行备份。
我们这里展示一下第2部分的备份保存位置
要怎么写:
- 存储类型:WebDAV
- 启用SSL:如果你的nextcloud有https,就选SSL。没用则不用选。如果你按我的教程进行设置,肯定是有的。
- 服务器与端口:如图。不懂就评论留言。如果你是VPS用户,用443端口号作为https端口,就写443
- 服务器上路径:这里要特别注意。格式为
/remote.php/dav/files/用户名/存储位置
- 用户名与密码:登陆Nextcloud的用户名和密码
我测试了一下,可以成功!如图:
我感觉,利用duplicati + NAS + Nextcloud
是将远部服务器数据备份至本地(比如家里)的一个十分优雅的实现策略。Nextcloud确实十分方便!
邮件提醒
尽管有该功能,但duplicati有时候不报错而是卡顿,此时会影响后续任务的备份。所以还是要定期上去看看,排除故障。
如果我想在备份失败时收到duplicati的邮件提醒,应该怎么做?没有邮件提醒功能的Duplicati是没有灵魂的。幸运的是,我们可以通过高级选项进行邮件提醒功能的配置。实际上,Duplicati还有很多高级选项
,你可以在官网手册里查看它们的意义和用法。下面我以QQ邮箱作为发件平台进行示范,其它邮件提供商的方法应该是类似的,自己摸索一下。
准备信息
首先,通过以文本形式编辑
来定义默认选项:
准备下列信息(如果你大概知道它的内容是什么,可以适当改动):
--send-mail-any-operation=true
--send-mail-body=%RESULT%
--send-mail-level=all
--send-mail-subject=Duplicati %OPERATIONNAME% report for %backup-name%
[email protected]
[email protected]
--send-http-result-output-format=Duplicati
--send-mail-url=smtp://smtp.qq.com:587/?starttls=when-available
[email protected]
--send-mail-password=abcdefgyahdffm
注意事项:
--send-mail-level=all
代表所有”Success,Warning,Error,Fatal” 等操作或状态都发送邮件。在测试阶段,你不妨像我一样使用all
,这样便于观察你的设置是否有效。测试成功后,你也可以改为--send-mail-level=Warning,Error,Fatal
,这样就只发送异常信息(备份成功时不会收到邮件)。首字母大小写均无所谓。--send-mail-from
、--send-mail-username
中的[email protected]
要改成你发送端的邮件地址。[email protected]
中的[email protected]
要改成你接收端的邮件地址。--send-mail-password
中的abcdefgyahdffm
要改成你QQ邮箱的授权码。注意,授权码不是QQ帐号密码。你可以在QQ邮箱的设置——帐户——POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
里生成授权码:
- 如果你不是使用QQ邮箱作为发送端,
--send-mail-url
也要做相应的调整。
粘贴配置
信息准备好后,直接粘贴并保存:
回到Duplicati的首页
,对一个测试项目进行备份(主要是测试项目比较小,备份速度快):
很快啊,接收端的邮件就到了!内容类似于:
这个信息和后台的Complete log
是一一对应的:
如果你收到的是Warning和Error,也很快知道是哪里出问题,这样你就知道什么时候得去duplicati后台debug一下。此外,我还建议你在收件邮箱里使用标签或分类功能,这样方便集中查看duplicati的提醒信息。
就问你爽不爽?妈妈再也不用担心我的duplicati备份了!
Bug处理
Missing blocks
如果你备份一个较大的目录时(>1G),可能会出现类似正文的报错:
Failed: Found 37 files that are missing from the remote storage, please run repair
Recreated database has missing blocks and 1 broken filelists. Consider using "list-broken-files" and "purge-broken-files" to purge broken data from the remote store and the database.
原因暂时未知(可能与不稳定的网络连接有关),只在阿里云WebDav备份时出现过,可能与上传文件的大小上限有关。如果你遇到这种情况,需要灵活运用list-broken-files
和purge-broken-files
这两个修复命令,原理可能是删除错误的blocks。
具体操作是:先从Commandline
里进去:
先运行list-broken-files
命令:
再运行purge-broken-files
命令:
完成后,再回去主界面重新备份一下。一次不行多试几次,一般都可以成功。如果你不太明白,加Telegram群咨询吧!
小结
经过几个月的使用,Duplicati还是非常稳定的(虽然它说自己是个Beta软件)。像WordPress博客、Chevereto图床这类非即时性应用场景用Duplicati备份是很合适的。但是,对于即时性应用场景(比如修改一个文件,保存后立即备份),还是同步网盘比较合适(Resilio Sync、坚果云等)。
Duplicati还支持好多种协议,自己感兴趣可以试试看。我个人推荐duplicati备份的服务平台至少要有Google Drive和OneDrive。有条件的还可以通过SFTP备份至本地NAS或者Oracle大盘鸡。这里提醒一下(2022-12-17该方法仍有效),OneDrive可以通过淘宝购买一个永久加10G的扩容,其原理是MicroSoft有个邀请一个人送0.5G的空间的活动,10G封顶。
值得注意的是,duplicati只是多安一份心而已,很少需要走到恢复数据这一步的。如果你只是单纯地迁移docker,直接scp到新的VPS就行了,不用专门运用备份。
最后,很多小伙伴还向我推荐Rclone。Rclone 是一个命令行程序,支持多种云存储产品,包括 S3 对象存储、企业和消费者文件存储服务以及标准传输协议(比如SFTP、HTTP、WebDAV、FTP 和 DLNA等)。以后有机会我也了解下Rclone!
参考/扩展阅读
- How To: Configure Duplicati Email Notifications
- Using rclone to backup data | Division of Information Technology (stonybrook.edu):似乎是个不错的方案,有机会试试看。
日志
2023-03-06
- Duplicati关于可能停止维护的讨论: Is duplicati alive or stable? · Issue #4889 · duplicati/duplicati
2022-12-20
- 新增教程:cron重启duplicati容器以避免网络连接不稳定(特别是VPS连家里的NAS)相关的超时bug。请在本页面搜索
定时重启
定位至更新内容。 - docker-compose.yml里新增
container_name
参数指定该容器的名字,以避免版本名字不一致的问题。这种用法更加合理。
2022-10-30
- 有时VPS重启后Duplicati会不生效,表现为不自动备份、不能正常备份没有报错信息,但各种连接测试(比如ssh测试)是正常的。这个时候
docker-compose restart
一下就好了。这种bug不常见,暂时还不知道本质原因是什么。
2022-07-15
- 经过一段时间的使用,另外一个阿里云盘的Docker应用tickstep/aliyunpan更加稳定,推荐使用。
- 给出一个常见bug的解决方案
2022-07-12
- 新增导出每条备份记录配置的方法。
2022-07-01
- 增加邮件提醒的教程,可以及时收到报错或警告信息。
2022-05-29
-
VPS是Racknerd的洛杉矶机房。SSH和Google Drive的方式十分稳定,有NAS的朋友可以用SSH,或者结合Nextcloud WebDAV使用。
-
阿里云WebDAV不稳定,容易失败。
2022-05-13
经过测试,aliyundrive-webdav
采取1周2次的频率、在工作时间备份可以正常运行。
建议定期查看一下duplicati的运行状态(比如每1-2周查看1次)。
2022-05-01
已经确定aliyundrive-webdav
的方式极不稳定。阿里云对于比较大的文件备份进行了限流。我正在调整同步计划,即不是每日增量备份,而是每3-4天增量备份1次。之后将使用情况反馈一下。
如果大家要进行每日增量备份,应该使用SFTP(SSH)的方式或者是其它云盘。这里我临时添加一下Google drive的使用吧!不知道Google drive会不会有限流。请留意后期的反馈。
2022-04-28
我的VPS数据是备份至我自己的NAS里,通过SSL(SFTP)的方式,一直很正常。
不过,我的NAS的数据是备份至阿里云的,某些数据会出现The remote server returned an error: (500) Internal Server Error
的数据:
System.Net.WebException: The remote server returned an error: (500) Internal Server Error.
at System.Net.HttpWebRequest.GetResponseFromData (System.Net.WebResponseStream stream, System.Threading.CancellationToken cancellationToken) [0x00146] in <91935ad653254a93b9d73a9f8f2f7a2d>:0
at System.Net.HttpWebRequest.RunWithTimeoutWorker[T] (System.Threading.Tasks.Task`1[TResult] workerTask, System.Int32 timeout, System.Action abort, System.Func`1[TResult] aborted, System.Threading.CancellationTokenSource cts) [0x000f8] in <91935ad653254a93b9d73a9f8f2f7a2d>:0
at Duplicati.Library.Utility.AsyncHttpRequest+AsyncWrapper.GetResponseOrStream () [0x0004d] in <2a3ee711c7c04f6c957360f2cf183a7f>:0
at Duplicati.Library.Utility.AsyncHttpRequest.GetResponse () [0x00044] in <2a3ee711c7c04f6c957360f2cf183a7f>:0
at Duplicati.Library.Backend.WEBDAV.Delete (System.String remotename) [0x0008d] in <5df020eccaa84287a3c79d1a4bf95fc9>:0
at Duplicati.Library.Main.BackendManager.DoDelete (Duplicati.Library.Main.BackendManager+FileEntryItem item) [0x0001c] in <e60bc008dd1b454d861cfacbdd3760b9>:0
并且远程连接经测试都是正常的。
更奇怪的是,并不是所有的记录都会出错,有一些记录就是正常运作。而且这些记录并不是一开始就出错,而是运行了几次才忽然出错。我感觉可能是阿里云是否对这种传输进行了限制?
目前暂无头绪。持续观察中!
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍
bitwarden 可以导出加密的json文件,每次添加密码之后导出一个备份,然后自动同步到 OneDrive 中(我们的有生之年应该还看不到微软倒闭或跑路的那一天)。。。
也不用这么麻烦 (ฅ´ω`ฅ) 我都是duplicati备份。 根据我的使用经验,bitwarden的镜像还是很稳定的,没遇到过bug。要做一些高危操作时临床备份一下也是可以的
大佬,登录到aliyun_webdav以后会出现以下错误,什么原因呢?
This page contains the following errors:
error on line 1 at column 521: Extra content at the end of the document
Below is a rendering of the page up to the first error.
阿里云WebDav我没有在使用,因为之前的测试表明其并不稳定。
你好,我这运行2天就打不开了,重启容器也不行。必须重新重装才可以。不知道哪里原因,日志有一条报错:[ERROR] FATAL UNHANDLED EXCEPTION: System.UriFormatException: Invalid URI: Invalid port specified.
问题解决了吗?
并没有,我换rclong了
使用rclone,cron来自动备份,更加轻量级
rclone确实有不少小伙伴推荐。以后有时间看看!
Google drive 的授权 ID 去哪里获得呀?
你在使用的过程中按duplicati的提示即可,它会自动帮你申请的。前提是你可以使用Google账户喔!
我觉得用腾讯云的对象存储会更好点?
如果你的VPS在国内,用国内的服务应该是挺好的 (☆ω☆)
看的懵懵懂懂的,虽然里面写了备份“实例”。但我怎么感觉仍然是对一个文件夹的内容进行定期备份呢?
对文件夹的备份,像群晖系统里面有个云同步的功能,我就是把要备份的文件夹内容,已单向上传的方式同步去云端保存。
如果仅是对文件夹的备份,docker中的nextcloud崩溃了,自己也还是只能还原数据,nextcloud里面的配置啥(如文件共享、评价)不还是都没了。
是的,本质上是备份一个文件夹。但是,如果你布署docker时(一般是基于docker-compose)正确地将重要的文件夹映射到宿主机(比如web根目录、数据库等),本质上只需要备份文件夹就行。恢复的时候,只要恢复该文件夹的内容(包含一个docker-compose.yml文件),运行一下
docker-compose up -d
,就可以满血复活了。通常来说,一个docker应用的数据由两大部分组成:布署环境和用户数据。我们只需要备份用户数据;布署环境则由docker容器来定义,这个是固定的,可以直接从dockerhub里pull下来,故不需要额外备份。
OK,又学到知识点了。
那我就按这个方案执行
https://hexo.chensmallx.top/2021/04/08/nextcloud-on-docker/#%E5%89%8D%E8%A8%80
使用docker-compose搭建nextcloud+Nginx+MySQL+Redis
博主要不放个打赏二维码,我都想打赏下了,表示谢意
谢谢大佬,哈哈!赞赏码如下: https://blognas.hwb0307.com/thankyou
我想问下,“这是我用Duplicati备份一个实例时的系统占用”那个显示系统占用的程序是什么
不好意思,忙起来忘了(~ ̄▽ ̄)~ 这个软件叫netdata。我也有相关的教程: https://blognas.hwb0307.com/linux/docker/1845 。当然,更多教程在学习地图中被系统整理了,有空可看看哈(☆ω☆)。