Coder Social home page Coder Social logo

pericles-tpt / storageeye Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 49 KB

A disk monitoring tool that checks for sudden capacity changes in order to allow the user to more easily diagnose and fix the causes of sudden losses in disk space (as opposed to trying to hunt down the issue in file explorer).

Python 100.00%

storageeye's Introduction

StorageEye

A tool that checks the remaining disk space every periodically (decided by the user). If the remaining disk space is reduced by more than 500MB it will look through each folder on the selected disk and compare their sizes with the folders in its data logs to find the largest change(s) (50MB or more by default but adjustable) and then gives the user a summary of the changes in disk usage of those folders in the form of their directory address so that the user can take actions on them

Features

  • Intelligent folder prioritisation: Prioritises folders that recur a lot in scans in future scans so that the program becomes less intensive as it does more scans
  • See changes to drive and revert them like github???

storageeye's People

Contributors

pericles-tpt avatar anthonyklepac avatar

Watchers

 avatar

storageeye's Issues

Saving format for directory logs

For C drive should only need to go two levels deep with an exception for the "Users" folder, these are all the "Big" folders on my drive
C:\Users\firstname lastname.. [3]
C:\Program Data.. [2]
C:\Program Files.. (x86) [2]
C:\Program Files.. [2]
C:\Games.. [2]

FORMAT: depth + directory + '|' + size + 'B'
2C:\Program Files\steam|10GB

For other drives (D:, E:, etc) can also go two layers deep unless the user
states otherwise

C:\Windows [2] -> should have different behaviour for this folder i.e. If there
is a remaining capacity delta between old and new log should redirect to windows
in-built system cleanup functionality for the user to rectify

Even though the drive "scan" only goes 2 to 3 levels deep the user can be given
the option to "investigate" a folder which will do a full scan as deep as possible
into the folder and give a readout of the biggest folders and files

For writing folder\files to txt file should compare current directory entries to
"old" dirlog file and if an entry doesn't exist it should be added to both the new
and the old file

ELEMENT STORED IN BUFFER TO WRITE TO FILE E.G. ("3C:\Program Files\Prime 95|25M")
SIZE ~ 1 + 3 + 51 + 50 + 4 = 109 bytes?

0C:|97MB
1C:\Program Files|21GB
2C:\Program Files\vscode|500MB
2C:\Program Files\steam|10GB
2...
2
2
2
...
1C:\Program Files(x86)|30GB
2C:\Program Files(x86)\bigprogram|5GB
2C:\Program Files(x86)\anotherprogram|2GB
1C:\Users|10GB
2C:\Users\firstname lastname|9.5GB
3C:\Users\firstname lastname\atom|100MB

purpose of .pyc files?

There are clones of our main code files in .pyc format, I assume you @pericles-tpt are checking them in with your commits. Do they serve a purpose I don't know? otherwise can we please remove them and exclude them from further commits

File permissions on Mac prevent indexing of certain files and causes build_directory to return an error

We'll likely need to look into the exact folders/files that are causing this error and make an exception for them in the build_directory function when running StorageEye on Mac. Below is a copy of my terminal output when I tried to run StorageEye on my main Mac drive.

Traceback (most recent call last):
File "main.py", line 4, in
import log
File "/Users/periclestelemachou/Dropbox/StorageEye[DEL]/log.py", line 117, in
new_log = build_directory("/Volumes/" + drive)
File "/Users/periclestelemachou/Dropbox/StorageEye[DEL]/main.py", line 20, in build_directory
directory.children.append(build_directory(join(dirpath, childdir)))
File "/Users/periclestelemachou/Dropbox/StorageEye[DEL]/main.py", line 20, in build_directory
directory.children.append(build_directory(join(dirpath, childdir)))
File "/Users/periclestelemachou/Dropbox/StorageEye[DEL]/main.py", line 16, in build_directory
directory.files.append(File(filename, getsize(join(dirpath, filename))))
File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/genericpath.py", line 50, in getsize
return os.stat(filename).st_size

PermissionError: [Errno 13] Permission denied: '/Volumes/Mojave/usr/sbin/weakpass_edit'

Sync changes across machines using the same OS

Enable storage log sharing between devices with the same owner and same OS (may be possible across different OSs to some extent but will probably be more complicated). This would allow for the transfer of updated/new small files through the internet from one machine to another so that both machines are kept up to date. StorageEye could check logs on a machine first to see which directories have become too large, allow the user to remove files to free up space, then check logs across different machines to update files between them.

This feature should also allow for the user to configure which folders to ignore for syncing (in case they want one machine 's files to differ from another) and place restrictions on file transfers over the network (so that you aren't transferring GB at a time).

e.g. Installing an extension in vscode on a Mac laptop and then StorageEye making the same changes to the files on a Mac desktop so that the extension is installed on both machines without having to manually install the extension on the desktop.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.