{"id":18123266,"url":"https://github.com/puutaro/difbk","last_synced_at":"2026-02-24T21:31:24.049Z","repository":{"id":147852039,"uuid":"561149317","full_name":"puutaro/difbk","owner":"puutaro","description":"Differential backup tool made with 100% shellscript","archived":false,"fork":false,"pushed_at":"2025-04-19T08:51:54.000Z","size":141,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-27T11:49:23.516Z","etag":null,"topics":["backup","debian","difbk","find-fd","linux","ripgrep","shellscript","ubuntu","wsl2"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/puutaro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-03T03:48:14.000Z","updated_at":"2025-04-19T08:51:57.000Z","dependencies_parsed_at":"2024-06-10T02:57:34.867Z","dependency_job_id":"8416eb60-80b9-47fa-9a74-cacf4db074c0","html_url":"https://github.com/puutaro/difbk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/puutaro/difbk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puutaro%2Fdifbk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puutaro%2Fdifbk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puutaro%2Fdifbk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puutaro%2Fdifbk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/puutaro","download_url":"https://codeload.github.com/puutaro/difbk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puutaro%2Fdifbk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29801021,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T21:02:39.706Z","status":"ssl_error","status_checked_at":"2026-02-24T21:02:21.834Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","debian","difbk","find-fd","linux","ripgrep","shellscript","ubuntu","wsl2"],"created_at":"2024-11-01T07:08:51.516Z","updated_at":"2026-02-24T21:31:24.030Z","avatar_url":"https://github.com/puutaro.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# `difbk`\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)]((https://opensource.org/licenses/MIT))  \nCommand line differential backup tool made by 100% shell script.\n\n![image](https://user-images.githubusercontent.com/55217593/201099244-36ea4227-ef06-4290-9a65-edf3ee025874.png)  \nIt's a differential backup tool, which have ritch feature: backup, fullbackup, search, grep, diff, restore, clean up.\n\nPros\n----\n- Ritch feature\n- use filesystem itself (when you want to complement the function, you can use shell command very easily, you can easily transfer data to other pc or file system)\n- Since it is compressed and save, saves data (gzip type)\n- It form golden combination with git (when your project is too security sensitive to use git, file transfer other branch, and you have half-finished but important edits)\n\nTable of Contents\n-----------------\n\u003c!-- vim-markdown-toc GFM --\u003e\n\n* [Installation](#installation)\n  * [For Ubuntu or Debian or Wsl](#for-ubuntu-or-debian-or-wsl)\n* [Upgrading](#upgrading)\n  * [Upgrading for Ubuntu or Debian or Wsl](#upgrading-for-ubuntu-or-debian-orwsl)\n* [Demo](#demo)\n* [Usage](#usage)\n  * [Buckup](#buckup)\n  * [Status](#status)\n  * [Reset](#reset)\n  * [List backup files](#list-backup-files)\n  * [Search](#search)\n  \t* [Path search](#path-search)\n  \t* [contents search](#contents-search)\n  * [Status diff](#status-diff)\n  * [Diff](#diff)\n  * [Restore](#restore)\n\t* [All buckup files restore](#all-buckup-files-restore)\n    * [One buckup file restore](#one-buckup-file-restore)\n  * [Clean](#install)\n     * [Validate backup list file](#validate-backup-list-file)\n     * [Delete specify backup generation](#delete-specify-backup-generation)\n  * [Merge](#merge)\n\nInstallation\n-----\n\n### For Ubuntu or Debian or Wsl\n\n- Support Ubuntu20.04+\n\n```\ngit clone https://github.com/kitamura-take/difbk.git ~/.difbk\ncd ~/.difbk/install\nbash install.sh l\n```\n\n\nUpgrading.\n-----\n\n\n### Upgrading for Ubuntu or Debian\n1. delete $HOME/.difbk directory\n2. same as installation.\n\nUsage\n-----\n\n### Buckup\n\nIt mean diffrencial backup\n\n1. type bellow command\n\n```\ndifbk bk -d \"{backup description}\"\n```\n\n2. If `label stamp` exist, select and type esc\n\n![image](https://user-images.githubusercontent.com/55217593/201099244-36ea4227-ef06-4290-9a65-edf3ee025874.png)\n\n- back up option\n\n    | option| set value | comment  |\n    | --------- | --------- | ------------ |\n    | `-d` | string | backup'e description  |\n    | `-dn`  | no | no set backup'e description |\n    | `-mklabel`  | string | label stamp attached to the beginning of the description (ex label -\u003e [label] ~ ) |\n    | `-rmlabel` | string | remove registerd label  |\n    | `-lslabel` | no | list registerd labels  |\n    | `-ln`  | no | when backup, not add label stamp |\n\n\n### Status\n\nIt mean confirm status\n\n1. type bellow command\n\n```\ndifbk st (target mergelist number (reffrer lrs merge list num or target file)|merge list path)\n```\n\n![image](https://user-images.githubusercontent.com/55217593/203556258-fa2c36bf-6679-43d5-8d12-046ac8e24efe.png)\n\n\n\n### Reset\nremove recent backup  \n1. type bellow command\n\n```\ndifbk reset  \n```\n\n- lrs option\n\n    | option| set value | comment  |\n    | --------- | --------- | ------------ |\n    | `-s` | no | without comfirm, remove it |\n\n### List backup files\n`difbk` management backup generation by backup files's text file(in fact commpressed into gz). Here list backup's list text files. this subcommand is base command in `difbk`. This is used for `sch`, `rs` and `diff`, etc. When add no `-full`  option, display recent 30 merge file path  \n\n1. type bellow command\n\n```\ndifbk lrs -e\n```\n\n![image](https://user-images.githubusercontent.com/55217593/201107634-1a83d424-94be-4be0-8219-42f628e963b0.png)\n\n- lrs option\n\n    | option| set value | comment  |\n    | --------- | --------- | ------------ |\n    | `-e` | no | display every backup file |\n    | `-d`  | string | description's `include` filter string |\n    | `-de`  | string | description's `or` filter string |\n    | `-dv` | string | description's `exclude` filter label  |\n    | `-full` | no | full merge list display |\n\n### Search\n\n`difbk` can search path or file contents. It's freqently use feature, and strong one at the same time.\n\n#### Path search\n1. type bellow command\n\n```\ndifbk sch {search path word1} {search path word2} {search path word3} ...\n```\n\n- It's `and` search.\n\n![image](https://user-images.githubusercontent.com/55217593/201111004-a6ab02d2-d142-4e5d-aefb-23f0cf857ffd.png)\n\n- sch option\n\n    | option| set value | comment  |\n    | --------- | --------- | ------------ |\n    | `-e` | string | `or` search |\n    | `-v` | string | `exclude` search |\n    | `-d`  | string | description's `include` filter string |\n    | `-de`  | string | description's `or` filter string |\n    | `-dv` | string | description's `exclude` filter label  |\n    | `-da` | datetime string (YYYY/MM/DD/hhmm) | delete after datetme |\n    | `-db` | datetime string (YYYY/MM/DD/hhmm) | delete before datetme |\n    | `-j` | int | generation number (when `difbk lrs -e`, display in left brackets) |\n\n#### Contents search\n1. type bellow command\n\n```\ndifbk sch -c {search path word}\n```\n\n![image](https://user-images.githubusercontent.com/55217593/201113737-0e11eca7-a747-41b3-ae7c-7fdf1fc19f15.png)\n\n- sch -c option\n\n    | option| set value | comment  |\n    | --------- | --------- | ------------ |\n    | `-d`  | string | description's `include` filter string |\n    | `-de`  | string | description's `or` filter string |\n    | `-dv` | string | description's `exclude` filter label  |\n    | `-da` | datetime string (YYYY/MM/DD/hhmm) | delete after datetme |\n    | `-db` | datetime string (YYYY/MM/DD/hhmm) | delete before datetme |\n    | `-j` | int | every generation number (when `difbk lrs -e`, display in left brackets) |\n\n\n### Status diff\n\n1. type bellow command\n\n```\ndifbk diff (target mergelist number (reffrer lrs merge list num or target file)|merge list path)\n```\n\n\n### Diff\n\n1. type bellow command\n\n```\ndifbk diff { blank (current direcotry diff) | generation number or backup list file path or backuped file path}\n```\n\n![image](https://user-images.githubusercontent.com/55217593/201114773-be3d04b6-c8e1-4fd5-8f77-cbe7b1b13564.png)\n\n- diff option\n\n    | option| set value | comment  |\n    | --------- | --------- | ------------ |\n    | `-e`  | int | every generation search on (default daily diff) |\n    | `-de`  | string | description's `or` filter string |\n    | `-dv` | string | description's `exclude` filter label  |\n    | `-da` | datetime string (YYYY/MM/DD/hhmm) | delete after datetme |\n    | `-db` | datetime string (YYYY/MM/DD/hhmm) | delete before datetme |\n\n\n\n\n### Restore\n\n#### All buckup files restore\n\nThis is generally called restore\n\n1. type bellow command\n\n```\ndifbk rs {backup list file path} {destination directory} (grep path from backup list)\n```\n\n#### One buckup file restore\nThis restore only one buckup file. In a nutshell, `merge` or `copy`\n\n1. type bellow command\n\n```\ndifbk rs {backup one file path}\n```\n\n- above command mean `merge`\n\n- merge option\n\n    | option| set value | comment  |\n    | --------- | --------- | ------------ |\n    | `-c`  | no | not `merge` but `copy` |\n\n\n#### Restore buckup to current project directory\n\n1. type bellow command\n\n```\ndifbk rbk [merge list path or order num (number in left brackets when type difkb lrs -e )]\n```\n\n### Clean\n\n#### Validate backup list file\n`difbk` mainly use backup list file. Threfore, this have sub command that varidate backup list file.\n\n\n1. type bellow command\n\n```\ndifbk clean -vl\n```\n- latest backup file check and if finding miss, correct.\n\n#### Delete specify backup generation\nAlthough `difbk` compress file and save one, Data can be bloated with long use. when so , delete spedify generation, and litghten the buckup.\n\n\n1. type bellow command\n\n```\ndifbk clean -dddd {generation number you wont to leaves last}\n```\n- `generation number` is larger three.\n\n\n### Merge\nWhen you want to merge backups and you want to rename project directory, `difbk` can do.\n\n1. type bellow command\n\n```\ndifbk mrg -alt {project directory after renamd} {backup root directory after renamed}\n```\n- `backup root project directory` mean `old_{project directory name}`　in the same hierarchy as the project directory\n\n- `{project directory after renamd}` can use `-` for current project directory name and `_` for deleting current project directory name\n- `{backup root directory after renamed}` can use `-` for current backup root project directory name and `_` for deleting current backup root project directory name\n\n- merge option\n\t| option| set value | comment  |\n    | --------- | --------- | ------------ |\n    | `-dest` | string | destination directory full path for move|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuutaro%2Fdifbk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpuutaro%2Fdifbk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuutaro%2Fdifbk/lists"}