用 Github 备份数据的一些思路

因为思源的配置项支持导入导出了,最近也不想着少做配置弄什么约定大于配置了,而是简单梳理了一些打开的几个工作空间,将笔记先暂时合并为两个空间:

  • main —— 一堆插件、配置项混合的工作空间、不少插件产生的文件在其中来不及看
  • dev —— 当前的工作空间,全部都是默认配置,没启用任何插件

然后光整理了一直放着看着也烦,就想着移到冷备份中,几个云盘存一份不必多说,也顺便看了看 Github 如何存一份。

一开始我直接将笔记用到的资源打包为压缩包(直接导出工作空间 Data.zip),然后尝试新建私有仓库推送到 Github 上,但发现 Github 除非启用 Git LFS ,否则会阻止超过 100M 的文件推送。

仓库的总大小一般是建议在 1G 以下到 5G

继续了解后,得知如果使用了 Git LFS, 默认计划为 1G 存储空间,并且下载需要从每个月 1G 的带宽中扣除。若想要付费提高容量和带宽,需要为一个数据包 50G 带宽和存储每月付费 5 美元。

也可以考虑使用分卷压缩存储到仓库,大型附件(每个小于 2G)则发布到 release 作为附件的方案。

个人当前是让 gpt 写了个压缩包分卷处理的脚本(要安装 7z 和 python 环境),后续可以考虑将一些大文件归类起来发个 release 单独存。

import os
import subprocess
import shutil

# 设置压缩文件的分卷大小
SPLIT_SIZE = "99m"

# 设置需要检查的文件扩展名
FILE_EXTENSIONS = [".zip", ".rar", ".7z"]

# 设置需要遍历的根目录(可以修改为其他目录)
ROOT_DIR = os.getcwd()  # 当前目录

# 检查文件大小是否超过 100MB
def is_large_file(file_path, size_limit=100 * 1024 * 1024):
    return os.path.getsize(file_path) > size_limit

# 执行 7z 分卷压缩命令
def split_archive(file_path, split_size=SPLIT_SIZE):
    # 获取文件名和路径信息
    file_dir, file_name = os.path.split(file_path)
    file_base_name, file_extension = os.path.splitext(file_name)

    # 创建与文件同名的文件夹
    target_folder = os.path.join(file_dir, file_base_name)
    if not os.path.exists(target_folder):
        os.makedirs(target_folder)
  
    # 构建分卷压缩的目标文件名
    archive_name = os.path.join(target_folder, file_base_name + ".7z")

    # 7z 分卷压缩命令
    split_command = [
        "7z", "a", "-v" + split_size, archive_name, file_path
    ]

    print(f"正在分卷压缩文件: {file_path}")
    try:
        # 执行命令
        subprocess.run(split_command, check=True)
        print(f"文件 {file_name} 分卷压缩完成,存储于文件夹: {target_folder}")
    except subprocess.CalledProcessError as e:
        print(f"分卷压缩文件 {file_name} 时发生错误: {e}")

    # 清理原始文件
    print(f"删除原始文件: {file_path}")
    os.remove(file_path)

# 遍历目录查找大于 100MB 的压缩文件
def process_large_files(root_dir):
    for root, _, files in os.walk(root_dir):
        for file_name in files:
            file_path = os.path.join(root, file_name)

            # 检查文件是否是指定格式的压缩文件且大于 100MB
            if file_path.lower().endswith(tuple(FILE_EXTENSIONS)) and is_large_file(file_path):
                print(f"找到大文件: {file_path} ({os.path.getsize(file_path) / (1024 * 1024):.2f} MB)")
              
                # 对大文件进行分卷压缩处理
                split_archive(file_path)

if __name__ == "__main__":
    # 开始处理大文件
    process_large_files(ROOT_DIR)
    print("所有大文件处理完成!")

Clip20241003133449.png

参考

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23007 引用 • 92543 回帖
1 操作
xqh042 在 2024-10-03 15:07:33 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 635 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    30 引用 • 96 回帖
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    149 引用 • 257 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 694 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 49 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 147 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 140 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 138 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 1 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖 • 44 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 76 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 591 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    354 引用 • 1823 回帖 • 1 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 223 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 486 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    53 引用 • 40 回帖 • 2 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    545 引用 • 672 回帖
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 780 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 138 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 101 关注
  • 电影

    这是一个不能说的秘密。

    121 引用 • 604 回帖 • 1 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖 • 1 关注