与restic相同, BorgBackup 中也有两个基本概念:

  • repository 备份仓库
  • archive 每次备份

基本命令

1
2
3
4
5
6
borg init -- 初始化一个repository
borg create -- 创建一个archive到repository中
borg list -- 列出所有的repository或者某个repository中某个archive的内容
borg extract -- 还原某个archive
borg delete -- 手动删除某个archive
borg config -- 获取或者设置某个配置

流程

创建仓库存储目录并初始化:

1
2
3
$ mkdir -p /tmp/backup/
#初始化 repository 的时候,可以指定加密类型
$ borg init --encryption=repokey /tmp/backup/borg_sample

第一次备份:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
$ borg create --stats --progress /tmp/backup/borg_sample::first /tmp/data/
------------------------------------------------------------------------------
Archive name: first
Archive fingerprint: bd5ddf9ac944353bb209576c12a16652a18f866c9d033fef2eb582d288a3cff5
Time (start): Sat, 2022-01-29 10:48:07
Time (end):   Sat, 2022-01-29 10:48:07
Duration: 0.54 seconds
Number of files: 3
Utilization of max. archive size: 0%
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
This archive:              104.86 MB            105.27 MB            105.27 MB
All archives:              104.86 MB            105.27 MB            105.27 MB

                       Unique chunks         Total chunks
Chunk index:                      42                   42
------------------------------------------------------------------------------

如果不传 –stats –progress 则静默输出。

在 create 的时候可以选择使用压缩算法,如果不指定压缩算法,默认会使用 LZ4:

1
2
borg create --compress zstd,1 /tmp/backup/borg_sample::zstd /tmp/data/
borg create --compress none /tmp/backup/borg_sample::none /tmp/data/

列出备份:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ borg list /tmp/backup/borg_sample/
first                                Sat, 2022-01-29 10:48:07 [bd5ddf9ac944353bb209576c12a16652a18f866c9d033fef2eb582d288a3cff5]
second                               Sat, 2022-01-29 10:49:27 [6a5131bc1098d4ba46daabc6e440d6daf9211db94ac2d17893f996ce78840162]


$ borg list /tmp/backup/borg_sample::first
drwxrwxr-x einverne einverne        0 Sat, 2022-01-29 10:47:39 tmp/data
-rw-rw-r-- einverne einverne 104857600 Sat, 2022-01-29 10:47:41 tmp/data/ramdom.dump
-rw-rw-r-- einverne einverne       11 Sat, 2022-01-29 10:47:11 tmp/data/file_change.txt
-rw-rw-r-- einverne einverne       12 Sat, 2022-01-29 10:47:21 tmp/data/file_static.txt

恢复备份:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ borg extract --list /tmp/backup/borg_sample::first
tmp/data
tmp/data/file_change.txt
tmp/data/file_static.txt
tmp/data/random.dump

$ borg extract --list /tmp/backup/borg_sample::second
tmp/data
tmp/data/file_change.txt
tmp/data/file_static.txt
tmp/data/random.dump
tmp/data/file_new.txt
tmp/data/random_2.dump

删除备份:

1
2
3
$ borg delete /tmp/backup/borg_sample::first
$ borg list /tmp/backup/borg_sample
second                               Tue, 2019-09-24 04:10:55 [a423a94e8a8f4352e72c0951e6a408f4f4f6d5f362518dcbcba77b9005dafa12]

其他命令

此外还有一些常用命令

1
2
3
4
5
6
7
borg diff /tmp/backup/borg_sample::first second   -- 查找archive之间的差异
borg rename /tmp/backup/borg_sample::first begin  -- 重命名archive
borg mount /tmp/backup/borg_sample::first /tmp/mymountpoint  -- fuse挂载archive
borg umount /tmp/mymountpoint  -- fuse卸载archive
borg prune -v --list --keep-daily=7 --keep-weekly=4 --keep-monthly=-1 /tmp/backup/borg_sample  -- 配置archive保留规则
borg compact /tmp/backup/borg_sample -- 压缩repository 释放空间
borg info /tmp/backup/borg_sample  -- 查询repository或者archive信息