{"id":18095921,"url":"https://github.com/jackarain/autogit","last_synced_at":"2025-10-27T05:31:26.262Z","repository":{"id":164052719,"uuid":"639211652","full_name":"Jackarain/autogit","owner":"Jackarain","description":"用于自动提交某个目录下所有文件到 git 仓库，实现自动目录备份到 git 仓库的功能。（This is an automated program for backing up directories. Its main function is to automatically commit and push a Git repository directory to a Git backup server.）","archived":false,"fork":false,"pushed_at":"2023-12-10T12:37:50.000Z","size":70827,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-19T10:46:12.917Z","etag":null,"topics":["autobackups","dir-monitor","directory-monitoring","filesystemwatcher","gitbackup","gitwatch","watchdir"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jackarain.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}},"created_at":"2023-05-11T02:12:02.000Z","updated_at":"2024-01-16T06:06:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"7ed7695a-7632-4dba-ad67-e4f0a03b429d","html_url":"https://github.com/Jackarain/autogit","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jackarain%2Fautogit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jackarain%2Fautogit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jackarain%2Fautogit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jackarain%2Fautogit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jackarain","download_url":"https://codeload.github.com/Jackarain/autogit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238444804,"owners_count":19473594,"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","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":["autobackups","dir-monitor","directory-monitoring","filesystemwatcher","gitbackup","gitwatch","watchdir"],"created_at":"2024-10-31T19:11:56.865Z","updated_at":"2025-10-27T05:31:16.252Z","avatar_url":"https://github.com/Jackarain.png","language":"C++","readme":"# autogit\n\n中文 | [English](README_EN.md)\n\\\n\\\n这是一个自动化备份 `Git` 仓库目录的程序，其主要功能是针对一个 `Git` 仓库目录，自动添加目录下所有文件提交并推送到 `Git` 服务器。\n\\\n\\\n开发本程序的主要动机是为了解决本人在 `Linux` 下进行一些复杂操作时难以记忆的问题（例如配置一些复杂的软件如 `GitLab`、`Nextcloud` 等等）。利用 `asciinema` 自动记录所有 `shell` 操作，并将记录文件自动推送到一个远程 `Git` 仓库用于备份。这不仅可以方便地追溯和复现每一步操作，也可以通过 `Git` 仓库轻松保存和分享这些操作记录。\n\\\n\\\n当然本程序也可以用于其它方面的文件备份，例如用于自动备份文档、配置文件等等。\n\\\n\\\n这是我个人的使用方法示例：\n\n1. 创建 `/root/.cache/asciinema/` 目录作为 `git` 仓库。\n2. 配置上一步创建的 `Git` 仓库的推送地址等信息。\n3. 安装 `asciinema`，然后配置 `.zshrc`， 以便于在打开 `shell` 时自动开始录制所有 `shell` 上的操作，在这个文件尾部添加以下代码：\n\n```bash\nctime=$(date +%Y%m%d_%H%M%S)\n\nif [ -z \"$recsession\" ]; then\n    export recsession=$$\n    echo \"Current time: $ctime, recsession: $recsession\"\n    /usr/bin/asciinema rec \"/root/.cache/asciinema/$ctime-$recsession-ascii.cast\"\nfi\n```\n\n修改完成后保存，在这之后在打开 `shell` 时将会自动运行 `asciinema`，并将你在 `shell` 中的所有操作录制并自动保存到 `/root/.cache/asciinema/` 这个 `Git` 仓库目录中。\n\n4. 编译本项目，成功将得到可执行程序 `autogit`，将其复制到 `/usr/local/bin/autogit`，然后创建一个 `systemd` 服务用于自动运行 `autogit`：\n\n```bash\n[Unit]\nDescription=Git watch service\nAfter=network.target\n\n[Service]\nUser=root\nExecStart=/usr/local/bin/autogit --quiet true --check_interval 60 --repository /root/.cache/asciinema\nWorkingDirectory=/tmp/\nExecReload=/bin/kill -HUP $MAINPID\nKillMode=process\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\n```\n\n然后启动这个服务，从这之后，所有在 `shell` 中的操作将被录制。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjackarain%2Fautogit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjackarain%2Fautogit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjackarain%2Fautogit/lists"}