
Dockerfile 链接duplicity 是一款备份工具。
本Docker镜像的特点:
1896),且支持以任意用户身份运行。bash$ docker run --rm wernight/duplicity duplicity --help
使用时需注意:
/home/duplicity/.cache/duplicity 到可写位置(若不缓存,duplicity将需要从远程仓库重新创建缓存,这可能需要解密备份内容)。注意该目录可能较大,且包含明文存储的已备份文件元数据。/home/duplicity/.gnupg 到可写位置(该目录用于验证增量备份,若按以下步骤操作,恢复备份时可能无需此目录)。--allow-source-mismatch,因为Docker容器的主机名是随机的。PASSPHRASE,除非希望在提示中手动输入(此时需添加 -it 参数)。以下命令可定期执行以实现备份及清理/维护(不同存储选项见下文):
bash$ docker run --rm ... wernight/duplicity duplicity --full-if-older-than=6M source_directory target_url $ docker run --rm ... wernight/duplicity duplicity remove-older-than 6M --force target_url $ docker run --rm ... wernight/duplicity duplicity cleanup --force target_url
上述命令的作用:
Google Cloud Storage 的 nearline 存储费用约为 $0.01/GB/月。
设置步骤:
gsutil config -a 生成 ~/.boto 配置文件,并填入上述信息(也可尝试设置环境变量 GS_ACCESS_KEY_ID 和 GS_SECRET_ACCESS_KEY,但经测试可能无法设置项目ID)。~/.boto 文件应类似:ini[Credentials] gs_access_key_id = MYGOOGLEACCESSKEY gs_secret_access_key = SomeVeryLongAccessKeyXXXXXXXX [GSUtil] default_project_id = 1233457890
执行备份:
bash$ docker run --rm --user $UID \ -e PASSPHRASE=P4ssw0rd \ -v $PWD/.cache:/home/duplicity/.cache/duplicity \ -v $PWD/.gnupg:/home/duplicity/.gnupg \ -v ~/.boto:/home/duplicity/.boto:ro \ -v /:/data:ro \ wernight/duplicity \ duplicity --full-if-older-than=6M --allow-source-mismatch /data gs://my-bucket-name/some_dir
执行恢复:
恢复需:
.boto 文件以访问Google Cloud Storage。PASSPHRASE。bash$ docker run --rm --user $UID \ -e PASSPHRASE=P4ssw0rd \ -v ~/.boto:/home/duplicity/.boto:ro \ -v /:/data:ro \ wernight/duplicity \ duplicity restore gs://my-bucket-name/some_dir /data
另见 Google Cloud Storage 说明。
Google Drive 提供15GB免费存储空间。
设置步骤:
pydriveprivatekey.p12),并记录关联的服务账号***(如 duplicity@developer.gserviceaccount.com)。bash$ docker run --rm -i --user $UID \ -v $PWD/pydriveprivatekey.p12:/pydriveprivatekey.p12:ro \ wernight/duplicity \ openssl pkcs12 -in /pydriveprivatekey.p12 -nodes -nocerts >pydriveprivatekey.pem Enter Import Password: notasecret
执行备份:
bash$ docker run --rm --user $UID \ -e PASSPHRASE=P4ssw0rd \ -e GOOGLE_DRIVE_ACCOUNT_KEY=$(cat pydriveprivatekey.pem) \ -v $PWD/.cache:/home/duplicity/.cache/duplicity \ -v $PWD/.gnupg:/home/duplicity/.gnupg \ -v /:/data:ro \ wernight/duplicity \ duplicity --full-if-older-than=6M --allow-source-mismatch /data pydrive://duplicity@developer.gserviceaccount.com/some_dir
执行恢复:
恢复需:
PASSPHRASE。若可通过SSH访问某台机器:
bash$ docker run --rm -it --user root \ -e PASSPHRASE=P4ssw0rd \ -v $PWD/.cache:/home/duplicity/.cache/duplicity \ -v $PWD/.gnupg:/home/duplicity/.gnupg \ -v ~/.ssh/id_rsa:/id_rsa:ro \ -v ~/.ssh/known_hosts:/etc/ssh/ssh_known_hosts:ro \ -v /:/data:ro \ wernight/duplicity \ duplicity --full-if-older-than=6M --allow-source-mismatch \ --rsync-options='-e "ssh -i /id_rsa"' \ /data rsync://user@example.com/some_dir
注意:此处以 root 用户运行,以访问 ~/.ssh,且SSH不允许使用随机(本地不存在的)UID。为提高安全性,可复制 ~/.ssh 并执行 chown 1896(容器内duplicity用户的UID)。若有其他方法避免 "No user exists for uid" 检查,欢迎反馈。
以下别名可适用于大多数场景:
bash$ alias duplicity='docker run --rm --user=root -v ~/.ssh/id_rsa:/home/duplicity/.ssh/id_rsa:ro -v ~/.boto:/home/duplicity/.boto:ro -v ~/.gnupg:/home/duplicity/.gnupg -v /:/mnt:ro -e PASSPHRASE=$PASSPHRASE wernight/duplicity duplicity $@'
设置后,可像本地安装一样使用duplicity,例如:
bash$ PASSPHRASE=123456 duplicity --progress /mnt rsync://user@example.com/some_dir
问题/疑问/功能请求请在 https://github.com/wernight/docker-duplicity/issues 提交。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务