{"id":21730980,"url":"https://github.com/loopyd/yoffhasher","last_synced_at":"2025-03-20T23:25:37.621Z","repository":{"id":162562895,"uuid":"118517809","full_name":"loopyd/yoffhasher","owner":"loopyd","description":"Automagical Backup PowerShell Script","archived":false,"fork":false,"pushed_at":"2018-01-28T11:05:07.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-25T20:11:27.576Z","etag":null,"topics":["backup-script","backup-utility","hash","powershell","powershell-script"],"latest_commit_sha":null,"homepage":null,"language":null,"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/loopyd.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-22T21:30:52.000Z","updated_at":"2018-01-27T18:18:02.000Z","dependencies_parsed_at":"2024-04-19T08:48:03.056Z","dependency_job_id":null,"html_url":"https://github.com/loopyd/yoffhasher","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loopyd%2Fyoffhasher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loopyd%2Fyoffhasher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loopyd%2Fyoffhasher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loopyd%2Fyoffhasher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/loopyd","download_url":"https://codeload.github.com/loopyd/yoffhasher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244707923,"owners_count":20496816,"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":["backup-script","backup-utility","hash","powershell","powershell-script"],"created_at":"2024-11-26T04:19:04.884Z","updated_at":"2025-03-20T23:25:37.613Z","avatar_url":"https://github.com/loopyd.png","language":null,"readme":"# YOFFHASHER\n---------------------\n## Autonimous backup management script\n# PowerShell script for backup management\nBy: loopyd / fur_user\n\nOogled at by:  yucked  ;3\n\n---\n\n### What is this?\n\nAn automagical backup organization script with a lot of extendability and optimization for Windows PowerShell 5.0 and above.\nIt can be installed as a background service and run automagically at intervals, or run a few times and left sadly...to cry\nalone and forgotten about.  (please, no - animal abuse is not okay).\n\n---\n\n### Installation\n# For the diligant bold-hearted tester:\n\n1.  Clone it  (currently **testing** branch only due to beta-ness)\n2.  Place the modules to run at the bottom of the script ( a few examples have been provided with ther appropriate arguments )\n3.  Run, hash, YOFF!\n\n---\n\n### Configuration and Usage\n\nYOFFHASHER uses a segmented backup system.\nEach segment is refered to as a ``chainlink``.\n\nYou link each function together to design your ``backup chain``.\n\nSome functions, like ``Flatten-Directory`` and ``Generate-FolderClusters``, should be placed correctly at the beginning and the end of your ``backup chain`` respectively, to put the backup media in a state where it can be worked on in a flat manner.\nFunctions like ``Migrate-All`` bring new data into your backup dataset.  They should also be ran on a flattened tree, and contain special features that save hard-drive space while preserving the original ``incoming`` folder tree, to optimize data mergers.\n\nIt is recommended you design your backup cluster directory structure as follows:\n\n``incoming`` - Watched by ``Migrate-All`` - Merge data in by \"New and Updated files only\" from your upload interface, filtered by ``Modification Date``.  Keep the stubs!\n``pictures``, ``videos``, ``documents``, etc. - Could potentially reside on a NAS, or another storage medium.  This is where your clusters will populate.\n\nOptions for each ``chainlink`` segment are listed below:\n\n# Flatten-Directory options:\n```\n-FlattenRootDirectory [string]\n     The path to flatten the cluster folders to.  It is the folder that contains all of the cluster directories.\n```\n\n# Reset-Directory options:\n```\n-ResetDirectory [string]\n     The path which contains files that need their attribute flags reset.\n-FileTypeFilter [string,string,...]\n     Glob expressions filtering files by extension (or potentially name!)  Add as many as you'd like.\n```\n\n# Hash-Directory options:\n```\n-ResetDirectory [string]\n     The path which contains files that need their attribute flags reset.\n-FileTypeFilter [string,string,...]\n     Glob expressions filtering files by extension (or potentially name!)  Add as many as you'd like.\n```\n\n# Generate-FolderClusters options:\n```\n-ClusterRootDirectory [string]\n     The path which contains files that need organized.  It is recommended you run Flatten-Directory and \n     Reset-Directory on the same directory first, as the operation does not recurse subfolders !\n-FileTypeFilter [string,string,...]\n     Glob expressions filtering files by extension (or potentially name!)  Add as many as you'd like.\n-ClusterSize [int]\n     Each cluster folder will take the number of files in you specify here.  You should set this higher\n     (50-100) for larger directories, or (25-50) for smaller directories.\n```\n\n# Migrate-All options:\n```\n-MigrateRootDirectory [string]\n     The path which contains files that need migrated.\n-FileTypeFilter [string,string,...]\n     Glob expressions filtering files by extension (or potentially name!)  Add as many as you'd like.\n-DestinationDirectory [string]\n     The path to place the migrated files (flat).\n-StubOriginals [bool]\n\tWether or not to leave an empty stub behind in the copy operation which retains the original file's\n\tcreation and modification dates.  Useful to preserve tree structures in the original directory, but\n\tsave storage space.\n```\n\n# Stub-Move options:\n```\n-FilePath [string]\n     The File to move and create a stub of\n-DestinationDirectory [string]\n     The destination path/filename (usually the same, could be different to avoid duplicates)\n```\n\n# Add-Resource options:\n```\n  CURRENTLY IN TESTING STATE, DON'T USE THIS JUST YET.  IT'S A JSON RESOURCE PACKER I HAVEN'T\n  IMPLEMENTED YET.  PLANNED TO HOLD 7-ZIP FOR AUTOTARBALLING AND TRANSCODING EXECUTABLES FOR\n  UNIFICATION OF FILE FORMATS.\n```\n\n---\n\n### Example usage\n\nSamples are provided at the bottom of the powershell in testing.  But here they are run in the proper order:\n\n```\nFlatten-Directory -FlattenRootDirectory \"E:\\lupin\\Pictures\\sorted\\hashed\"\nReset-Directory -ResetDirectory \"E:\\lupin\\Pictures\\sorted\\hashed\" -FileTypeFilter *.gif,*.jpg,*.png,*.jpeg,*.bmp\nHash-Directory -HashDirectory \"E:\\lupin\\Pictures\\sorted\\hashed\" -FileTypeFilter *.gif,*.jpg,*.png,*.jpeg,*.bmp\nGenerate-FolderClusters -ClusterRootDirectory \"E:\\lupin\\Pictures\\sorted\\hashed\" -FileTypeFilter *.gif,*.jpg,*.png,*.jpeg,*.bmp -ClusterSize 100\n```\n\n### LICENSE\n\nSee ``license.md`` for licensing details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floopyd%2Fyoffhasher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Floopyd%2Fyoffhasher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floopyd%2Fyoffhasher/lists"}