轻松创建已安装包、点文件等的轻量级备份。

shallow-backup的Python项目详细描述


浅层备份

DownloadsBuild StatusCodacy Badge

shallow-backup允许您轻松创建已安装包、应用程序、字体和点文件的轻量级备份,并自动将它们推送到远程Git存储库

Shallow Backup GIF Demo

目录

安装


  1. ^{}安装

    • $ pip3 install shallow-backup
    • $ shallow-backup
  2. 从releases选项卡下载shallow-backup二进制文件。

使用量


要启动交互式程序,只需运行$ shallow-backup

构建shallow-backup时考虑了脚本命令行参数支持交互程序中支持的每个功能。

Usage: cli.py [OPTIONS]

  Easily back up installed packages, dotfiles, and more.
  You can edit which files are backed up in ~/.shallow-backup.

  Written by Aaron Lichtman (@alichtman).

Options:
  -all                         Full back up.
  -configs                     Back up app config files.
  -delete_config               Delete config file.
  -destroy_backup              Delete backup directory.
  -dotfiles                    Back up dotfiles.
  -fonts                       Back up installed fonts.
  --new_path TEXT              Input a new back up directory path.
  -old_path                    Skip setting new back up directory path prompt.
  -packages                    Back up package libraries.
  -reinstall_configs           Reinstall configs.
  -reinstall_dots              Reinstall dotfiles and dotfolders.
  -reinstall_fonts             Reinstall fonts.
  -reinstall_packages          Reinstall packages.
  -reinstall_all               Full reinstallation.
  --remote TEXT                Set remote URL for the git repo.
  -show                        Display config file.
  -v, --version                Display version and author info.
  -h, -help, --help            Show this message and exit.

Git集成


一句小心话

此备份工具是git集成的,这意味着您可以轻松地远程(例如在github上)存储备份。点文件和配置文件可能包含敏感信息,如api密钥和ssh密钥,并且您不想公开这些信息。为了确保不会意外上载敏感文件,shallow-backup如果在目录中找不到文件,则创建一个.gitignore文件默认排除.ssh/.pypirc。如果要推送到远程专用存储库,或者只在本地备份,则可以安全地删除这些限制。为此,应清除.gitignore文件而不删除它。

如果选择备份到公共存储库,请查看要备份的每个文件,以确保它是公共的

如果我想为我的dotfiles维护一个单独的repo呢?

shallow-backup这很简单在进行第一次备份之后,cd进入dotfiles/目录并运行$ git init在您喜欢的版本控制平台上创建一个.gitignore和一个新的repo此回购协议将独立于基础回购协议(手动)维护。

我能备份什么?


默认情况下,shallow-backup会备份这些文件

  1. dotfilesdotfolders

    • .bashrc
    • .bash_profile
    • .gitconfig
    • .pypirc
    • .shallow-backup
    • .ssh/
    • .vim/
    • .zshrc
  2. 应用程序配置文件

    • 原子
    • vscode
    • 升华文本2/3
    • terminal.app
  3. 已安装的软件包

    • apm
    • brewcask
    • cargo
    • gem
    • pip
    • pip3
    • npm
    • macports
    • VSCode扩展
    • Sublime Text 2/3包装
    • 系统应用程序
  4. 用户安装fonts

备份定制

如果要修改备份的文件,则必须编辑~/.shallow-backup文件。有两种推荐的方法

  1. 在CLI中选择适当的选项并按照提示进行操作
  2. 在文本编辑器中打开文件并进行更改

输出结构
backup_dir/
├── configs
│   ├── plist
│   │   └── com.apple.Terminal.plist
│   ├── sublime_2
│   │   └── ...
│   └── sublime_3
│       └── ...
├── dotfiles
│   ├── .bash_profile
│   ├── .bashrc
│   ├── .gitconfig
│   ├── .pypirc
│   ├── ...
│   ├── .shallow-backup
│   ├── .ssh/
│   │   └── known_hosts
│   ├── .vim/
│   └── .zshrc
├── fonts
│   ├── AllerDisplay.ttf
│   ├── Aller_Bd.ttf
│   ├── Aller_BdIt.ttf
│   ├── Aller_It.ttf
│   ├── ...
│   ├── Ubuntu Mono derivative Powerline Bold Italic.ttf
│   ├── Ubuntu Mono derivative Powerline Bold.ttf
│   ├── Ubuntu Mono derivative Powerline Italic.ttf
│   └── Ubuntu Mono derivative Powerline.ttf
└── packages
    ├── apm_list.txt
    ├── brew-cask_list.txt
    ├── brew_list.txt
    ├── cargo_list.txt
    ├── gem_list.txt
    ├── installed_apps_list.txt
    ├── npm_list.txt
    ├── macports_list.txt
    ├── pip_list.txt
    └── sublime3_list.txt

灵感


我每周都会多次将MacBookPro的系统图像备份到一个外部固态硬盘上,而且总是需要很长的时间。我想加快速度,所以我看了看实际备份的内容。我看到我的brewnpmpip库占用的空间比我想象的要多很多。

这完全没有必要。当你备份某个东西时,你这样做的目的是为了在将来某个时候回到那个精确的状态。以后重新创建这些包库所需的最低限度是每个包管理器安装的包的列表。如果有这些列表,恢复系统包安装很容易:$ pip install -r pip_list.txt,例如。

通过用简单的文本文件替换我的pipbrewbrew casknpm库,我几乎减少了10GB的备份大小。我还大大减少了备份时间,因为被复制的文件更少了。

一旦我构建了这个功能,我想为开发人员经常使用的文件和文件夹提供一个单独的备份实用程序,所以我添加了备份dotfilesfonts的功能(注意:因为只列出已安装的字体列表或存在的子列表是不太有用的,创建所有用户和用户安装字体的拷贝。

想做贡献吗?


查看CONTRIBUTING.mddocs目录。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Gson类中的java验证错误   If和elseif之间的java差异?   字典Java8地图。输入比较器   java连接到远程计算机以获得WMI支持   java如何使用改型处理JSON对象中的空值   在Java中使用Comparator时不可编译的源代码   java将Jar添加到JSP的运行时路径   带有随机对象的while循环的java大O时间复杂性   java可以在不考虑参数的情况下模拟方法吗?   java我有一个简单的代码,它不工作。无法修复错误“println”   向eclipse添加Xively java库   java是否可以启用本机代码的缓存?   全局变量如何在Java中的所有类之间共享要使用的语言环境?   Java内存游戏如何翻转单个卡?