{"id":19486503,"url":"https://github.com/phxql/vm-backup","last_synced_at":"2025-07-10T01:39:02.489Z","repository":{"id":47425881,"uuid":"516127756","full_name":"phxql/vm-backup","owner":"phxql","description":"A tool with which VMs can be easily backed up to an external drive","archived":false,"fork":false,"pushed_at":"2024-11-11T08:49:12.000Z","size":146,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-08T08:14:25.284Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phxql.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}},"created_at":"2022-07-20T20:37:43.000Z","updated_at":"2024-11-11T08:49:15.000Z","dependencies_parsed_at":"2022-08-23T09:50:39.653Z","dependency_job_id":null,"html_url":"https://github.com/phxql/vm-backup","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phxql%2Fvm-backup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phxql%2Fvm-backup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phxql%2Fvm-backup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phxql%2Fvm-backup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phxql","download_url":"https://codeload.github.com/phxql/vm-backup/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240727699,"owners_count":19848041,"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":[],"created_at":"2024-11-10T20:38:05.703Z","updated_at":"2025-02-25T18:43:07.686Z","avatar_url":"https://github.com/phxql.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VMbackup\n\n## What is this?\n\nA tool with which VMs can be easily backed up to an external drive.\n\n## How does this work?\n\nIt optimizes the data copied by hashing chunks and store this hash index alongside the VM on the external drive. When\nrunning the backup again, it reads the VM from the local disk, hashes the chunks and compares the hash to the hash index\non the external drive. Only chunks with a different hash are copied (that means that the chunk has changed and needs to\nbe updated). This optimization has a positive effect only if the local disk is faster than the external drive.\n\n## Can I use this to back up my production VMs?\n\nI haven't tested it that thoroughly that I would recommend that. But I can't and won't stop you. Please report back how\nit went.\n\n## Does this only work with VMs?\n\nNo, it works on every file. I just use it for VM backups.\n\n## How to use\n\nYou'll need Java 17 on your machine.\n\n```\nUsage: vm-backup [-dhV] [--no-last-modified] [-a=algorithm] [-b=size] \u003csource\u003e\n                 \u003ctarget\u003e\nA tool with which VMs can be easily backed up to an external drive\n      \u003csource\u003e             Source file to copy\n      \u003ctarget\u003e             Target file to copy to\n  -a, --hash-algorithm=algorithm\n                           Hash algorithm to use for the chunks. Valid values:\n                             SHA1, SHA224, SHA256, SHA384, SHA512. Default:\n                             SHA256\n  -b, --block-size=size    Block size to use for the chunks. Can use KiB, MiB,\n                             GiB, TiB suffixes. Default: 1MiB\n  -d, --debug              Switches on debug logging. Not enabled by default.\n  -h, --help               Show this help message and exit.\n      --no-last-modified   Skips the last modified time checking.\n  -V, --version            Print version information and exit.\n```\n\n## What about hash collisions?\n\nUh oh.\n\n## What happens if I change the VM on the external drive without updating the hash index?\n\nUh oh. Don't do that. Bad. Very bad.\n\n## What hash algorithm is used?\n\nSHA-256 by default. You can change this with the `--hash-algorithm` flag.\n\n## What bloock size is used?\n\n1 MiB by default. You can change this with the `--block-size` flag.\n\n## Author\n\nMoritz Halbritter ([@phxql](https://github.com/phxql))\n\n## License\n\n[GPLv3](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphxql%2Fvm-backup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphxql%2Fvm-backup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphxql%2Fvm-backup/lists"}