• Stars
    star
    1,549
  • Rank 29,932 (Top 0.6 %)
  • Language
    PHP
  • License
    MIT License
  • Created almost 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automatically exclude development dependencies from Apple Time Machine backups

Asimov

Build Status Requires macOS 10.13 (High Sierra) or newer MIT license

Those people who think they know everything are a great annoyance to those of us who do.
— Issac Asimov

For macOS users, Time Machine is a no-frills, set-it-and-forget-it solution for on-site backups. Plug in an external hard drive (or configure a network storage drive), and your Mac's files are backed up.

For the average consumer, Time Machine is an excellent choice, especially considering many Mac owners may only have Time Machine as a backup strategy. For developers, however, Time Machine presents a problem: how do I keep project dependencies from taking up space on my Time Machine drive?

Asimov aims to solve that problem, scanning your filesystem for known dependency directories (e.g. node_modules/ living adjacent to a package.json file) and excluding them from Time Machine backups. After all, why eat up space on your backup drive for something you could easily restore via npm install?

Installation

Asimov may be installed in a few different ways:

Installation via Homebrew

The easiest way to install Asimov is through Homebrew:

$ brew install asimov

If you would prefer to use the latest development release, you may append the --head flag:

$ brew install asimov --head

Once installed, you may instruct Homebrew to automatically load the scheduled job, ensuring Asimov is being run automatically every day:

$ sudo brew services start asimov

If you don't need or want the scheduled job, you may run Asimov on-demand:

$ asimov

Manual installation

If you would prefer to install Asimov manually, you can do so by cloning the repository (or downloading and extracting an archive of the source) anywhere on your Mac:

$ git clone https://github.com/stevegrunwell/asimov.git --depth 1

After you've cloned the repository, run the install.sh script to automatically:

  • Symlink Asimov to /usr/local/bin, making it readily available from anywhere.
  • Schedule Asimov to run once a day, ensuring new projects' dependencies are quickly excluded from Time Machine backups.
  • Run Asimov for the first time, finding all current project dependencies adding them to Time Machine's exclusion list.

How it works

At its essence, Asimov is a simple wrapper around Apple's tmutil program, which provides more granular control over Time Machine.

Asimov finds recognized dependency directories, verifies that the corresponding dependency file exists and, if so, tells Time Machine not to worry about backing up the dependency directory.

Don't worry about running it multiple times, either. Asimov is smart enough to see if a directory has already been marked for exclusion.

Retrieving excluded files

If you'd like to see all of the directories and files that have been excluded from Time Machine, you can do so by running the following command (props Brant Bobby on StackOverflow):

$ sudo mdfind "com_apple_backup_excludeItem = 'com.apple.backupd'"

If a directory has been excluded from backups in error, you can remove the exclusion using tmutil:

$ tmutil removeexclusion /path/to/directory

More Repositories

1

wp-cache-remember

Helper for the WordPress object cache and transients.
PHP
144
star
2

wp-enforcer

Git hooks to encourage well-written WordPress.
Shell
112
star
3

one-time-callbacks

Enable WordPress actions and filter callbacks to be called exactly once.
PHP
65
star
4

schemify

Automatically generate Schema.org JSON-LD markup for WordPress content.
PHP
57
star
5

lost-in-translation

Uncover missing translations and localization strings in Laravel applications.
PHP
35
star
6

time-constants

A series of constants designed to make it easier to express time in PHP applications
PHP
25
star
7

wp404

Get in-depth information about the 404 errors that occur on your WordPress site.
PHP
21
star
8

mcavoy

Discover what visitors are searching for on your WordPress site.
PHP
20
star
9

revision-strike

Periodically purge old post revisions via WP Cron.
PHP
17
star
10

wordpress-git

Reveal.js version of my "Keeping WordPress Under [Version] Control with Git" blog post
HTML
17
star
11

advanced-post-excerpt

Replace the default Post Excerpt meta box with a superior editing experience.
PHP
15
star
12

reveal-ga

Add Google Universal Analytics tracking to your reveal.js presentation.
JavaScript
15
star
13

wp-admin-tabbed-settings-pages

A polyfill for Trac #51086, bringing tabbed settings pages into WP-Admin.
PHP
13
star
14

phpunit-markup-assertions

Assertions for PHPUnit to verify the presence or state of elements within markup
PHP
12
star
15

building-for-php-cli

Slides for "Building for the PHP Command Line Interface"
CSS
12
star
16

wp-client-reference

A WordPress plugin designed for agencies to embed client documentation directly into a WordPress site
PHP
10
star
17

php-cli-examples

Examples to accompany "Building for the PHP Command Line Interface"
8
star
18

intro-to-ci-cd

Slides for "Build and Release Confidently with Continuous Integration and Delivery"
CSS
8
star
19

writing-wp-cli-scripts-that-work

Slides for "Writing WP-CLI Commands That Work!"
CSS
8
star
20

wp-password-generator

The WP Password Generator plugin takes the hassle out of creating new WordPress users by generating random, secure passwords with one click.
PHP
7
star
21

mailto-link-formatter

Composer package for easily generating RFC 6068-compliant mailto: links in your markup.
PHP
5
star
22

wordpress-starter-theme

My WordPress starter theme so I don't have to repeat myself at the beginning of every project.
PHP
5
star
23

intro-to-testing

Slides for "Testing Like You've Never Tested Before (Because You Haven't)"
CSS
5
star
24

wp-encrypted-options

An API for saving encrypted data into the wp_options table. **NOT YET READY FOR PRODUCTION USE!**
PHP
5
star
25

platform-plugin

Slides for "Considerations & Concerns for Platform Plugin Development"
CSS
5
star
26

technical-debt

Slides for "Up to my Eyeballs in Technical Debt!"
CSS
5
star
27

vvv-redis

Custom VVV utility to automatically install and configure Redis
Shell
4
star
28

simple-twitter-timeline

A PHP class for reading public Twitter timelines. Designed with "Latest Tweets"-style widgets in mind.
PHP
4
star
29

semver-parser

Library for parsing and manipulating Semantic Versioning ("SemVer") relases
PHP
4
star
30

pupper

A Twitter clone for use in training courses
PHP
3
star
31

stevegrunwell-com-legacy

Source for http://stevegrunwell.com running the Grunwell 2012 theme.
PHP
3
star
32

wp-analysis

A custom PHP_CodeSniffer ruleset and report format to generate user-friendly details about what high-level issues exist and *why* they're important.
PHP
3
star
33

runkit7-installer

Composer package to automate the installation of Runkit7 in development + CI environments
Shell
3
star
34

protecting-yourself-online-irl

Slides for "Protecting Yourself Online & IRL"
CSS
3
star
35

professional-development-professional-developers

Slides for "Professional Development for Professional Developers"
CSS
3
star
36

code-review-for-me-and-you

Slides for "Code Review: For Me & You"
CSS
3
star
37

php-namespaces

Slides for "A Crash-course in PHP Namespaces for WordPress Developers"
CSS
3
star
38

parse-video-metadata

Extract meta data from videos uploaded to the WordPress media gallery.
PHP
2
star
39

stevegrunwell-com

Source for SteveGrunwell.com in 2018 (not yet launched!)
PHP
2
star
40

son-of-clippy

Add "fun" animated characters to your WordPress edit screens!
JavaScript
2
star
41

write-some-docs

Slides for "I'd Like to Write the World Some Docs"
CSS
2
star
42

smee

ABANDONED: Please use https://github.com/BrainMaestro/composer-git-hooks instead! Library for automatically copying Git hooks into a project.
PHP
2
star
43

taking-the-web-offline

Slides for "Taking the Web Offline"
CSS
2
star
44

wordpress-starter-plugin

A quick template to start a new WordPress plugin. Meant to complement https://github.com/stevegrunwell/wordpress-starter-theme
PHP
2
star
45

laravel-authentication-made-easy

Slides for "Laravel Authentication and Permissions Made Easy"
CSS
2
star
46

chronology

PHP
1
star
47

up-and-running-with-wp-cli

Slides for "Up and Running with WP-CLI"
CSS
1
star
48

wp-test-assertions

Additional PHPUnit assertions for testing WordPress plugins and themes.
Shell
1
star
49

mustache-auction

Auction your facial hair style this Movember in the name of men's health!
PHP
1
star
50

grunwell-reveal-theme

CSS overrides for Reveal.js presentations
CSS
1
star
51

wordpress-security-basics

Presentation on WordPress Security Basics based on http://stevegrunwell.com/blog/wordpress-security-basics
CSS
1
star
52

structured-data

Slides for "Computers <3 Structured Data"
CSS
1
star
53

custom-orders-table

Slides for "Custom Tables & the Checkout Bottleneck"
HTML
1
star
54

githookd

Abandoned: Please see https://github.com/BrainMaestro/composer-git-hooks instead. PHP-CLI framework for installing Git Hooks automatically.
PHP
1
star
55

volunteer-line

*Work in Progress* Connecting volunteers of grass-roots campaigns with the community
PHP
1
star
56

laravel-in-a-nutshell

A basic overview of Laravel 5.0 principles for developers new to the framework.
HTML
1
star
57

php-compatibility

Test a package's compatibility with different versions of PHP.
Shell
1
star
58

Barker

A jQuery-powered, Growl-like notification system for in-page news, tweets, and more
JavaScript
1
star