{"id":13722437,"url":"https://github.com/tailscale/cpc","last_synced_at":"2025-06-17T15:33:42.439Z","repository":{"id":65939499,"uuid":"602349243","full_name":"tailscale/cpc","owner":"tailscale","description":"a copy tool","archived":false,"fork":false,"pushed_at":"2023-02-18T18:04:38.000Z","size":10,"stargazers_count":100,"open_issues_count":0,"forks_count":8,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-06-13T12:49:04.635Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tailscale.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-02-16T02:36:55.000Z","updated_at":"2024-12-28T13:18:34.000Z","dependencies_parsed_at":"2023-02-27T07:45:52.939Z","dependency_job_id":null,"html_url":"https://github.com/tailscale/cpc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tailscale/cpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Fcpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Fcpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Fcpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Fcpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tailscale","download_url":"https://codeload.github.com/tailscale/cpc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Fcpc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260388377,"owners_count":23001516,"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-08-03T01:01:28.727Z","updated_at":"2025-06-17T15:33:37.415Z","avatar_url":"https://github.com/tailscale.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# cpc\n\nA copy tool for incremental copies of large files, such as databases.\n\nIt's like `rsync --inplace` but a bit faster.\n\nIt uses a thread per core and doesn't do writes of 4KB pages that are unchanged.\n\n## Problem statement\n\nWe had two filesystems on a machine and some large SQLite databases and other\nfiles on one filesystem that we wanted to move to the other filesystem. More\nspecifically: two ext4 filesystems on separate AWS EBS block devices, both\nattached to the same Linux 64-core VM with lots of memory (larger than the data\nto be copied).\n\nTo minimize service disruption, we wanted to do a live inconsistent copy of the\ndata to get most of it over, then stop the service, then do another quick\nincrement copy, then start it up again.\n\nThis tool let us do the migration with minimal downtime.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailscale%2Fcpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftailscale%2Fcpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailscale%2Fcpc/lists"}