{"id":15647258,"url":"https://github.com/supercilex/ftzz","last_synced_at":"2025-04-05T13:08:06.084Z","repository":{"id":53884855,"uuid":"417989696","full_name":"SUPERCILEX/ftzz","owner":"SUPERCILEX","description":"File Tree Fuzzer creates a pseudo-random directory hierarchy filled with some number of files.","archived":false,"fork":false,"pushed_at":"2025-01-28T02:03:21.000Z","size":6934,"stargazers_count":47,"open_issues_count":1,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-29T12:08:50.093Z","etag":null,"topics":["cli","directory-tree","files","fuzzing","rust"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/ftzz","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SUPERCILEX.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"SUPERCILEX"}},"created_at":"2021-10-17T01:26:06.000Z","updated_at":"2025-03-09T17:01:11.000Z","dependencies_parsed_at":"2024-01-05T08:24:46.146Z","dependency_job_id":"cd816887-149e-4cc6-8fe5-123965c2b23b","html_url":"https://github.com/SUPERCILEX/ftzz","commit_stats":{"total_commits":276,"total_committers":3,"mean_commits":92.0,"dds":0.01449275362318836,"last_synced_commit":"7ed248fa45813e148ff4eb35d7e497e1d5a5d2fe"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SUPERCILEX%2Fftzz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SUPERCILEX%2Fftzz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SUPERCILEX%2Fftzz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SUPERCILEX%2Fftzz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SUPERCILEX","download_url":"https://codeload.github.com/SUPERCILEX/ftzz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247339158,"owners_count":20923014,"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":["cli","directory-tree","files","fuzzing","rust"],"created_at":"2024-10-03T12:17:54.997Z","updated_at":"2025-04-05T13:08:06.061Z","avatar_url":"https://github.com/SUPERCILEX.png","language":"Rust","funding_links":["https://github.com/sponsors/SUPERCILEX"],"categories":[],"sub_categories":[],"readme":"# FTZZ\n\nFile Tree Fuzzer creates a pseudo-random directory hierarchy filled with some number of files.\n\nA technical overview of the project is available at https://alexsaveau.dev/blog/ftzz.\n\n## Installation\n\n### Use prebuilt binaries\n\nBinaries for a number of platforms are available on the\n[release page](https://github.com/SUPERCILEX/ftzz/releases/latest).\n\n### Build from source\n\n```console,ignore\n$ cargo +nightly install ftzz\n```\n\n\u003e To install cargo, follow\n\u003e [these instructions](https://doc.rust-lang.org/cargo/getting-started/installation.html).\n\n## Usage\n\nGenerate a reproducibly random tree in the current directory with *approximately* 1 million files:\n\n```console\n$ ftzz ./simple -n 1M\nAbout 1,000,000 files will be generated in approximately 1,000 directories distributed across a tree of maximum depth 5 where each directory contains approximately 4 other directories.\nCreated 1,003,229 files across 1,259 directories.\n\n```\n\nGenerate *exactly* 1 million files:\n\n```console\n$ ftzz ./exact -en 1M\nExactly 1,000,000 files will be generated in approximately 1,000 directories distributed across a tree of maximum depth 5 where each directory contains approximately 4 other directories.\nCreated 1,000,000 files across 1,259 directories.\n\n```\n\nGenerate ~10_000 files with ~1 MB of random data spread across them:\n\n```console\n$ ftzz ./with_data -n 10K -b 1M\nAbout 10,000 files will be generated in approximately 1,000 directories distributed across a tree of maximum depth 5 where each directory contains approximately 4 other directories. Each file will contain approximately 100 bytes of random data.\nCreated 9,312 files (924.6 KB) across 1,570 directories.\n\n```\n\nBecause FTZZ creates reproducible outputs, the generated directory will always have the same\nstructure given the same inputs. To generate variations on a structure with the same parameters,\nchange the starting seed:\n\n```console\n$ ftzz ./unseeded -n 100\nAbout 100 files will be generated in approximately 100 directories distributed across a tree of maximum depth 5 where each directory contains approximately 3 other directories.\nCreated 45 files across 198 directories.\n\n$ ftzz ./seeded -n 100 --seed 42 # Or $RANDOM\nAbout 100 files will be generated in approximately 100 directories distributed across a tree of maximum depth 5 where each directory contains approximately 3 other directories.\nCreated 83 files across 110 directories.\n\n```\n\nOther parameters can be found in the built-in docs:\n\n```console\n$ ftzz --help\nGenerate a random directory hierarchy with some number of files\n\nA pseudo-random directory hierarchy will be generated (seeded by this command's input parameters)\ncontaining approximately the target number of files. The exact configuration of files and\ndirectories in the hierarchy is probabilistically determined to mostly match the specified\nparameters.\n\nGenerated files and directories are named using monotonically increasing numbers, where files are\nnamed `n` and directories are named `n.dir` for a given natural number `n`.\n\nBy default, generated files are empty, but random data can be used as the file contents with the\n`total-bytes` option.\n\nUsage: ftzz[EXE] [OPTIONS] --files \u003cNUM_FILES\u003e \u003cROOT_DIR\u003e\n\nArguments:\n  \u003cROOT_DIR\u003e\n          The directory in which to generate files\n          \n          The directory will be created if it does not exist.\n\nOptions:\n  -n, --files \u003cNUM_FILES\u003e\n          The number of files to generate\n          \n          Note: this value is probabilistically respected, meaning any number of files may be\n          generated so long as we attempt to get close to N.\n\n      --files-exact\n          Whether or not to generate exactly N files\n\n  -b, --total-bytes \u003cNUM_BYTES\u003e\n          The total amount of random data to be distributed across the generated files\n          \n          Note: this value is probabilistically respected, meaning any amount of data may be\n          generated so long as we attempt to get close to N.\n          \n          [default: 0]\n\n      --fill-byte \u003cFILL_BYTE\u003e\n          Specify a specific fill byte to be used instead of deterministically random data\n          \n          This can be used to improve compression ratios of the generated files.\n\n      --bytes-exact\n          Whether or not to generate exactly N bytes\n\n  -e, --exact\n          Whether or not to generate exactly N files and bytes\n\n  -d, --max-depth \u003cMAX_DEPTH\u003e\n          The maximum directory tree depth\n          \n          [default: 5]\n\n  -r, --ftd-ratio \u003cFILE_TO_DIR_RATIO\u003e\n          The number of files to generate per directory (default: files / 1000)\n          \n          Note: this value is probabilistically respected, meaning not all directories will have N\n          files).\n\n      --seed \u003cSEED\u003e\n          Change the PRNG's starting seed\n          \n          For example, you can use bash's `$RANDOM` function.\n          \n          [default: 0]\n\n  -h, --help\n          Print help (use `-h` for a summary)\n\n  -q, --quiet...\n          Decrease logging verbosity\n\n  -v, --verbose...\n          Increase logging verbosity\n\n  -V, --version\n          Print version\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupercilex%2Fftzz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsupercilex%2Fftzz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupercilex%2Fftzz/lists"}