Changed a little describtion
This commit is contained in:
parent
2cf5dcd513
commit
465ee66fd3
|
@ -1,5 +1,7 @@
|
||||||
## Version 0.1.3
|
## Version 0.1.3
|
||||||
- Big code refactoring
|
- Big code refactoring - now is a lot of easier create new modules and maintain old ones
|
||||||
|
- Added finding empty files
|
||||||
|
- Added new option to find duplicates by checking hash max 1MB of file
|
||||||
|
|
||||||
## Version 0.1.2 - 26.09.2020r
|
## Version 0.1.2 - 26.09.2020r
|
||||||
- Add basic search empty folders in GTK GUI
|
- Add basic search empty folders in GTK GUI
|
||||||
|
@ -23,7 +25,7 @@
|
||||||
- Saving results to file
|
- Saving results to file
|
||||||
- Print how much data was read by duplicate finder(debug only)
|
- Print how much data was read by duplicate finder(debug only)
|
||||||
- Added Github CI
|
- Added Github CI
|
||||||
- Only debug build prints debug infos
|
- Only debug build prints debug information's
|
||||||
- Clean code
|
- Clean code
|
||||||
- Add basic idea config to misc folder
|
- Add basic idea config to misc folder
|
||||||
|
|
||||||
|
|
75
README.md
75
README.md
|
@ -1,24 +1,20 @@
|
||||||
# Czkawka
|
# Czkawka
|
||||||
Czkawka is simple, fast and easy to use alternative to Fslint, written in Rust.
|
Czkawka is simple, fast and easy to use alternative to Fslint, written in Rust.
|
||||||
It is in very early development, so most of the functions aren't added and doesn't work.
|
This is my first ever project in Rust so probably a lot of things are not being written in the most optimal way.
|
||||||
This is my first ever project in Rust so probably a lot of things are written in the most optimal way.
|
|
||||||
|
|
||||||
## Done
|
## Features
|
||||||
- Rich instruction with examples - CLI(`cargo run --bin czkawka_cli`)
|
- Written in fast and memory safe Rust
|
||||||
- GTK Frontend(Still WIP) - (`cargo run --bin czkawka_gui`)
|
- CLI frontend, very fast and powerful with rich help
|
||||||
- Basic layout
|
- GUI GTK frontend(Still WIP) - use modern GTK 3 and looks similar to FSlint
|
||||||
- Remembering of buttons between different tabs
|
- GUI Orbtk frontend(Very early WIP) - alternative GUI with reduced functionality
|
||||||
- Orbtk Frontend(Still very early WIP) - (`cargo run --bin czkawka_gui_orbtk`)
|
- Saving results to file - allows to easily read entries found by tool
|
||||||
- Saving results to file
|
- Rich search option - allows setting absolute included and excluded directories, set of allowed files extensions or excluded items with * wildcard
|
||||||
- Duplicated file finding
|
- Multiple tools to use:
|
||||||
- Including and excluding directories(absolute paths)
|
- Duplicates - Finds duplicates basing on its size(fast) or hash(accurate)
|
||||||
- Option to remove all except newest, oldest and one oldest or newest
|
- Empty Folders - Finds empty folders with help of advanced algorithm
|
||||||
- Fast(by size) or accurate(by hash) file checking
|
- Big Files - Finds provided number of the biggest files in given location
|
||||||
- Support for * wildcard when excluding files and folders
|
- Empty Files - Looks for empty files across disk
|
||||||
- Checking only selected extensions(default macros like IMAGE, VIDEO, TEXT are available)
|
- Temporary Files - Allows to find files
|
||||||
- Empty folders finding
|
|
||||||
- Advanced empty files finding(finds and remove folders which contains only empty folders)
|
|
||||||
- Option to remove all files
|
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
- Comments - a lot of things should be described
|
- Comments - a lot of things should be described
|
||||||
|
@ -34,7 +30,6 @@ This is my first ever project in Rust so probably a lot of things are written in
|
||||||
- Popups
|
- Popups
|
||||||
- Choosing directories(included, excluded)
|
- Choosing directories(included, excluded)
|
||||||
- Popup with type of deleted records
|
- Popup with type of deleted records
|
||||||
- Add Czkawka name to main window(now is czkawka_gui)
|
|
||||||
- Run in another thread searching to be able to pause
|
- Run in another thread searching to be able to pause
|
||||||
- Orbtk GUI
|
- Orbtk GUI
|
||||||
- Basic selecting included and excluded folders
|
- Basic selecting included and excluded folders
|
||||||
|
@ -42,10 +37,12 @@ This is my first ever project in Rust so probably a lot of things are written in
|
||||||
- Simple buttons to delete
|
- Simple buttons to delete
|
||||||
|
|
||||||
## Usage and requirements
|
## Usage and requirements
|
||||||
Rustc 1.46 works fine(not sure about a minimal version)
|
Rust 1.46 - probably lower also works fine
|
||||||
GTK 3.18 - for GTK backend
|
GTK 3.24 - for GTK backend
|
||||||
|
|
||||||
For now only Linux(and probably also macOS) is supported
|
Precompiled binaries are here(may not work in every Linux distro) - https://github.com/qarmin/czkawka/releases/
|
||||||
|
|
||||||
|
For now only Linux(and maybe also macOS) is supported
|
||||||
|
|
||||||
- Install requirements for GTK
|
- Install requirements for GTK
|
||||||
```
|
```
|
||||||
|
@ -67,28 +64,12 @@ cargo run --bin czkawka_gui
|
||||||
cargo run --bin czkawka_gui_orbtk
|
cargo run --bin czkawka_gui_orbtk
|
||||||
```
|
```
|
||||||
![GUI Orbtk](https://user-images.githubusercontent.com/41945903/92405241-7b27fb80-f135-11ea-9fc4-5ebc2b76b011.png)
|
![GUI Orbtk](https://user-images.githubusercontent.com/41945903/92405241-7b27fb80-f135-11ea-9fc4-5ebc2b76b011.png)
|
||||||
- Run CLI
|
- Run CLI(this will print help with a lot of examples)
|
||||||
```
|
```
|
||||||
cargo run --bin czkawka_cli
|
cargo run --bin czkawka_cli
|
||||||
```
|
```
|
||||||
![CLI](https://user-images.githubusercontent.com/41945903/93716816-0bbcfd80-fb72-11ea-8d31-4c87cc2abe6d.png)
|
![CLI](https://user-images.githubusercontent.com/41945903/93716816-0bbcfd80-fb72-11ea-8d31-4c87cc2abe6d.png)
|
||||||
|
|
||||||
## How it works?
|
|
||||||
### Duplicate Finder
|
|
||||||
The only required parameter for checking duplicates is included folders `-i`. This parameter validates provided folders - which must have absolute path(without ~ and other similar symbols at the beginning), not contains *(wildcard), be dir(not file or symlink), exists. Later same things are done with excluded folders `-e`.
|
|
||||||
|
|
||||||
Next, this included and excluded folders are optimized due to tree structure of file system:
|
|
||||||
- Folders which contains another folders are combined(separately for included and excluded) - `/home/pulpet` and `/home/pulpet/a` are combined to `/home/pulpet`
|
|
||||||
- Included folders which are located inside excluded ones are delete - Included folder `/etc/tomcat/` is deleted because excluded folder is `/etc/`
|
|
||||||
- Non existed directories are being removed
|
|
||||||
- Excluded path which are outside included path are deleted - Excluded path `/etc/` is removed if included path is `/home/`
|
|
||||||
If after optimization there is no included folders, then program ends with non zero value(TODO, this should be handled by returning value).
|
|
||||||
|
|
||||||
Next with provided by user minimal size of checked size `-s`, program checks recursively(TODO should be an option to turn off a recursion) included folders and checks files by sizes and put it files with same sizes to different boxes.
|
|
||||||
Next boxes which contains only one element are removed because files inside are not duplicated.
|
|
||||||
|
|
||||||
Next by default also is checked hash to be sure that files with equal size are identical.
|
|
||||||
|
|
||||||
## Speed
|
## Speed
|
||||||
Since Czkawka is written in Rust and aims to be a faster alternative for written in Python - FSlint we need to compare speed of this two tools.
|
Since Czkawka is written in Rust and aims to be a faster alternative for written in Python - FSlint we need to compare speed of this two tools.
|
||||||
|
|
||||||
|
@ -122,5 +103,21 @@ Empty folder finder
|
||||||
|
|
||||||
Differences should be more visible when using slower processor or faster disk.
|
Differences should be more visible when using slower processor or faster disk.
|
||||||
|
|
||||||
|
## How it works?
|
||||||
|
### Duplicate Finder
|
||||||
|
The only required parameter for checking duplicates is included folders `-i`. This parameter validates provided folders - which must have absolute path(without ~ and other similar symbols at the beginning), not contains *(wildcard), be dir(not file or symlink), exists. Later same things are done with excluded folders `-e`.
|
||||||
|
|
||||||
|
Next, this included and excluded folders are optimized due to tree structure of file system:
|
||||||
|
- Folders which contains another folders are combined(separately for included and excluded) - `/home/pulpet` and `/home/pulpet/a` are combined to `/home/pulpet`
|
||||||
|
- Included folders which are located inside excluded ones are delete - Included folder `/etc/tomcat/` is deleted because excluded folder is `/etc/`
|
||||||
|
- Non existed directories are being removed
|
||||||
|
- Excluded path which are outside included path are deleted - Excluded path `/etc/` is removed if included path is `/home/`
|
||||||
|
If after optimization there is no included folders, then program ends with non zero value(TODO, this should be handled by returning value).
|
||||||
|
|
||||||
|
Next with provided by user minimal size of checked size `-s`, program checks recursively(TODO should be an option to turn off a recursion) included folders and checks files by sizes and put it files with same sizes to different boxes.
|
||||||
|
Next boxes which contains only one element are removed because files inside are not duplicated.
|
||||||
|
|
||||||
|
Next by default also is checked hash to be sure that files with equal size are identical.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
Code is distributed under MIT license.
|
Code is distributed under MIT license.
|
||||||
|
|
|
@ -251,9 +251,11 @@ fn main() {
|
||||||
println!("FATAL ERROR: Parameter -i with set of included files is required.");
|
println!("FATAL ERROR: Parameter -i with set of included files is required.");
|
||||||
process::exit(1);
|
process::exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ArgumentsPair::has_command(&arguments, "-e") {
|
if ArgumentsPair::has_command(&arguments, "-e") {
|
||||||
yf.set_excluded_directory(ArgumentsPair::get_argument(&arguments, "-e", false));
|
yf.set_excluded_directory(ArgumentsPair::get_argument(&arguments, "-e", false));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ArgumentsPair::has_command(&arguments, "-k") {
|
if ArgumentsPair::has_command(&arguments, "-k") {
|
||||||
yf.set_excluded_items(ArgumentsPair::get_argument(&arguments, "-k", false));
|
yf.set_excluded_items(ArgumentsPair::get_argument(&arguments, "-k", false));
|
||||||
}
|
}
|
||||||
|
@ -304,7 +306,6 @@ Usage of Czkawka:
|
||||||
czkawka --help
|
czkawka --help
|
||||||
czkawka
|
czkawka
|
||||||
|
|
||||||
|
|
||||||
--d <-i directory_to_search> [-e exclude_directories = ""] [-k excluded_items = ""] [-s min_size = 1024] [-x allowed_extension = ""] [-l type_of_search = "hash"] [-o] [-f file_to_save = "results.txt"] [-delete = "aeo"] - search for duplicates files
|
--d <-i directory_to_search> [-e exclude_directories = ""] [-k excluded_items = ""] [-s min_size = 1024] [-x allowed_extension = ""] [-l type_of_search = "hash"] [-o] [-f file_to_save = "results.txt"] [-delete = "aeo"] - search for duplicates files
|
||||||
-i directory_to_search - list of directories which should will be searched like /home/rafal
|
-i directory_to_search - list of directories which should will be searched like /home/rafal
|
||||||
-e exclude_directories - list of directories which will be excluded from search.
|
-e exclude_directories - list of directories which will be excluded from search.
|
||||||
|
@ -322,7 +323,6 @@ Usage of Czkawka:
|
||||||
czkawka --d -i "/var/" -k "/var/l*b/,/var/lo*,*tmp"
|
czkawka --d -i "/var/" -k "/var/l*b/,/var/lo*,*tmp"
|
||||||
czkawka --d -i "/etc/" -delete "aeo"
|
czkawka --d -i "/etc/" -delete "aeo"
|
||||||
|
|
||||||
|
|
||||||
--e <-i directory_to_search> [-e exclude_directories = ""] [-o] [-f file_to_save] [-delete] - option to find and delete empty folders
|
--e <-i directory_to_search> [-e exclude_directories = ""] [-o] [-f file_to_save] [-delete] - option to find and delete empty folders
|
||||||
-i directory_to_search - list of directories which should will be searched like /home/rafal
|
-i directory_to_search - list of directories which should will be searched like /home/rafal
|
||||||
-e exclude_directories - list of directories which will be excluded from search.
|
-e exclude_directories - list of directories which will be excluded from search.
|
||||||
|
@ -341,7 +341,15 @@ Usage of Czkawka:
|
||||||
-l number_of_files - number of showed the biggest files.
|
-l number_of_files - number of showed the biggest files.
|
||||||
-x allowed_extension - list of checked extension, e.g. "jpg,mp4" will allow to check "book.jpg" and "car.mp4" but not roman.png. There are also helpful macros which allow to easy use a typcal extension like IMAGE("jpg,kra,gif,png,bmp,tiff,webp,hdr,svg") or TEXT("txt,doc,docx,odt,rtf")
|
-x allowed_extension - list of checked extension, e.g. "jpg,mp4" will allow to check "book.jpg" and "car.mp4" but not roman.png. There are also helpful macros which allow to easy use a typcal extension like IMAGE("jpg,kra,gif,png,bmp,tiff,webp,hdr,svg") or TEXT("txt,doc,docx,odt,rtf")
|
||||||
|
|
||||||
--y <-i directory_to_search> [-e exclude_directories = ""] [-k excluded_items = ""] [-o] [-f file_to_save = "results.txt"] [-delete] - search for duplicates files
|
--y <-i directory_to_search> [-e exclude_directories = ""] [-k excluded_items = ""] [-o] [-f file_to_save = "results.txt"] [-delete] - search and delete empty files
|
||||||
|
-i directory_to_search - list of directories which should will be searched like /home/rafal
|
||||||
|
-e exclude_directories - list of directories which will be excluded from search.
|
||||||
|
-k excluded_items - list of excluded items which contains * wildcard(may be slow)
|
||||||
|
-o - this options prevents from recursive check of folders
|
||||||
|
-f file_to_save - saves results to file
|
||||||
|
-delete - delete found files
|
||||||
|
|
||||||
|
--t <-i directory_to_search> [-e exclude_directories = ""] [-k excluded_items = ""] [-o] [-f file_to_save = "results.txt"] [-delete] - search for temporary files
|
||||||
-i directory_to_search - list of directories which should will be searched like /home/rafal
|
-i directory_to_search - list of directories which should will be searched like /home/rafal
|
||||||
-e exclude_directories - list of directories which will be excluded from search.
|
-e exclude_directories - list of directories which will be excluded from search.
|
||||||
-k excluded_items - list of excluded items which contains * wildcard(may be slow)
|
-k excluded_items - list of excluded items which contains * wildcard(may be slow)
|
||||||
|
|
Loading…
Reference in a new issue