2020-12-19 01:48:23 +13:00
![com github qarmin czkawka ](https://user-images.githubusercontent.com/41945903/102616149-66490400-4137-11eb-9cd6-813b2b070834.png )
2020-09-27 19:32:44 +13:00
2020-12-24 07:35:30 +13:00
**Czkawka** is written in Rust, simple, fast and easy to use app to remove unnecessary files from your computer.
2020-10-02 03:54:26 +13:00
2020-09-27 19:32:44 +13:00
## Features
2020-10-31 22:29:11 +13:00
- Written in memory safe Rust
2020-12-03 00:01:30 +13:00
- Amazingly fast - due using more or less advanced algorithms and multithreading support
2020-12-08 03:25:44 +13:00
- Free, Open Source without ads
2020-12-24 07:35:30 +13:00
- CLI frontend, very fast to automate tasks
2020-10-13 03:21:19 +13:00
- GUI GTK frontend - uses modern GTK 3 and looks similar to FSlint
2020-12-03 00:01:30 +13:00
- Light/Dark theme match the appearance of the system(Linux only)
2020-10-13 03:21:19 +13:00
- Saving results to a file - allows reading entries found by the tool easily
- Rich search option - allows setting absolute included and excluded directories, set of allowed file extensions or excluded items with * wildcard
2020-12-24 07:35:30 +13:00
- Image previews to get quick view at the compared photos
2020-09-27 19:32:44 +13:00
- Multiple tools to use:
2020-10-13 03:21:19 +13:00
- Duplicates - Finds duplicates basing on size(fast), hash(accurate), first 1MB of hash(moderate)
- Empty Folders - Finds empty folders with the help of advanced algorithm
2020-09-27 19:32:44 +13:00
- Big Files - Finds provided number of the biggest files in given location
- Empty Files - Looks for empty files across disk
2020-09-30 21:06:40 +13:00
- Temporary Files - Allows finding temporary files
2020-11-22 23:03:15 +13:00
- Similar Images - Finds images which are not exactly the same(different resolution, watermarks)
2020-10-31 22:29:11 +13:00
- Zeroed Files - Find files which are filled with zeros(usually corrupted)
2020-11-03 10:47:36 +13:00
- Same Music - Search for music with same artist, album etc.
2020-12-22 06:22:59 +13:00
- Invalid Symbolic Links - Shows symbolic links which points to non-existent files/directories
2020-08-27 06:49:43 +12:00
2020-12-19 01:51:47 +13:00
![Czkawka ](https://user-images.githubusercontent.com/41945903/100857797-69809680-348d-11eb-8382-acdec05fd3b8.gif )
2020-11-22 23:03:15 +13:00
## Requirements
If you are using Windows or Mac binaries, there is no specific requirements.
Same with Appimage on Linux(except having system 18.04+ or similar).
2020-12-24 07:35:30 +13:00
But compiled GUI binaries on Linux or compiling it on your own os require to install this packages:
2020-11-22 23:03:15 +13:00
### Ubuntu/Debian
```
sudo apt install cargo libgtk-dev
```
### Fedora/CentOS
```
sudo yum install cargo gtk3-devel glib2-devel
```
2020-10-02 20:21:27 +13:00
2020-11-22 23:03:15 +13:00
## Usage
2020-10-24 04:50:20 +13:00
### Precompiled binaries
2020-11-22 23:03:15 +13:00
Precompiled binaries are available here - https://github.com/qarmin/czkawka/releases/.
2020-10-13 03:21:19 +13:00
If the app does not run when clicking at a launcher, run it through a terminal.
2020-10-24 04:50:20 +13:00
### Appimage
2020-11-22 23:03:15 +13:00
Appimage files are available in release page - https://github.com/qarmin/czkawka/releases/
2020-10-24 04:50:20 +13:00
2020-12-24 07:35:30 +13:00
For now looks that there is a bug with this format, because it doesn't allow to open two images/files at once.
2020-10-06 09:30:44 +13:00
### Cargo
2020-12-24 07:35:30 +13:00
The easiest method to install Czkawka is to use Cargo command(you must have installed GTK libraries in OS)
2020-10-24 04:50:20 +13:00
```
cargo install czkawka_gui
2020-12-24 07:35:30 +13:00
cargo install czkawka_cli
2020-10-24 04:50:20 +13:00
```
You can update package by typing same command.
2020-12-09 07:41:43 +13:00
### Snap
2020-12-24 07:35:30 +13:00
Snap also are available, but there is no access to
2020-12-09 07:41:43 +13:00
```
sudo snap install czkawka
```
2020-12-16 23:20:42 +13:00
### Flatpak
2020-10-24 04:50:20 +13:00
Maybe someday
2020-11-22 23:03:15 +13:00
2020-10-24 04:50:20 +13:00
### Debian/Ubuntu repository and PPA
2020-11-03 10:47:36 +13:00
Tried to set up it, but for now I have problems described in this issue
2020-10-06 09:30:44 +13:00
2020-10-24 04:50:20 +13:00
https://salsa.debian.org/rust-team/debcargo-conf/-/issues/21
2020-10-06 09:30:44 +13:00
2020-10-24 04:50:20 +13:00
2020-10-31 22:29:11 +13:00
### AUR - Arch Linux Package (unofficial)
2020-10-13 03:21:19 +13:00
Czkawka is also available in Arch Linux's AUR from which it can be easily downloaded and installed on the system.
```
yay -Syu czkawka-git
```
2020-10-06 09:30:44 +13:00
2020-10-24 04:50:20 +13:00
This is unofficial package, so new versions will not be always available.
### Devel versions
Artifacts from each commit you can also download here - https://github.com/qarmin/czkawka/actions
2020-10-02 20:21:27 +13:00
## Compilation
### Requirements
Rust 1.46 - probably lower also works fine(1.40 is needed by GTK)
2020-10-02 08:29:40 +13:00
GTK 3.22 - for GTK backend
2020-09-07 19:06:12 +12:00
2020-09-27 19:32:44 +13:00
2020-10-13 03:21:19 +13:00
For now only Linux (and maybe also macOS) is supported
2020-09-07 19:06:12 +12:00
- Install requirements for GTK
2020-09-02 05:34:39 +12:00
```
apt install -y libgtk-3-dev
```
2020-09-07 19:06:12 +12:00
2020-10-06 09:30:44 +13:00
### Compilation from source
2020-10-13 03:21:19 +13:00
- Download the source
2020-09-02 05:34:39 +12:00
```
2020-09-02 08:48:20 +12:00
git clone https://github.com/qarmin/czkawka.git
2020-09-02 05:34:39 +12:00
cd czkawka
```
2020-10-02 08:29:40 +13:00
- Run GTK GUI
2020-09-02 05:34:39 +12:00
```
cargo run --bin czkawka_gui
```
2020-10-13 03:21:19 +13:00
For Linux-to-Windows cross-building instruction look at the CI.
2020-10-02 08:29:40 +13:00
![GUI GTK ](https://user-images.githubusercontent.com/41945903/94850801-c5945380-0427-11eb-8d4c-af4946ab02d5.png )
2020-09-27 19:32:44 +13:00
- Run CLI(this will print help with a lot of examples)
2020-09-02 08:48:20 +12:00
```
cargo run --bin czkawka_cli
```
2020-09-21 04:53:53 +12:00
![CLI ](https://user-images.githubusercontent.com/41945903/93716816-0bbcfd80-fb72-11ea-8d31-4c87cc2abe6d.png )
2020-09-02 05:34:39 +12:00
2020-10-31 22:29:11 +13:00
## Benchmarks
2020-10-24 04:50:20 +13:00
Since Czkawka is written in Rust and aims to be a faster alternative to FSlint (written in Python), we need to compare the speed of these tools.
2020-11-22 23:03:15 +13:00
I tested it on SSD Disk 256GB GoodRam and i7 4770 CPU.
2020-11-08 21:10:49 +13:00
2020-11-22 23:03:15 +13:00
I prepared a directory and performed a test without any folder exceptions(I removed all directories from FSlint and Czkawka from other tabs than Include Directory) which contained 229868 files which took 203,7 GB and 13708 duplicates files in 9117 groups which took 7.90 GB.
2020-09-07 19:06:12 +12:00
2020-11-03 10:47:36 +13:00
Minimum file size to check I set to 1 KB on all programs
2020-09-07 19:06:12 +12:00
| App| Executing Time |
|:----------:|:-------------:|
2020-11-22 23:03:15 +13:00
| FSlint 2.4.7 (Second Run)| 86s |
| Czkawka 1.4.0 (Second Run) | 12s |
2020-12-09 07:41:43 +13:00
| DupeGuru 4.0.4 (Second Run) | 28s |
2020-10-24 04:50:20 +13:00
2020-09-07 19:06:12 +12:00
2020-10-24 04:50:20 +13:00
I used Mprof for checking memory usage FSlint and Dupeguru, for Czkawka I used Heaptrack.
To not get Dupeguru crash I checked smaller directory with 217986 files and 41883 folders.
2020-09-10 07:32:23 +12:00
2020-10-25 07:44:21 +13:00
| App| Idle Ram | Max Operational Ram Usage | Stabilized after search |
2020-10-02 08:29:40 +13:00
|:----------:|:-------------:|:-------------:|:-------------:|
2020-11-22 23:03:15 +13:00
| FSlint 2.4.7 | 62 MB | 84 MB | 84 MB |
| Czkawka 1.4.0 | 9 MB | 66 MB | 32 MB |
| DupeGuru 4.0.4 | 80 MB | 210 MB | 155 MB |
2020-10-24 04:50:20 +13:00
2020-11-22 23:03:15 +13:00
Similar Images which check 332 files which takes 1,7GB
2020-10-24 04:50:20 +13:00
| App| Scan time |
|:----------:|:-------------:|
2020-12-09 07:41:43 +13:00
| Czkawka 1.4.0 | 58s |
| DupeGuru 4.0.4 | 51s |
2020-10-24 04:50:20 +13:00
2020-11-22 23:03:15 +13:00
Similar Images which check 1421 image files which takes 110,1MB
2020-10-24 04:50:20 +13:00
| App| Scan time |
|:----------:|:-------------:|
2020-12-09 07:41:43 +13:00
| Czkawka 1.4.0 | 25s |
| DupeGuru 4.0.4 | 92s |
2020-10-24 04:50:20 +13:00
So still is a big room for improvements.
## Comparsion other tools
| | Czkawka | FSlint | DupeGuru |
|:----------:|:-------------:|:-----:|:---:|
2020-12-09 07:41:43 +13:00
| Language | Rust| Python | Python/Objective C |
2020-10-24 04:50:20 +13:00
| OS | Linux, Windows, Mac(only CLI) | Linux | Linux, Windows, Mac|
| Framework | GTK 3 (Gtk-rs)| GTK 2 (PyGTK) | Qt 5 (PyQt)/Cocoa |
2020-12-09 07:41:43 +13:00
| Ram Usage | Low | Medium | Very High |
2020-10-24 04:50:20 +13:00
| Duplicate finder | X | X | X |
| Empty files | X | X | |
| Empty folders | X | X | |
| Temporary files | X | X | |
| Big files | X | | |
| Similar images | X | | X |
2020-10-31 22:29:11 +13:00
| Zeroed Files| X | | |
2020-11-22 23:03:15 +13:00
| Music duplicates(tags) | X | | X |
2020-12-22 06:22:59 +13:00
| Invalid symlinks | X | X | |
2020-10-24 04:50:20 +13:00
| Installed packages | | X | |
| Invalid names | | X | |
| Names conflict | | X | |
| Bad ID | | X | |
| Non stripped binaries | | X | |
| Redundant whitespace | | X | |
| Multiple languages(po) | | X | X |
| Project Activity | High | Very Low | High |
2020-10-02 19:58:02 +13:00
## Contributions
Contributions to this repository are welcome.
You can help by creating:
- Bug report - memory leaks, unexpected behavior, crashes
- Feature proposals - proposal to change/add/delete some features
2020-10-13 03:21:19 +13:00
- Pull Requests - implementing a new feature yourself or fixing bugs, but you have to pay attention to code quality. If the change is bigger, then it's a good idea to open a new issue to discuss changes.
2020-12-24 07:35:30 +13:00
- Documentation - There is [insruction ](instructions/Instruction.md ) which you can improve.
2020-10-02 19:58:02 +13:00
2020-10-13 03:21:19 +13:00
The code should be clean and well formatted (Clippy and fmt are required in each PR).
2020-10-02 19:58:02 +13:00
2020-09-30 21:06:40 +13:00
## Name
2020-10-13 03:21:19 +13:00
Czkawka is a Polish word which means _hiccup_ .
2020-12-22 06:22:59 +13:00
I chose this name because I wanted to hear people speaking other languages pronounce it.
2020-10-13 03:21:19 +13:00
This name is not as bad as it seems, because I was also thinking about using words like _żółć_ , _gżegżółka_ or _żołądź_ , but I gave up on these ideas because they contained Polish characters, which would cause difficulty in searching for the project.
2020-09-27 19:32:44 +13:00
2020-10-24 04:50:20 +13:00
At the beginning of the program creation, if the response concerning the name was unanimously negative, I prepared myself for a possible change of the name of the program, but the opinions were extremely mixed.
2020-08-27 06:49:43 +12:00
## License
2020-09-05 09:09:11 +12:00
Code is distributed under MIT license.
2020-09-30 21:06:40 +13:00
2020-12-18 04:56:36 +13:00
Icon is created by [jannuary ](https://github.com/jannuary ) and licensed CC-BY-4.0.
2020-12-22 06:22:59 +13:00
Windows dark theme is used from AdMin repo - https://github.com/nrhodes91/AdMin with MIT license
2020-09-30 21:06:40 +13:00
Program is completely free to use.
2020-10-13 03:21:19 +13:00
"Gratis to uczciwa cena" - "Free is a fair price"