当前位置: 首页 > news >正文

学习使用备份软件BorgBackup

Time Machine是官方提供的强大备份系统,它能够备份macOS系统的一切,包括文件、照片、网页纪录、帐号密码以及安装过的软件等。如果系统出了问题,使用”时光回溯“,系统就能回到任意记录点,用过的多说好!

BorgBackup支持增量备份,支持压缩和去重,试用一下,看看它能否达到MAC下时光机器的大部分功能。官网:BorgBackup – Deduplicating archiver with compression and authenticated encryption

1.4版本手册:Quick Start — Borg - Deduplicating Archiver 1.4.0 documentation 

安装BorgBackup

FreeBSD下直接pkg安装

pkg install py311-borgbackup

安装好后提示信息:

Message from fusefs-libs-2.9.9_2:

--
Install the FUSE kernel module (kldload fusefs) to use this port.
=====
Message from py311-borgbackup-1.4.0_1:

--
In order to mount locally a remote archive or an entire repository as a FUSE
filesystem, it is required to load fusefs module, for instance, as root, run:

    kldload fusefs

To load the module at boot time, you can add it to the kld_list variable
in /etc/rc.conf or related files, for instance, by running

    sysrc kld_list+=fusefs

as root.  Alternatively, to load the module earlier, you can manually add

    fusefs_load="YES"

to /boot/loader.conf.local or /boot/loader.conf with a text editor.


Also, if you plan to mount borg repositories as non root user, you need to run

# sysctl vfs.usermount=1

and add the line

vfs.usermount=1

to /etc/sysctl.conf to ensure the setting is loaded at boot time.
 

从提示信息,可以知道它使用了FUSEFS系统

FUSEFS,即Filesystem in Userspace(用户空间文件系统),是Linux内核中的一个模块,它允许用户空间程序实现文件系统的操作,而无需修改内核代码。FUSEFS为用户提供了极大的灵活性和可扩展性,使得用户可以轻松开发和使用自定义的文件系统。

设置fusefs内核等

按照提示,load内核,并设置为启动后自动调入内核
 

kldload fusefssysrc kld_list+=fusefs

设为普通用户可以用,在root下执行

sysctl vfs.usermount=1

 并把这句

vfs.usermount=1

写入到 /etc/sysctl.conf

查看版本

borg --version
borg 1.4.0

Ubuntu下apt安装

sudo apt install borgbackup

查看版本:

borg --version
borg 1.2.8

使用BorgBackup

初始化

设置备份目录到一台服务器并初始化

borg init --encryption=none skywalk@192.168.1.5:/home/skywalk/borgbak
(skywalk@192.168.1.5) Password for skywalk@fb5:

目录显示

cd borgbak/
skywalk@fb5:~/borgbak $ ll
total 32
drwxr-xr-x   3 skywalk skywalk uarch     8 Aug  5 22:52 ./
drwxr-xr-x  12 skywalk skywalk uarch    23 Aug  5 22:52 ../
-rw-------   1 skywalk skywalk uarch    73 Aug  5 22:52 README
-rw-------   1 skywalk skywalk uarch   209 Aug  5 22:52 config
drwx------   3 skywalk skywalk uarch     3 Aug  5 22:52 data/
-rw-------   1 skywalk skywalk uarch    70 Aug  5 22:52 hints.1
-rw-------   1 skywalk skywalk uarch 41258 Aug  5 22:52 index.1
-rw-------   1 skywalk skywalk uarch   190 Aug  5 22:52 integrity.1

为了方便,可以把备份目录设为一个变量:

export BORG_REPO=skywalk@192.168.1.5:/home/skywalk/borgbak 
sudo borg init --encryption=none $BORG_REPO
 

执行备份

执行备份

创建仓库后,就可以开始执行备份了。使用borg create命令可以创建一个新的备份。以下是一个示例命令,它将指定目录备份到之前创建的仓库中:

sudo borg create --stats --progress $BORG_REPO::{hostname}-{now} /etc

borg create --stats --progress $BORG_REPO::{hostname}-{now} /etc /home/skywalk/obsidian/ /usr/local/etc

borg create --stats --progress skywalk@192.168.1.5:/home/skywalk/borgbak::money /etc /home/skywalk/obsidian/ /usr/local/etc

borg create  skywalk@192.168.1.5:/home/skywalk/borgbak::Monday /etc /home/skywalk/obsidian/ /usr/local/etc

要尤其注意命令里面的空格,不能有两个空格。

以上命令并没有运行成功,真正成功的语句见下面:

成功的备份

borg create skywalk@192.168.1.5:/home/skywalk/borgbak::Monday /etc /home/skywalk/obsidian/ /usr/local/etc
(skywalk@192.168.1.5) Password for skywalk@fb5:
Archive Monday already exists
提示Monday已经存在了,那我们就创建一个Tuesday

再创建一个备份,名字叫Tuesday

borg create --stats skywalk@192.168.1.5:/home/skywalk/borgbak::Tuesday /etc /home/skywalk/obsidian/ /usr/local/etc

输出

borg create --stats skywalk@192.168.1.5:/home/skywalk/borgbak::Tuesday /etc /home/skywalk/obsidian/ /usr/local/etc
(skywalk@192.168.1.5) Password for skywalk@fb5:
------------------------------------------------------------------------------
Repository: ssh://skywalk@192.168.1.5/home/skywalk/borgbak
Archive name: Tuesday
Archive fingerprint: a21bc14b605c6d2f8bb92e50330934078d1227ab7654f1b713b2d016a8666b2c
Time (start): Mon, 2024-08-05 23:23:06
Time (end):   Mon, 2024-08-05 23:23:10
Duration: 4.86 seconds
Number of files: 1073
Utilization of max. archive size: 0%
------------------------------------------------------------------------------Original size      Compressed size    Deduplicated size
This archive:                6.97 MB              3.08 MB              1.33 MB
All archives:               13.08 MB              6.48 MB              2.94 MBUnique chunks         Total chunks
Chunk index:                     954                 2102
------------------------------------------------------------------------------
 

列出所有的备份

borg list skywalk@192.168.1.5:/home/skywalk/borgbak

borg list skywalk@192.168.1.5:/home/skywalk/borgbak
(skywalk@192.168.1.5) Password for skywalk@fb5:
money                                Mon, 2024-08-05 23:14:29 [78553e94ba4fa45f3613356c195c5b11469ee46657fd9bf0a9c433cd6dacd9e2]
Monday                               Mon, 2024-08-05 23:19:55 [b59c9cef4c964f7a8deb450eb73e9d6def8a8a92d0e1f465de41138832403360]
Tuesday                              Mon, 2024-08-05 23:23:06 [a21bc14b605c6d2f8bb92e50330934078d1227ab7654f1b713b2d016a8666b2c]

列出Monday备份

 borg list skywalk@192.168.1.5:/home/skywalk/borgbak::Monday

列出Tuesday备份

 borg list skywalk@192.168.1.5:/home/skywalk/borgbak::Tuesday

导出备份

导出到本地,比如进入/tmp目录执行:

borg extract skywalk@192.168.1.5:/home/skywalk/borgbak::Monday

导出备份后,发现备份的目录和文件都保留了原来的所有者和权限,这样太好了!

总结

BorgBackup这个软件相当强大,感觉稍微调试一下,可以基本达到Mac机中的时光机器的功能。当然时光机器可以直接备份一个系统并在需要的时候直接“克隆”这个系统,这点BorgBackup可能还做不到。

调试

创建borg报错

sudo borg create --stats --progress $BORG_REPO::{hostname}-{now} /etc
Bad : modifier in $ ':'.

不知道是不是csh的缘故,不能这样用,最后用的是手工纯敲字符串

borg里面混入了全角空格等导致问题

输入的时候仔细敲

http://www.lryc.cn/news/420096.html

相关文章:

  • Java 实现合并两个有序链表:递归与迭代
  • 【每日刷题】Day98
  • 51单片机-LED实验二
  • 批发行业进销存-webview 读取NFC,会员卡 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构
  • 博弈dp,CF 731E - Funny Game
  • 基础知识:深入理解MongoDB、MySQL与Redis的应用与实践
  • Reids中List类型、Set类型、SortedSet类型的常用指令
  • K8S Ingress 常用配置
  • 【K8S】K8S架构及相关组件
  • 【MATLAB第108期】基于MATLAB的fast、vbsa、dynia、eet、glue、pawn、rsa敏感性分析模型合集(无目标函数)【更新中】
  • 【K8S】为什么需要Kubernetes?
  • 【Linux】Linux中查找字符串中的命令
  • 最新HTML设计搜索表单
  • JavaScript constructor原型原型继承
  • 使用Python+moviepy保存截取视频画面
  • 【DOCKER】显示带UI的软件
  • Atcoder Beginner Contest 366
  • 【hexo博客问题】
  • 用数组模拟栈和队列
  • Django内置后端和自定义后端
  • 嵌入式人工智能(OpenCV-基于树莓派的人脸识别与入侵检测)
  • 如何选择适合的香港云服务器提供商?
  • 安卓Android JAVA校招/实习面试合集:多线程、强软弱虚引用、进程、内存管理、Activity、Fragment......
  • Jeecgboot 字典值自动转化:DictAspect类方法改造,支持IPage、List、Object、Map类自动转化,附有源码
  • DVWA DOM Based Cross Site Scripting (DOM型 XSS)
  • LinkedList集合及迭代器的源码分析
  • Go调度器
  • 当node节点kubectl 命令无法连接到 Kubernetes API 服务器
  • 直接通过类CURL方式,与GRPC方法交互的命令行工具
  • Hive3:数据的加载与导出