用 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

参考

  • 思源笔记

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

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

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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 663 关注
  • 博客

    记录并分享人生的经历。

    272 引用 • 2386 回帖
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 15 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 455 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    263 引用 • 664 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 3 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 73 回帖 • 1 关注
  • OnlyOffice
    4 引用
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    54 引用 • 85 回帖
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 7 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 6 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    5 引用 • 26 回帖
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 41 关注
  • 笔记

    好记性不如烂笔头。

    308 引用 • 793 回帖
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 65 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖 • 4 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 18 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    8 引用 • 30 回帖 • 415 关注
  • Python

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

    540 引用 • 672 回帖
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    51 引用 • 226 回帖 • 1 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖
  • 安装

    你若安好,便是晴天。

    131 引用 • 1184 回帖 • 2 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 533 回帖 • 766 关注