{"id":13448102,"url":"https://github.com/rsnapshot/rsnapshot","last_synced_at":"2025-12-17T04:52:25.557Z","repository":{"id":3104382,"uuid":"4130226","full_name":"rsnapshot/rsnapshot","owner":"rsnapshot","description":"a tool for backing up your data using rsync (if you want to get help, use https://lists.sourceforge.net/lists/listinfo/rsnapshot-discuss)","archived":false,"fork":false,"pushed_at":"2025-07-20T12:40:54.000Z","size":2271,"stargazers_count":3476,"open_issues_count":54,"forks_count":270,"subscribers_count":86,"default_branch":"master","last_synced_at":"2025-07-20T14:32:31.991Z","etag":null,"topics":["backup","perl","rsnapshot","rsync"],"latest_commit_sha":null,"homepage":"http://rsnapshot.org","language":"Perl","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/rsnapshot.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-04-24T21:57:06.000Z","updated_at":"2025-07-20T12:40:59.000Z","dependencies_parsed_at":"2023-07-06T01:55:56.593Z","dependency_job_id":"1898aaed-743b-4334-86d9-009ed4a2c1b1","html_url":"https://github.com/rsnapshot/rsnapshot","commit_stats":{"total_commits":1283,"total_committers":42,"mean_commits":"30.547619047619047","dds":"0.34840218238503506","last_synced_commit":"87f2c120629c803511ce718ef3ed3b7fa4b4b5c2"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/rsnapshot/rsnapshot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsnapshot%2Frsnapshot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsnapshot%2Frsnapshot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsnapshot%2Frsnapshot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsnapshot%2Frsnapshot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rsnapshot","download_url":"https://codeload.github.com/rsnapshot/rsnapshot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsnapshot%2Frsnapshot/sbom","scorecard":{"id":787452,"data":{"date":"2025-08-11","repo":{"name":"github.com/rsnapshot/rsnapshot","commit":"dc58c07515cc3c55d928c1eb4c1240255234deca"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":5,"reason":"Found 6/12 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":4,"reason":"2 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/publish.yml:33","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/rsnapshot/rsnapshot/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/rsnapshot/rsnapshot/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/rsnapshot/rsnapshot/publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/rsnapshot/rsnapshot/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/rsnapshot/rsnapshot/test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/rsnapshot/rsnapshot/test.yml/master?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: COPYING:0","Info: FSF or OSI recognized license: GNU General Public License v2.0: COPYING:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":3,"reason":"2 out of the last 5 releases have a total of 2 signed artifacts.","details":["Info: signed release artifact: rsnapshot-1.5.1.tar.gz.sigstore.json: https://github.com/rsnapshot/rsnapshot/releases/tag/1.5.1","Info: signed release artifact: rsnapshot-1.5.1-rc0.tar.gz.sigstore.json: https://github.com/rsnapshot/rsnapshot/releases/tag/1.5.1-rc0","Warn: release artifact 1.4.5 not signed: https://api.github.com/repos/rsnapshot/rsnapshot/releases/87285858","Warn: release artifact 1.4.4 not signed: https://api.github.com/repos/rsnapshot/rsnapshot/releases/44513304","Warn: release artifact 1.4.3 not signed: https://api.github.com/repos/rsnapshot/rsnapshot/releases/21952138","Warn: release artifact 1.5.1 does not have provenance: https://api.github.com/repos/rsnapshot/rsnapshot/releases/196852862","Warn: release artifact 1.5.1-rc0 does not have provenance: https://api.github.com/repos/rsnapshot/rsnapshot/releases/196851889","Warn: release artifact 1.4.5 does not have provenance: https://api.github.com/repos/rsnapshot/rsnapshot/releases/87285858","Warn: release artifact 1.4.4 does not have provenance: https://api.github.com/repos/rsnapshot/rsnapshot/releases/44513304","Warn: release artifact 1.4.3 does not have provenance: https://api.github.com/repos/rsnapshot/rsnapshot/releases/21952138"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T06:27:34.998Z","repository_id":3104382,"created_at":"2025-08-23T06:27:34.998Z","updated_at":"2025-08-23T06:27:34.998Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27777330,"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-12-17T02:00:08.291Z","response_time":55,"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":["backup","perl","rsnapshot","rsync"],"created_at":"2024-07-31T05:01:35.662Z","updated_at":"2025-12-17T04:52:25.536Z","avatar_url":"https://github.com/rsnapshot.png","language":"Perl","funding_links":[],"categories":["Perl","Backup","Applications","Perl (22)","perl","应用"],"sub_categories":["Data Backup and Recovery","数据备份与恢复"],"readme":"# RSNAPSHOT [![Build Status](https://api.travis-ci.org/rsnapshot/rsnapshot.png?branch=master)](https://travis-ci.org/rsnapshot/rsnapshot)\n\nrsnapshot comes with ABSOLUTELY NO WARRANTY.  This is free software,\nand you are welcome to redistribute it under certain conditions.\nSee the GNU General Public Licence for details.\n\nrsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it\neasy  to make periodic snapshots of local machines, and remote machines over ssh.\nThe code makes extensive use of hard links whenever possible, to greatly reduce\nthe disk space required.\n\nIt is written entirely in perl with no module dependencies, and has been\ntested with versions 5.12.0 upwards. It should work on any reasonably\nmodern UNIX compatible OS. It has been tested successfully on the following\noperating systems:\n\n - Debian: 3.0 (woody), 9.9 (stretch)\n - Redhat: 7.x, 8.0\n - RedHat Enterprise Linux: 3.0 ES, 5, 6, 7\n - Fedora Core: 1, 3\n - Fedora: 17, 18\n - CentOS: 3, 4, 5, 6, 7\n - WhiteBox Enterprise Linux 3.0\n - Slackware 9.0\n - SuSE: 9.0\n - Gentoo Linux\n - FreeBSD 4.9-STABLE\n - OpenBSD 3.x\n - Solaris 8 (SPARC and x86)\n - Mac OS X\n - IRIX 6.5\n\nIf this is your first experience with rsnapshot, you may want to read the man\npage which will give you a detailed walk-through on how to get rsnapshot up and\nrunning and also serve as a reference of all available commands.\n\nIf you are upgrading from version 1.1.6 or earlier, make sure you read the\nfile [Upgrading from 1.1](docs/Upgrading_from_1.1).\n\nFor installation or upgrade instructions please read the [INSTALL](INSTALL.md) doc.\n\nIf you want to work on improving rsnapshot please read the\n[CONTRIBUTING](CONTRIBUTING.md) doc.\n\nIf you want to ask a question or have a general discussion use the\n[Mailing List](https://lists.sourceforge.net/lists/listinfo/rsnapshot-discuss).\n\n## COMPATIBILITY NOTICES (Please read)\n\n 1. Note that systems which use GNU cp version 5.9 or later will have problems\n    with rsnapshot versions up to and including 1.2.3, if `cmd_cp` is enabled\n    (and points at the later gnu cp).  This is no longer a problem since\n    rsnapshot 1.2.9, as it strips off trailing slashes when running cp.\n\n 2. If you have rsync version 2.5.7 or later, you may want to enable the\n    link_dest parameter in the rsnapshot.conf file.\n\n    If you are running Linux but do not have the problem above, you should\n    enable the `cmd_cp` parameter in rsnapshot.conf (especially if you do not\n    have link_dest enabled).\n\n    Be advised that currently `link_dest` doesn't do well with unavailable hosts.\n    Specifically, if a remote host is unavailable using `link_dest`, there will\n    be no latest backup of that machine, and a full re-sync will be required\n    when it becomes available. Using the other methods, the last good snapshot\n    will be preserved, preventing the need for a re-sync. We hope to streamline\n    this in the future.\n\n## CONFIGURATION\nOnce you have installed rsnapshot, you will need to configure it.\nThe default configuration file is /etc/rsnapshot.conf, although the exact path\nmay be different depending on how the program was installed. If this\nfile does not exist, copy `/etc/rsnapshot.conf.default` over to\n`/etc/rsnapshot.conf` and edit it to suit your tastes. See the man page for\nthe full list of configuration options.\n\nWhen `/etc/rsnapshot.conf` contains your chosen settings, do a quick sanity\ncheck to make sure everything is ready to go:\n\n    $ rsnapshot configtest\n\nIf this works, you can see essentially what will happen when you run it for\nreal by executing the following command (where interval is `alpha`, `beta`, `etc`):\n\n    $ rsnapshot -t [interval]\n\nOnce you are happy with everything, the final step is to setup a cron job to\nautomate your backups. Here is a quick example which makes backups every four\nhours, and beta backups for a week:\n\n    0 */4 * * *     /usr/local/bin/rsnapshot alpha\n    50 23 * * *     /usr/local/bin/rsnapshot beta\n\nIn the previous example, there will be six `alpha` snapshots\ntaken each day (at 0,4,8,12,16, and 20 hours). There will also\nbe beta snapshots taken every night at 11:50PM. The number of\nsnapshots that are saved depends on the \"interval\" settings in\n/etc/rsnapshot.conf.\n\nFor example:\n\n    retain\talpha\t\t6\n\nThis means that every time `rsnapshot alpha` is run, it will make a\nnew snapshot, rotate the old ones, and retain the most recent six\n(`alpha.0` - `alpha.5`).\n\nIf you prefer instead to have three levels of backups (which we'll\ncall `beta`, `gamma` and `delta`), you might set up cron like this:\n\n    00 00 * * *     /usr/local/bin/rsnapshot beta\n    00 23 * * 6     /usr/local/bin/rsnapshot gamma\n    00 22 1 * *     /usr/local/bin/rsnapshot delta\n\nThis specifies a `beta` rsnapshot at midnight, a `gamma` snapshot\non Saturdays at 11:00pm and a `delta` rsnapshot at 10pm on the\nfirst day of each month.\n\nNote that the backups are done from the highest interval first\n(in this case `delta`) and go down to the lowest interval.  If\nyou are not having cron invoke the `alpha` snapshot interval,\nthen you must also ensure that `alpha` is not listed as one of\nyour intervals in rsnapshot.conf (for example, comment out alpha,\nso that `beta` becomes the lowest interval).\n\nRemember that it is only the lowest interval which actually does\nthe rsync to back up the relevant source directories, the higher\nintervals just rotate snapshots around.  Unless you have enabled\n`sync_first` in your configuration-file, in which case only the `sync`\npseudo-interval does the actual rsync, and all real intervals\njust rotate snapshots.\n\nAlso remember that a higher interval will rotate the oldest snapshot of\nthe interval one step lower as its newest snapshot. For instance if you set\n`daily` and `weekly` snapshots and set `daily` to keep 30 snapshots, the \nnewest snapshot for `weekly` will be the oldest (30 day old) `daily`\nsnapshot after a rotation.\n\nFor the full documentation, type `man rsnapshot` once it is installed. The\n[HOWTO](docs/HOWTOs/rsnapshot-HOWTO.en.md) also has a detailed overview of\nhow to install and configure rsnapshot, and things like how to set it up so\nusers can restore their own files.\n\nIf you plan on using the `backup_script` parameter in your backup scheme,\ntake a look at the `utils/`-directory in the source distribution for several\nexample scripts.  The `utils/rsnapreport.pl` script is well worth a look.\n\n## AUTHORS\n\nPlease see the [AUTHORS](/AUTHORS) file for the complete list of contributors.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsnapshot%2Frsnapshot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frsnapshot%2Frsnapshot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsnapshot%2Frsnapshot/lists"}