{"id":22021822,"url":"https://github.com/foo-software/s3-directory-sync-cli","last_synced_at":"2026-05-02T23:42:37.918Z","repository":{"id":35026240,"uuid":"197977784","full_name":"foo-software/s3-directory-sync-cli","owner":"foo-software","description":"A CLI to sync a local directory to an AWS S3 bucket.","archived":false,"fork":false,"pushed_at":"2023-01-07T04:16:53.000Z","size":1212,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-25T07:49:41.897Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/foo-software.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}},"created_at":"2019-07-20T20:24:27.000Z","updated_at":"2022-01-06T18:18:24.000Z","dependencies_parsed_at":"2022-09-15T23:40:47.847Z","dependency_job_id":null,"html_url":"https://github.com/foo-software/s3-directory-sync-cli","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/foo-software/s3-directory-sync-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foo-software%2Fs3-directory-sync-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foo-software%2Fs3-directory-sync-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foo-software%2Fs3-directory-sync-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foo-software%2Fs3-directory-sync-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/foo-software","download_url":"https://codeload.github.com/foo-software/s3-directory-sync-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foo-software%2Fs3-directory-sync-cli/sbom","scorecard":{"id":406356,"data":{"date":"2025-08-11","repo":{"name":"github.com/foo-software/s3-directory-sync-cli","commit":"01d9298885a62ccdc004bde458de1ae093f54db0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.3,"checks":[{"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":-1,"reason":"No tokens found","details":null,"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":"Code-Review","score":0,"reason":"Found 0/29 approved changesets -- score normalized to 0","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":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"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":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"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 2 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"}},{"name":"Vulnerabilities","score":0,"reason":"36 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-2h3h-q99f-3fhc","Warn: Project is vulnerable to: GHSA-gmw6-94gg-2rc2","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-hj9c-8jmm-8c52","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T21:22:29.789Z","repository_id":35026240,"created_at":"2025-08-18T21:22:29.789Z","updated_at":"2025-08-18T21:22:29.789Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32553690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T22:28:24.418Z","status":"ssl_error","status_checked_at":"2026-05-02T22:28:14.225Z","response_time":132,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2024-11-30T06:15:24.854Z","updated_at":"2026-05-02T23:42:37.890Z","avatar_url":"https://github.com/foo-software.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## DEPRECATED\n\n**This project has been deprecated and is no longer maintained** in favor of projects like [s3-sync-client](https://github.com/jeanbmar/s3-sync-client) which use the [AWS CLI command](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/sync.html) directly. Comparatively, the linked project has much higher adoption and volume of maintainers / contributors. One reason for dropping support of this project is its major downfall in its lack of support for compression as noted in [issue #12](https://github.com/foo-software/s3-directory-sync-cli/issues/12).\n\nPlease consider using [s3-sync-client](https://github.com/jeanbmar/s3-sync-client) instead.\n\n# `@foo-software/s3-directory-sync-cli`\n\n\u003e A CLI to sync a local directory with an AWS S3 bucket. Example usage could involve an automated deployment of a serverless web app. This command essentially uploads a folder to a bucket.\n\n## Install\n\n\u003e For use within a project:\n```bash\nnpm install @foo-software/s3-directory-sync-cli --save-dev\n```\n\n\u003e For global use:\n```bash\nnpm install @foo-software/s3-directory-sync-cli -g\n```\n\n## Usage\n\n\u003e Command line:\n```bash\ns3-directory-sync \\\n  --S3_DIRECTORY_SYNC_ACCESS_KEY_ID abcdef \\\n  --S3_DIRECTORY_SYNC_BUCKET ghijkl \\\n  --S3_DIRECTORY_SYNC_LOCAL_DIRECTORY build \\\n  --S3_DIRECTORY_SYNC_SECRET_ACCESS_KEY mnopqr \\\n  /\n```\n\n\u003e In a project `package.json` (assuming environment variables like `S3_DIRECTORY_SYNC_ACCESS_KEY_ID=abcdef`):\n```json\n{\n  \"scripts\": {\n    \"deploy\": \"s3-directory-sync\"\n  }\n}\n```\n\n## Parameters\n\nParameters can either be passed in the command line as arguments or as environment variables.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eName\u003c/th\u003e\n    \u003cth\u003eDescription\u003c/th\u003e\n    \u003cth\u003eDefault\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_ACCESS_KEY_ID\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eThe AWS \u003ccode\u003eaccessKeyId\u003c/code\u003e for an S3 bucket.\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003e--\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_BUCKET\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eThe AWS \u003ccode\u003eBucket\u003c/code\u003e for an S3 bucket.\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003e--\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_DERIVE_CONTENT_TYPE\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eIf set to \u003ccode\u003etrue\u003c/code\u003e will derive `Content-Type` metadata from file extension via \u003ca href=\"https://www.npmjs.com/package/mime-types\"\u003e\u003ccode\u003emime-types\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_SECRET_ACCESS_KEY\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eThe AWS \u003ccode\u003esecretAccessKey\u003c/code\u003e for an S3 bucket.\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003e--\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_LOCAL_DIRECTORY\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eThe local directory to sync (upload), relative to the directory of the command execution.\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003e--\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_PROGRESS\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eIf set to \u003ccode\u003etrue\u003c/code\u003e the CLI will display a progress bar. Might be buggy in CI which justifies this option.\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_REMOTE_DIRECTORY\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eThe directory of an S3 bucket to sync from a local directory. An empty string signifies the root.\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003e''\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_REMOVE_HTML_EXTENSIONS\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eIf \u003ccode\u003etrue\u003c/code\u003e HTML files will be uploaded with the `.html` extension omitted from the `Key`. This can be helpful if hosting an S3 website.\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_REMOVE_HTML_EXTENSIONS_EXCLUDE\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eAn escape hatch to the above \u003ccode\u003eS3_DIRECTORY_SYNC_REMOVE_HTML_EXTENSIONS\u003c/code\u003e option. In the future, perhaps we could make this into a regex, but for now you can populate this value with a comma-separated list of paths relative to the local directory. Example \u003ccode\u003estatic/html/iframe.html,static/html/iframe2.html\u003c/code\u003e (no glob pattern or dot prefix).\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003e''\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_ACL\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eThe \u003ca href=\"https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html\"\u003eAccess Control Policy\u003c/a\u003e as documented.\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003epublic-read\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eS3_DIRECTORY_SYNC_STRICT\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003eSet to \u003ccode\u003etrue\u003c/code\u003e if remote files that don't exist locally should be removed.\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Credits\n\n\u003e \u003cimg src=\"https://lighthouse-check.s3.amazonaws.com/images/logo-simple-blue-light-512.png\" width=\"100\" height=\"100\" align=\"left\" /\u003e This package was brought to you by [Foo - a website quality monitoring tool](https://www.foo.software). Automatically test and monitor website performance, SEO and accessibility with Lighthouse. Analyze historical records of Lighthouse tests with automated monitoring. Report with confidence about SEO and performance improvements to stay on top of changes when they happen!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoo-software%2Fs3-directory-sync-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffoo-software%2Fs3-directory-sync-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoo-software%2Fs3-directory-sync-cli/lists"}