Docker系列 搭建自动备份服务duplicati
本文最后更新于 191 天前,如有失效请评论区留言。

本博客由Faconhost大力赞助!如何更快地访问本站?有需要可加电报群获得更多帮助。本博客用什么VPS?创作不易,请支持苯苯!推荐购买本博客的VIP喔,10元/年即可畅享所有VIP专属内容!

前言

不推荐阿里云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团队进行维护。用的人还蛮多的,最近还有更新:

image-20220422105639718

这是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协议。

image-20220422124043739

Duplicati备份时对VPS系统资源的持续占用并不大。这是我用Duplicati备份一个实例时的系统占用(最大上传数据块=10M,阿里云WebDav):

chrome_5FuFmTBsd5

总之,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。你可以参考官网提供的方法:

image-20220422124905828

你要记得保管好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。类似于:

image-20220422132150690

如果你在安装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

如图所示:

NVIDIA_Share_TN4qNtEGg7

该命令的意思是在每天18: 01重启名字为“duplicati”的容器。大家根据自己的实际情况修改即可。如果不太了解Linux的cron服务,可以看《Linux crontab 命令 | 菜鸟教程》。

NPM设置https和反代

不了解Nginx Proxy Manager用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。

添加域名domain.com。NPM中添加反代。类似于:

image-20220422133600663

第一次登陆duplicati的后台时,会有一个密码设置。我推荐按一下yes,然后用bitwarden设置一个强密码。

image-20220422133512774

image-20220422133724859

下次登陆就需要额外的密码了。

尝试使用duplicati

以阿里云WebDav为例。

准备工作

我们不要马上使用duplicati。建议创建一些文件夹来练练手,等整个流程跑通了,再来备份正式的文件!

比如,我先在阿里云创建一个test_user_duplicati的文件夹专门保存duplicati的备份文件。

回到shell,我们创建一些测试目录和文件

# 回home目录
mkdir -p ~/test && cd ~/test

# 创建一个文本
touch test.txt && echo '我爱你!'> test.txt

OK,搞定!

备份目录

添加新备份:

image-20220422135218892

我们填入一个密码,比如用bitwarden生成一个强密码:QHdH#WZD^J$@QS8*v9S6bQgXF6。下一步。

image-20220422135333007

可以按下面的填法。一般172.17.0.1docker0的局域网ip地址。由于duplicatialiyundrive-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值以信任对方的主机。当然,在这里的示范是不需要的。

image-20220422135550762

添加源数据。在本次示范中,是这样的:

image-20220422135930713

这个路径和VPS的实际路径是不一样的,一般是在/source里面找。我在docker-compose中,挂载了根目录/。下一步。

计划就随便你了,自己选吧。选完下一步。

image-20220422140106214

最后是备份的其它设置。我觉得它的智能模式不错。你也可以选其它的。点击“保存”。阿里云WebDav有个注意事项,就是远程卷大小的上限应该为10MB

chrome_CFTll8RtnP

最后,首页会出现一个新的备份项目:

image-20220422140302241

我们按下立即运行,试试看能不能成功。因为我们的文件很小,很快就成功了:

image-20220422140352083

我们可以去阿里云看看它的备份文件:

image-20220422140435175

看吧,并不是原来的样子啦!我们原来是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

下面,我们再备份一下。很快就成功了:

image-20220422140830023

这时,我们去阿里云康康:

image-20220422140905835

已经发生了备份了!现在我们将本地的内容全部删除:

cd ~/test && rm -r *

然后尝试恢复文件。

恢复文件

尝试从项目中恢复。下一步。

image-20220422141047454

看下面!它可以恢复你保留的任何版本。我们已经产生了2个版本:

image-20220422141146656

我们选择其中那个最新的吧!选中文件夹,然后点继续

下面它会询问恢复的位置。你可以自己选一个位置。我们这里可以用原位置,恢复读写权限,并覆盖。这些用法都看实际情况了:

image-20220422141419402

最后,按恢复文件。成功了!它还打了个小广告,不用理踩。

image-20220422141542999

我们在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文件。具体操作如下:

chrome_b8w6vVmmG3

然后点击导出即可:

chrome_gcAeBBpmSl

如果在某个Duplicati中想要恢复的时候,只要:

chrome_Caw74qazRH

如果路径有不同,就自己更改一下即可。也是蛮简单的!

其它备份媒介

SFTP

如果你有NAS或者是甲骨文免费大盘鸡4核24G内存最高200G硬盘,网上相关的视频/博客教程很多,比如这里;建议有条件的小伙伴去申请一下)这种磁盘比较大的Linux服务器,将数据通过sftp的方式进行加密备份是非常方便的,也很安全。

下图展示了我在甲骨文免费大盘鸡里的实时备份信息:

MobaXterm1_CHS_lGnzx10dvZ

要记得先在VPS里面的创建服务器上路径。如果你不事先创建,可能会带来问题。切记切记!

一般的设置类似于:

NVIDIA_Share_EOpGUm5pAq

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部分,也就是写备份保存位置这里:

image-20220501082926257

你要严格地遵循以下步骤:

  • 不要在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的用户名和密码

image-20220502075621891

我测试了一下,可以成功!如图:

image-20220502080051140

我感觉,利用duplicati + NAS + Nextcloud是将远部服务器数据备份至本地(比如家里)的一个十分优雅的实现策略。Nextcloud确实十分方便!

邮件提醒

尽管有该功能,但duplicati有时候不报错而是卡顿,此时会影响后续任务的备份。所以还是要定期上去看看,排除故障。

如果我想在备份失败时收到duplicati的邮件提醒,应该怎么做?没有邮件提醒功能的Duplicati是没有灵魂的。幸运的是,我们可以通过高级选项进行邮件提醒功能的配置。实际上,Duplicati还有很多高级选项,你可以在官网手册里查看它们的意义和用法。下面我以QQ邮箱作为发件平台进行示范,其它邮件提供商的方法应该是类似的,自己摸索一下。

准备信息

首先,通过以文本形式编辑来定义默认选项:

image-20220701214349565

准备下列信息(如果你大概知道它的内容是什么,可以适当改动):

--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服务里生成授权码:
    chrome_OhVpmjAlOm
  • 如果你不是使用QQ邮箱作为发送端,--send-mail-url也要做相应的调整。

粘贴配置

信息准备好后,直接粘贴并保存:

chrome_7QceVqoJnt

回到Duplicati的首页,对一个测试项目进行备份(主要是测试项目比较小,备份速度快):

chrome_bCBjvvumlK

很快啊,接收端的邮件就到了!内容类似于:

chrome_7ZoBsW6nnd

这个信息和后台的Complete log是一一对应的:

chrome_6RcbTtKA2y

如果你收到的是Warning和Error,也很快知道是哪里出问题,这样你就知道什么时候得去duplicati后台debug一下。此外,我还建议你在收件邮箱里使用标签或分类功能,这样方便集中查看duplicati的提醒信息。

就问你爽不爽?妈妈再也不用担心我的duplicati备份了!

Bug处理

Missing blocks

参考How to list / purge broken files

如果你备份一个较大的目录时(>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-filespurge-broken-files这两个修复命令,原理可能是删除错误的blocks。

具体操作是:先从Commandline里进去:

image-20220715150310704

先运行list-broken-files命令:

Code_AONDMxakQQ

再运行purge-broken-files命令:

Code_yfam5sajWl

完成后,再回去主界面重新备份一下。一次不行多试几次,一般都可以成功。如果你不太明白,加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!

参考/扩展阅读

日志

2023-03-06

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

并且远程连接经测试都是正常的。

更奇怪的是,并不是所有的记录都会出错,有一些记录就是正常运作。而且这些记录并不是一开始就出错,而是运行了几次才忽然出错。我感觉可能是阿里云是否对这种传输进行了限制?

目前暂无头绪。持续观察中!

---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍

感谢Faconhost的友情赞助 (ฅ´ω`ฅ) 本博客基于m2w创作。版权声明:除特殊说明,博客文章均为Bensz原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。VIP内容严禁转载!由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。如有需要,请至学习地图系统学习本博客的教程。加Telegram群可获得更多帮助喔! | 博客订阅:RSS | 广告招租请留言 | 博客VPS | 致谢渺软公益CDN |

评论

  1. zen010101
    Windows Edge 129.0.0.0
    2 月前
    2024-9-23 0:02:16

    bitwarden 可以导出加密的json文件,每次添加密码之后导出一个备份,然后自动同步到 OneDrive 中(我们的有生之年应该还看不到微软倒闭或跑路的那一天)。。。

    • 博主
      zen010101
      Windows Edge 129.0.0.0
      2 月前
      2024-9-23 17:41:37

      也不用这么麻烦 (ฅ´ω`ฅ) 我都是duplicati备份。 根据我的使用经验,bitwarden的镜像还是很稳定的,没遇到过bug。要做一些高危操作时临床备份一下也是可以的

  2. Windows Chrome 123.0.0.0
    9 月前
    2024-3-23 22:57:36

    大佬,登录到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.

    • 博主
      danBoy
      Windows Edge 123.0.0.0
      8 月前
      2024-3-28 12:00:21

      阿里云WebDav我没有在使用,因为之前的测试表明其并不稳定。

  3. huawuhen
    Windows Edge 120.0.0.0
    10 月前
    2024-1-25 20:27:49

    你好,我这运行2天就打不开了,重启容器也不行。必须重新重装才可以。不知道哪里原因,日志有一条报错:[ERROR] FATAL UNHANDLED EXCEPTION: System.UriFormatException: Invalid URI: Invalid port specified.

    • 博主
      huawuhen
      Windows Edge 123.0.0.0
      8 月前
      2024-3-28 12:01:26

      问题解决了吗?

      • huawuhen
        Bensz
        Windows Edge 122.0.0.0
        8 月前
        2024-3-28 17:11:38

        并没有,我换rclong了

  4. Windows Chrome 114.0.0.0
    1 年前
    2023-6-12 10:16:18

    使用rclone,cron来自动备份,更加轻量级

    • 博主
      bloodking
      Windows Edge 114.0.1823.43
      1 年前
      2023-6-12 10:17:36

      rclone确实有不少小伙伴推荐。以后有时间看看!

  5. shule
    Windows Chrome 110.0.0.0
    2 年前
    2023-2-28 19:23:12

    Google drive 的授权 ID 去哪里获得呀?

    • 博主
      shule
      Windows Chrome 110.0.0.0
      2 年前
      2023-2-28 19:46:05

      你在使用的过程中按duplicati的提示即可,它会自动帮你申请的。前提是你可以使用Google账户喔!

  6. TURIING
    Windows Chrome 95.0.4638.69
    2 年前
    2023-1-26 21:09:10

    我觉得用腾讯云的对象存储会更好点?

    • 博主
      TURIING
      Windows Edge 109.0.1518.61
      2 年前
      2023-1-26 21:10:24

      如果你的VPS在国内,用国内的服务应该是挺好的 (☆ω☆)

  7. ovst
    Windows Edge 107.0.1418.62
    2 年前
    2022-12-06 19:18:04

    看的懵懵懂懂的,虽然里面写了备份“实例”。但我怎么感觉仍然是对一个文件夹的内容进行定期备份呢?
    对文件夹的备份,像群晖系统里面有个云同步的功能,我就是把要备份的文件夹内容,已单向上传的方式同步去云端保存。
    如果仅是对文件夹的备份,docker中的nextcloud崩溃了,自己也还是只能还原数据,nextcloud里面的配置啥(如文件共享、评价)不还是都没了。

    • 博主
      ovst
      Windows Edge 107.0.1418.62
      已编辑
      2 年前
      2022-12-06 19:37:12

      是的,本质上是备份一个文件夹。但是,如果你布署docker时(一般是基于docker-compose)正确地将重要的文件夹映射到宿主机(比如web根目录、数据库等),本质上只需要备份文件夹就行。恢复的时候,只要恢复该文件夹的内容(包含一个docker-compose.yml文件),运行一下docker-compose up -d,就可以满血复活了。

      • 博主
        Bensz
        Windows Edge 107.0.1418.62
        2 年前
        2022-12-06 19:39:43

        通常来说,一个docker应用的数据由两大部分组成:布署环境和用户数据。我们只需要备份用户数据;布署环境则由docker容器来定义,这个是固定的,可以直接从dockerhub里pull下来,故不需要额外备份。

      • ovst
        Bensz
        Windows Edge 107.0.1418.62
        2 年前
        2022-12-06 21:57:58

        OK,又学到知识点了。
        那我就按这个方案执行
        https://hexo.chensmallx.top/2021/04/08/nextcloud-on-docker/#%E5%89%8D%E8%A8%80
        使用docker-compose搭建nextcloud+Nginx+MySQL+Redis
        博主要不放个打赏二维码,我都想打赏下了,表示谢意

      • 博主
        ovst
        Windows Edge 107.0.1418.62
        2 年前
        2022-12-06 22:19:27

        谢谢大佬,哈哈!赞赏码如下: https://blognas.hwb0307.com/thankyou

  8. 信平
    Windows Edge 107.0.1418.26
    2 年前
    2022-11-02 16:26:42

    我想问下,“这是我用Duplicati备份一个实例时的系统占用”那个显示系统占用的程序是什么

    • 博主
      信平
      Windows Edge 107.0.1418.26
      2 年前
      2022-11-02 22:03:47

      不好意思,忙起来忘了(~ ̄▽ ̄)~ 这个软件叫netdata。我也有相关的教程: https://blognas.hwb0307.com/linux/docker/1845 。当然,更多教程在学习地图中被系统整理了,有空可看看哈(☆ω☆)。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇