一、容器化安装
官网:Kopia
windows、mac、linux、docker的都有,自己找合适的版本
github上各个历史版本,Releases · kopia/kopia (github.com)
容器化安装docker-compose
version: '3.7'
services:
kopia:
image: kopia/kopia:latest
hostname: Hostname
container_name: Kopia
restart: unless-stopped
privileged: true
ports:
- 51515:51515
# Setup the server that provides the web gui
command:
- server
- start
- --disable-csrf-token-checks
- --insecure
- --address=0.0.0.0:51515
- --server-username=USERNAME # 登录用户
- --server-password=SECRET_PASSWORD # 登录密码
environment:
# Set repository password
KOPIA_PASSWORD: "SECRET" # 存储库密码,丢失后无法找回数据
USER: "User" # 存储库用户
volumes: # 备份过程中用到的所有文件都需要持久化挂载至容器内部
# Mount local folders needed by kopia
- /path/to/config/dir:/app/config
- /path/to/cache/dir:/app/cache
- /path/to/logs/dir:/app/logs
# Mount local folders to snapshot
- /path/to/data/dir:/data:ro
# Mount repository location
- /path/to/repository/dir:/repository
# Mount path for browsing mounted snaphots
- /path/to/tmp/dir:/tmp:shared
networks:
default:
external:
name: docker_Network
docker-compose up -d
浏览器输入 IP:51515 即可登录
登录后的界面
二、图形化界面
1、本地备份
① 选中上图中第一个( local Directory or NAS )
② 输入存储备份数据的目录
③ 创建存储库,输入密码(忘记密码后不可登录这个库),设置完成点击 Create Repository
④ 点击 New Snapshots ,创建新的快照
⑤ 输入需要备份的文件或目录,设置备份策略,一般只需设置备份文件个数,文件压缩方式,备份时间。
至少保存最近几次的备份,保存最近几小时的各一份,保存最近几天的各一份,保存最近几周的各一份,保存最近几月的各一份,保存最近几年的各一份
无特殊要求选默认,有特殊要求可以去官网查看各个压缩方式的特点
设置每天的几点执行备份,设置完成点击 Snapshop Now,Estimate选项可以检测文件个数和大小
⑥ 点击目录即可进入,查看备份的文件快照
⑦ 选择需要恢复到的时间点
⑧ 选择需要恢复的目录或文件
⑨ 输入需要恢复到的路径,设置需要的选项(一般默认即可),点击开始还原,即可将数据恢复到输入的路径,等待恢复完成即可输入的目录下查看恢复的数据
⑩ 直接点击文件还可以下载至本地
2、SFTP备份
SFTP和本地备份只有创建存储库不同,其他都一样,这里只讲创建存储库的方法
连接成功之后,选择SFTP Server
host:存储库所在服务器的IP
user:存储库所在服务器的一个用户
port:该服务器ssh协议所暴露的端口
password:该用户的密码
path to key file :key 文件所在路径 path to known_hosts file :known_hosts文件所在路径
key date :key file的内容(秘钥) known_hosts date:known_hosts的内容
两个红框中的内容不需要都填
如果没有做免密登录,可以创建一个专门用来备份的用户,只填写密码即可,但是需要注意该账号密码的有效期;如果做了免密登录,key file和known_hosts的文件路径和内容二选一即可
三、命令行
命令行需要输入命令完成图形化界面中提到的各个步骤,比较麻烦,一般不能暴露端口的情况下才会使用,以sftp为例
① 创建存储库
kopia repository create sftp --no-check-for-updates --path=/opt/backup-kopia --host=192.168.117.122 --port=22 --username=kopia --sftp-password=madebiao123? --known-hosts=/root/.ssh/known_hosts -p=bvbNP2BecZQfV8OskQZ2
-p, --password=PASSWORD 指定存储库密码
--[no-]check-for-updates 是否自动检查更新kopia
--description=DESCRIPTION 存储库描述(可不设置)
--[no-]enable-actions 是否允许拍摄快照(默认可以)
--path=PATH 存储库路径
--host=HOST sftp存储库所在主机名
--port=22 sftp存储库主机端口
--username=USERNAME sftp存储库主机用户
--sftp-password=SFTP-PASSWORD sftp存储库主机密码
--keyfile=KEYFILE path to private key file for SFTP/SSH server
--key-data=KEY-DATA 免密登录时的 key file 路径
--known-hosts=KNOWN-HOSTS known_hosts 文件路径
--known-hosts-data=KNOWN-HOSTS-DATA 免密登录时的 known_hosts file 内容
export KOPIA_PASSWORD=节点密码 #默认密码
export KOPIA_CHECK_FOR_UPDATES=false # 禁止kopia自动更新
创建存储库时的返回信息
Enter password to create new repository: # 创建时未指定存储库密码会在创建后要求输入
Re-enter password for verification:
Initializing repository with:
block hash: BLAKE2B-256-128
encryption: AES256-GCM-HMAC-SHA256
splitter: DYNAMIC-4M-BUZHASH
Connected to repository.
NOTICE: Kopia will check for updates on GitHub every 7 days, starting 24 hours after first use. # 自动更新
To disable this behavior, set environment variable KOPIA_CHECK_FOR_UPDATES=false
Alternatively you can remove the file "/root/.config/kopia/repository.config.update-info.json".
Retention: # 备份策略
Annual snapshots: 3 (defined for this target)
Monthly snapshots: 24 (defined for this target)
Weekly snapshots: 4 (defined for this target)
Daily snapshots: 7 (defined for this target)
Hourly snapshots: 48 (defined for this target)
Latest snapshots: 10 (defined for this target)
Ignore identical snapshots: false (defined for this target)
Compression disabled.
To find more information about default policy run 'kopia policy get'.
To change the policy use 'kopia policy set' command.
NOTE: Kopia will perform quick maintenance of the repository automatically every 1h0m0s
and full maintenance every 24h0m0s when running as root@k8s-master01.
② 连接存储库 ,只需要把creat更换位connect
kopia repository connect sftp --path=/opt/backup --host=192.168.117.111 --port=22 --username=kopia --sftp-password=madebiao123? --known-hosts=/root/.ssh/known_hosts -p=bvbNP2BecZQfV8OskQZ2
③ 创建快照
kopia snapshot create [<flags>] [<source>...]
--log-file=LOG-FILE 指定日志文件
--log-dir="/root/.cache/kopia" Directory where log files should be written. ($KOPIA_LOG_DIR)
--log-level=info 日志等级
--file-log-level=debug File log level
--config-file="repository.config" Specify the config file to use ($KOPIA_CONFIG_PATH)
kopia snapshot list 列出快照
④ 设置策略
kopia policy set [<flags>] [<target>...]
<flags>
--compression=deflate-default
--snapshot-time=拍摄快照的时间
--keep-latest=10 Number of most recent backups to keep per source (or 'inherit')
--keep-hourly=48 Number of most-recent hourly backups to keep per source (or 'inherit')
--keep-daily=7 Number of most-recent daily backups to keep per source (or 'inherit')
--keep-weekly=4 Number of most-recent weekly backups to keep per source (or 'inherit')
--keep-monthly=24 Number of most-recent monthly backups to keep per source (or 'inherit')
--keep-annual=3 Number of most-recent annual backups to keep per source (or 'inherit')
<target> Select a particular policy ('user@host','@host','user@host:path' or a local path). Use --global to target the global policy.
指定一个特定的策略('user@host','@host','user@host:path' or a local path)或者使用 --global 定义全局的策略
kopia policy edit - # 为单个目录、user@host或全局策略编辑快照策略
kopia policy list - # 列出所有的策略
kopia policy delete - # 删除单个目录、user@host或全局策略的快照策略
kopia policy set - # 为单个目录、user@host或全局策略设置快照策略
kopia policy show - # 显示快照策略
⑤ 查看/data/test的快照策略
kopia policy show /data/test
Policy for root@ecs-dso-pro-db-0002:/data/test:
Retention:
Annual snapshots: 3 inherited from (global)
Monthly snapshots: 24 inherited from (global)
Weekly snapshots: 4 inherited from (global)
Daily snapshots: 7 inherited from (global)
Hourly snapshots: 48 inherited from (global)
Latest snapshots: 10 inherited from (global)
Ignore identical snapshots: false inherited from (global)
Files policy:
Ignore cache directories: true inherited from (global)
No ignore rules:
Read ignore rules from files: inherited from (global)
.kopiaignore
Scan one filesystem only: false inherited from (global)
Error handling policy:
Ignore file read errors: false inherited from (global)
Ignore directory read errors: false inherited from (global)
Ignore unknown types: true inherited from (global)
Scheduling policy:
Scheduled snapshots:
Run missed snapshots: true inherited from (global)
Snapshot times: (defined for this target)
1:00
Manual snapshot: false inherited from (global)
Uploads:
Max parallel snapshots (server/UI): 1 inherited from (global)
Max parallel file reads: - inherited from (global)
Parallel upload above size: 2.1 GB inherited from (global)
Compression:
Compressor: deflate-default (defined for this target)
Compress files regardless of extensions.
Compress files of all sizes.
No actions defined.
Logging details (0-none, 10-maximum):
Directory snapshotted: 5 inherited from (global)
Directory ignored: 5 inherited from (global)
Entry snapshotted: 0 inherited from (global)
Entry ignored: 5 inherited from (global)
Entry cache hit: 0 inherited from (global)
Entry cache miss: 0 inherited from (global)
⑥ 恢复
kopia snapshot restore [<flags>] <sources>
--snapshot-time=SNAPSHOT-TIME # 指定从哪个快照恢复,默认最新快照
以下是一些可能会用到的命令,官网也有
存储库类型
filesystem s3 b2 gcs gdrive webdav sftp rclone
将存储库数据同步至其他存储库
kopia repository sync-to
diff - 显示两个存储库对象(文件或目录)之间的差异
list - 列出存储在存储库对象中的目录
restore - 还原目录或文件
show - 显示存储库对象的内容
mount - 将存储库对象挂载为本地文件系统
export KOPIA_PASSWORD=<密码> shell中免输入储存库密码
用于快照的命令
snapshot copy-history - 从其他用户或主机执行快照历史记录的副本
snapshot move-history - 从其他用户或主机执行快照历史记录的移动
snapshot create - 创建本地目录或文件的快照
snapshot delete - 通过提供快照 ID 显式删除快照
snapshot estimate - 估计快照大小和上传时间
snapshot expire - 根据定义的过期策略删除旧快照
snapshot fix invalid-files - 从快照中删除对任何无效(不可读)文件的引用
snapshot fix remove-files - 从快照中删除对指定文件的引用
snapshot list - 列出文件和目录的快照
snapshot migrate - 从其他存储库迁移快照
snapshot pin - 添加或删除防止快照删除的引脚
snapshot restore - 还原目录或文件
snapshot verify - 验证存储的快照的内容
用于操作快照策略的命令
policy edit - 为单个目录、user@host或全局策略设置快照策略
policy list - 列出策略
policy delete - 删除单个目录、user@host或全局策略的快照策略
policy set - 为单个目录、user@host或全局策略设置快照策略
policy show - 显示快照策略
连接至存储库
repository connect server - 连接到存储库 API 服务器
repository connect from-config - 连接到提供的配置文件中的存储库
repository connect azure - 连接到 Azure Blob 存储中的存储库
repository connect b2 - 连接到 B2 存储桶中的存储库
repository connect filesystem - 连接到文件系统中的存储库
repository connect gcs - 连接到 Google Cloud Storage 存储分区中的存储库
repository connect gdrive - 连接到 Google Drive 文件夹中的存储库
repository connect rclone - 连接到基于 rclone 的存储库
repository connect s3 - 连接到 S3 存储桶中的存储库
repository connect sftp - 连接到 SFTP 存储中的存储库
repository connect webdav - 连接到 WebDAV 存储中的存储库
创建存储库
repository create from-config - 在提供的配置文件中创建存储库
repository create azure - 在 Azure blob 存储中创建存储库
repository create b2 - 在 B2 存储桶中创建存储库
repository create filesystem - 在文件系统中创建存储库
repository create gcs - 在 Google Cloud Storage 存储分区中创建存储库
repository create gdrive - 在 Google Drive 文件夹中创建存储库
repository create rclone - 在基于 rclone 的提供中创建存储库
repository create s3 - 在 S3 存储桶中创建存储库
repository create sftp - 在 SFTP 存储中创建存储库
repository create webdav - 与存储库的连接
恢复存储库
repository repair from-config - 在提供的配置文件中修复存储库
repository repair azure - 修复 Azure Blob 存储中的存储库
repository repair b2 - 修复 B2 存储桶中的存储库
repository repair filesystem - 修复文件系统中的存储库
repository repair gcs - 修复 Google Cloud Storage 存储分区中的存储库
repository repair gdrive - 修复 Google 云端硬盘文件夹中的存储库
repository repair rclone - 在基于 rclone 的存储库中修复提供的存储库
repository repair s3 - 修复 S3 存储桶中的存储库
repository repair sftp - 修复 SFTP 存储中的存储库
repository repair webdav - 修复 WebDAV 存储中的存储库
repository set-client - 设置存储库客户端选项
repository set-parameters - 设置仓库参数
repository status - 显示已连接存储库的状态
repository sync-to from-config - 将存储库数据同步到提供的配置文件中的另一个存储库
repository sync-to azure - 将存储库数据同步到 Azure Blob 存储中的另一个存储库
repository sync-to b2 - 将存储库数据同步到 B2 存储桶中的另一个存储库
repository sync-to filesystem - 将存储库数据同步到文件系统中的另一个存储库
repository sync-to gcs - 将存储库数据同步到 Google Cloud Storage 存储分区中的另一个存储库
repository sync-to gdrive - 将存储库数据同步到 Google 云端硬盘文件夹中的另一个存储库
repository sync-to rclone - 储库数据同步到 S3 存储桶中的另一个存储库
repository sync-to sftp - 将存储库数据同步到 SFTP 存储中的另一个存储库
repository sync-to webdav - 将存储库数据同步到 WebDAV 存储中的另一个存储库
repository throttle get - 获取存储库的限制参数
repository throttle set - 设置存储库的限制参数
repository change-password - 更改存储库密码
repository validate-provider - 验证存储库提供程序是否与 Kopia 兼容
有错误还望大家多多指正,感谢!!!