{"id":26151935,"url":"https://github.com/abougouffa/real-backup","last_synced_at":"2026-02-09T21:10:06.836Z","repository":{"id":222900327,"uuid":"758683765","full_name":"abougouffa/real-backup","owner":"abougouffa","description":"Perform a backup on each file save, real backup for Emacs!","archived":false,"fork":false,"pushed_at":"2024-11-17T15:37:17.000Z","size":42,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-11T06:55:10.895Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abougouffa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-02-16T20:55:51.000Z","updated_at":"2024-11-17T15:37:20.000Z","dependencies_parsed_at":"2024-02-20T12:25:10.374Z","dependency_job_id":"c888a7bb-1f3d-4782-9936-a52bc300fb6d","html_url":"https://github.com/abougouffa/real-backup","commit_stats":null,"previous_names":["abougouffa/real-backup"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abougouffa/real-backup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abougouffa%2Freal-backup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abougouffa%2Freal-backup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abougouffa%2Freal-backup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abougouffa%2Freal-backup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abougouffa","download_url":"https://codeload.github.com/abougouffa/real-backup/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abougouffa%2Freal-backup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271752126,"owners_count":24814750,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-03-11T06:55:12.005Z","updated_at":"2026-02-09T21:10:01.797Z","avatar_url":"https://github.com/abougouffa.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://github.com/abougouffa/real-backup\"\u003e\u003cimg src=\"https://www.gnu.org/software/emacs/images/emacs.png\" alt=\"Emacs Logo\" width=\"80\" height=\"80\" align=\"right\"\u003e\u003c/a\u003e\n## real-backup.el\n*Make a copy at each savepoint of a file*\n\n---\n\nThis is a fork and reviving of [`backup-each-save`](https://www.emacswiki.org/emacs/BackupEachSave).\n\nEver wish to go back to an older saved version of a file?  Then\nthis package is for you.  This package copies every file you save\nin Emacs to a backup directory tree (which mirrors the tree\nstructure of the filesystem), with a timestamp suffix to make\nmultiple saves of the same file unique.  Never lose old saved\nversions again.\n\nTo activate globally, place this file in your `load-path`, and add\nthe following lines to your ~/.emacs file:\n\n    (require 'real-backup)\n    (add-hook 'after-save-hook 'real-backup)\n\nTo activate only for individual files, add the require line as\nabove to your ~/.emacs, and place a local variables entry at the\nend of your file containing the statement:\n\n    (add-hook (make-local-variable 'after-save-hook) 'real-backup)\n\nNOTE:  I would give a full example of how to do this here, but it\nwould then try to activate it for this file since it is a short\nfile and the docs would then be within the \"end of the file\" local\nvariables region.  :)\n\nTo filter out which files it backs up, use a custom function for\n`real-backup-filter-function`.  For example, to filter out\nthe saving of gnus .newsrc.eld files, do:\n\n    (defun real-backup-no-newsrc-eld (filename)\n      (cond\n       ((string= (file-name-nondirectory filename) \".newsrc.eld\") nil)\n       (t t)))\n    (setq real-backup-filter-function 'real-backup-no-newsrc-eld)\n\n### ChangeLog\n\n- v1.0 -\u003e v1.1:  added `real-backup-filter-function`\n- v1.1 -\u003e v1.2:\n  - added real-backup-size-limit\n  - fixed \"Local Variables\" docs, which was inadvertently being activated\n- v1.2 -\u003e v1.3:  fix for some emacsen not having `file-remote-p`\n- v1.3 -\u003e v1.4:  added footer and autoload\n- v1.4 -\u003e v2.0:  refactor, deprecate old Emacs\n- v2.0 -\u003e v2.1:\n  - more features and tweaks\n  - add `real-backup-cleanup` and `real-backup-auto-cleanup`\n  - add `real-backup-open-backup`\n- v2.1 -\u003e v3.0:  rebrand the package as `real-backup`\n- v3.0 -\u003e v3.1:  add compression support\n\n\n\n### Customization Documentation\n\n#### `real-backup-directory`\n\nThe root directory when to create backups.\n\n#### `real-backup-remote-files`\n\nWhether to backup remote files at each save.\n\nDefaults to nil.\n\n#### `real-backup-filter-function`\n\nFunction which should return non-nil if the file should be backed up.\n\n#### `real-backup-size-limit`\n\nMaximum size of a file (in bytes) that should be copied at each savepoint.\n\nIf a file is greater than this size, don't make a backup of it.\nSetting this variable to nil disables backup suppressions based\non size.\n\n#### `real-backup-cleanup-keep`\n\nNumber of copies to keep for each file in `real-backup-cleanup`.\n\n#### `real-backup-auto-cleanup`\n\nAutomatically cleanup after making a backup.\n\n#### `real-backup-show-header`\n\nShow a header when vienwing a backup file.\n\n#### `real-backup-compression`\n\nCompression extension to be used, set to nil to disable compression.\n\n### Function and Macro Documentation\n\n#### `(real-backup)`\n\nPerform a backup of the current file if needed.\n\n#### `(real-backup-compute-location FILENAME \u0026optional UNIQUE)`\n\nCompute backup location for FILENAME.\nWhen UNIQUE is provided, add a unique timestamp after the file name.\n\n#### `(real-backup-backups-of-file FILENAME)`\n\nList of backups for FILENAME.\n\n#### `(real-backup-cleanup FILENAME)`\n\nCleanup backups of FILENAME, keeping `real-backup-cleanup-keep` copies.\n\n#### `(real-backup-open-backup FILENAME)`\n\nOpen a backup of FILENAME or the current buffer.\n\n-----\n\u003cdiv style=\"padding-top:15px;color: #d0d0d0;\"\u003e\nMarkdown README file generated by\n\u003ca href=\"https://github.com/mgalgs/make-readme-markdown\"\u003emake-readme-markdown.el\u003c/a\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabougouffa%2Freal-backup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabougouffa%2Freal-backup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabougouffa%2Freal-backup/lists"}