当前位置: 首页 > 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里面混入了全角空格等导致问题

输入的时候仔细敲

相关文章:

学习使用备份软件BorgBackup

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

Java 实现合并两个有序链表:递归与迭代

Java 实现合并两个有序链表:递归与迭代 在面试和算法题中,合并两个有序链表是一个经典问题。通过这个问题,不仅可以考察候选人的基础数据结构掌握情况,还能测试他们对递归和迭代等编程技巧的应用能力。 本文将讨论如何使用 Java…...

【每日刷题】Day98

【每日刷题】Day98 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 大数加法_牛客题霸_牛客网 (nowcoder.com) 2. 大数乘法_牛客题霸_牛客网 (nowcoder.com) 3. 扑克牌…...

51单片机-LED实验二

使用51单片机进行LED灯的实验,使用8个LED灯展示二进制数,使用独立按键控制二进制数的加法,每次按下独立按键K2,就让二进制数加一,定义了一个LedNum,表示二进制数,二进制数取反之后可以得到输出到LED端口的8…...

批发行业进销存-webview 读取NFC,会员卡 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、混合应用开发 混合应用顾名思义就是网页html和原生APP共同作用的结果 好处在一既有web的跨平台优势(安卓、苹果,电脑、国产电脑、平板电脑,自助机都能用) 好处二可以离线使用,比较稳定 好处三可以与本地硬件交…...

博弈dp,CF 731E - Funny Game

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 731E - Funny Game 二、解题报告 1、思路分析 游戏规则其实就是交替取前缀和 考虑 f(i) 为 某人先手取前 i 个,最终能得到的最大分差 由于每人都是最佳发挥,所以有如下状态转移&am…...

基础知识:深入理解MongoDB、MySQL与Redis的应用与实践

基础知识:深入理解MongoDB、MySQL与Redis的应用与实践 在现代应用开发中,数据库系统的选择对于系统的性能、扩展性和维护性有着至关重要的影响。MongoDB、MySQL 和 Redis 是三种流行的数据库技术,它们各自有着独特的特点和适用场景。本文将详…...

Reids中List类型、Set类型、SortedSet类型的常用指令

List类型: Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。 特征也与LinkedList类似: 有序元素可以重复插入和删除快查询速度一般 常用来存储一个有序数据&#xff0c…...

K8S Ingress 常用配置

目录 介绍ingress 安装 基本使用请查看域名重定向前后端分离配置默认证书配置指定证书配置白名单配置黑名单配置Annotations 配置ConfigMap 配置 匹配请求头速率限制限制客户端的最大连接数限制每秒钟段并发连接数限制每分钟段并发请求突发访问限制限制传输速度速率限制白名单 …...

【K8S】K8S架构及相关组件

文章目录 1 K8S总体架构2 相关组件2.1 控制面板组件2.2 节点组件2.3 附加组件 写在最后 1 K8S总体架构 K8S,全称Kubernetes,是一个开源的容器部署和管理平台,由Google开发,后捐献给云原生计算基金会(CNCF)…...

【MATLAB第108期】基于MATLAB的fast、vbsa、dynia、eet、glue、pawn、rsa敏感性分析模型合集(无目标函数)【更新中】

【MATLAB第108期】基于MATLAB的fast、vbsa、dynia、eet、glue、pawn、rsa敏感性分析模型合集(无目标函数)【更新中】 一、FAST(Fourier Amplitude Sensitivity Test) FAST(Fourier Amplitude Sensitivity Test&#…...

【K8S】为什么需要Kubernetes?

文章目录 1 什么是Kubernetes?2 三种常见的应用部署方式2.1 传统部署2.2 虚拟化部署2.3 容器化部署 3 Kubernetes的特点写在最后 1 什么是Kubernetes? Kubernetes是 一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernet…...

【Linux】Linux中查找字符串中的命令

在Linux中,查找字符串的命令通常使用grep。grep是一个强大的工具,用于在文件中搜索指定模式的字符串。以下是一些基本用法: 1.在文件中查找字符串 grep "字符串" 文件名例如,查找文件example.txt中包含“hello”的行&…...

最新HTML设计搜索表单

设计搜索表单 页眉中包含表单&#xff0c;表单中只需包含label和Input. 实现如下效果&#xff1a;文本框动态变宽效果 代码&#xff1a;6.2.4.设计搜索表单.html <!DOCTYPE html> <html><head><meta charset"utf-8"><title></t…...

JavaScript constructor原型原型继承

constructor 在 JavaScript 中&#xff0c;构造函数是一种特殊的函数&#xff0c;使用 new 关键字来调用&#xff0c;用于创建对象实例。JavaScript 中的构造函数通常通过 function 关键字定义。 例如&#xff1a; function Person(name, age) {this.name name;this.age a…...

使用Python+moviepy保存截取视频画面

一、 使用VideoFileClip对象的的save_frame函数保存截取的第1帧画面 from moviepy.editor import * mvVideoFileClip(/home/Download/leaves.mp4) mv.save_frame(/home/Download/fst.jpg) # 默认保存截取的第1帧画面 二、 使用VideoFileClip对象的的save_frame函数保存截…...

【DOCKER】显示带UI的软件

1. Linux 1.1 宿主机开放X server权限 xhost 1.2 启动容器 docker run -it --rm --privilegedtrue --useru20 --workdir/home/u20 \ -e DISPLAYhost.docker.internal:0 u20:dev1.3 测试 # 安装测试软件 sudo apt-get -y install x11-apps# 显示测试程序 xclock2. Windows …...

Atcoder Beginner Contest 366

传送门 A - Election 2 时间限制&#xff1a;2秒 内存限制&#xff1a;1024MB 分数&#xff1a;100分 问题描述 在 AtCoder 市举行市长选举。候选人是 Takahashi 和 Aoki。 目前有 N 张有效选票投给了这两个候选人&#xff0c;并且计票正在进行中。这里&#xff0…...

【hexo博客问题】

windows下使用gitbash即可使用 其他bash会产生权限问题 npm install失败 $ npm install npm error code ENOENT npm error syscall open npm error path F:\pf_project\blog_pf\package.json npm error errno -4058 npm error enoent Could not read package.json: Error: E…...

用数组模拟栈和队列

栈 先进后出 //stk 表示定义的栈 //tt表示栈顶的下标 int stk[N], tt 0;//在栈顶上加入一个新的元素 stk[ tt] x;//弹出 tt --;//判断栈是否为空 if (tt > 0) 不为空 else empty//取出栈顶 stk[tt];1.题目 给定一个长度为 N 的整数数列&#xff0c;输出每个数左边第一个…...

Django内置后端和自定义后端

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 5.2.3 内置…...

嵌入式人工智能(OpenCV-基于树莓派的人脸识别与入侵检测)

1、人脸识别 人脸识别是一种技术&#xff0c;通过检测、跟踪和识别人脸上的关键特征&#xff0c;以确认人脸的身份。它通常用于安保系统、身份验证、社交媒体和人机交互等领域。 人脸识别技术的基本原理是先通过图像处理和计算机视觉算法&#xff0c;提取人脸的特征点和特征描…...

如何选择适合的香港云服务器提供商?

稳定性和可靠性 确保提供商有高水平的服务器正常运行时间&#xff0c;并提供可靠的数据备份和恢复选项。 网络速度和延迟 选择能够提供快速和低延迟网络连接的服务商&#xff0c;尤其是对于目标用户位于中国大陆的企业而言。 客户支持 查看提供商是否提供24/7的客户支持&#x…...

安卓Android JAVA校招/实习面试合集:多线程、强软弱虚引用、进程、内存管理、Activity、Fragment......

本人今年&#xff08;2023年&#xff09;参加了很多面试&#xff0c;也有幸拿到了一些大厂的offer&#xff0c;整理了众多面试资料&#xff0c;后续还会分享众多面试资料。 整理成了面试系列&#xff0c;由于时间有限&#xff0c;每天整理一点&#xff0c;后续会陆续分享出来&a…...

Jeecgboot 字典值自动转化:DictAspect类方法改造,支持IPage、List、Object、Map类自动转化,附有源码

改造的是DictAspect类&#xff1a; 原来使用的 parseDictText(Object result)方法&#xff0c;针对返回对象为Result 的IPage的分页列表数据进行动态字典注入&#xff0c;当单个对象查询&#xff0c;列表查询&#xff0c;或者多个数据放到Map中时&#xff0c;就不会自动转化&am…...

DVWA DOM Based Cross Site Scripting (DOM型 XSS)

DVWA DOM Based Cross Site Scripting (DOM型 XSS) 文章目录 DVWA DOM Based Cross Site Scripting (DOM型 XSS)XSS跨站原理DOM型 LowMediumHighImpossible XSS跨站原理 当应用程序发送给浏览器的页面中包含用户提交的数据&#xff0c;但没有经过适当验证或转义时&#xff0c;就…...

LinkedList集合及迭代器的源码分析

一.介绍: 二.LinkedList集合特有的API: 三.迭代器的源码分析: package com.itheima.a03myarraylist;import java.util.ArrayList; import java.util.Iterator;public class A01_ArrayListDemo1 {public static void main(String[] args) {ArrayList<String> listnew Arr…...

Go调度器

线程数过多,意味着操作系统会不断地切换线程,频繁的上下文切换就成了性能瓶颈.Go提供一种机制 可以在线程中自己实现调度,上下文切换更轻量,从而达到线程数少,而并发数并不少的效果,而线程中调度的就是Goroutine 调度器主要概念: 1.G:即Go协程,每个go关键字都会创建一个协程…...

当node节点kubectl 命令无法连接到 Kubernetes API 服务器

1.问题 当node节点当node节点kubectl 命令无法连接到 Kubernetes API 服务器 [rootnode1 ~]# kubectl get nodes The connection to the server localhost:8080 was refused - did you specify the right host or port?2. 确认 kubeconfig 文件 确保节点上有有效的 kubeco…...

直接通过类CURL方式,与GRPC方法交互的命令行工具

大家好&#xff0c;今天给大家分享的是一个命令行工具grpcurl&#xff0c;它能够直接与 gRPC 服务进行交互。 项目介绍 您可以把grpcurl想象成是 curl 的 gRPC 版本&#xff0c;但是功能更加强大。 由于 gRPC 服务之间的通信使用的是 Protocol Buffers (Protobuf) 格式的二进…...