Giter Site home page Giter Site logo

rmx's Introduction

RMX

Rewritten alternative rm in Rust

RMX V0.3.0 version

RMX v0.3.0 va v0.2.0 versiyasidagi o'zgarishlar va farqlar.

alt text

RMX v0.3.0 ko'rsatkichlari:

Deleted files: 55853
Total size of deleted files: 108.83 GB
Time taken to delete: 449.652106ms

RMX v0.2.0 ko'rsatkichlari:

Total size of deleted files: 108.83 GB
Deleted files: 55586
Time taken to delete: 1.717631709s

RMX V0.3.0 version

alt text

RMX V0.2.0 version

alt text

alt text

Manuchehr Usmonovning C dasturlash tilida yozilgan rm alternatividan ilhomlangan holda Rust dasturlash tilida qayta yozilgan rm alternativ dasturi.

rmx katta hajmdagi fayllar juda ko'p fayllarni va jildlarni o'chirish uchun Rustda yozilgan CLI dasturidir. Ushbu cli dastur, ayniqsa, tizimingizdan katta miqdordagi keraksiz fayllarni o'chirib tashlash orqali xotirani bo'shatish kerak bo'lganda foydalidir. U samarali ishlash uchun parallel ishlov berishdan foydalanadi va o'chirilgan fayllar soni va hajmi haqida malumot taqdim etadi.

RMX qanday ishlaydi

Asosiysi, rmx - bu jildlar bo'ylab harakatlanadigan, fayllar va sub-directorirelarni o'chiradigan rekursiv fayllarni o'chirish dasturi. U faylni o'chirishni parallellashtirish uchun rayon cratesidan foydalanadi va bu uni katta jildlar uchun samarali qiladi. Shuningdek, u o'chirilgan fayllarning umumiy sonini va hajmini hisoblab chiqadi va o'chirish operatsiyasidan so'ng sizga qisqacha ma'lumot beradi.

Dasturning asosiy funktsiyasi cli argumentlarini o'qiydi, ularning haqiqiyligini tekshiradi va commands modulidagi execute_command funksiyasini chaqiradi. Bu funksiya berilgan buyruqni izohlaydi va tegishli amalni bajaradi.

Foydalanish

Dasturdan foydalnish uchun tizimingizda Rust o'rnatilgan bo'lishi kerak.

Linux MacOs va Unix oilasi uchun o'rnatish

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Arch linux

yay -S rust

Dasturni ishga tushirish uchun loyihani githubdan tizmingizga ko'chirib oling

git clone https://github.com/ismoilovdevml/rmx 
cd rmx
cargo build --release

RMX bilan fayllarni o'chirish

cargo run rmx /faylga/havola/
// namuna
cargo run rmx /home/ismoilovdev/Desktop/test

Kod sturukturasi

Kod bazasi bir nechta modullarga ajratilgan:

main.rs Bu dasturning kirish nuqtasi. U cli argumentlarini tahlil qiladi va kiritilgan ma'lumotlar asosida tegishli buyruq funksiyasini chaqiradi.

lib.rs Ushbu faylda dasturning asosiy funksiyalari, jumladan, berilgan havola(path) ostidagi barcha fayllar va jildlarni rekursiv ravishda oʻchirib tashlaydigan remove_dir_contents funksiyasi mavjud.

commands.rs Ushbu modul berilgan buyruqni talqin qilish va bajarish uchun javobgardir.

args.rs Bu modulda cli argumentlarini tahlil qilish funksiyasi mavjud.

util.rs Ushbu modul baytlarni o'qilishi mumkin bo'lgan formatga aylantirish kabi yordamchi funktsiyalarni o'z ichiga oladi.

Test

Keling dasturni test qilib ko'ramiz.

Buning uchun bizga katta hajmdagi juda ko'p fayllar kerak xo'sh buni qayerdan olamiz. Biz fake fayl genereatsiya qiladigan kod yozamiz shell scriptda

Fake fayl generatsiya qiluvchi kod quyidagicha

#!/bin/bash

echo "Number of files to generate"
read files

echo "Enter file path:"
read path

if [ ! -d "$path" ]; then
  mkdir -p "$path"
fi

for (( i=0; i <= $files; ++i ))
do
 tmpfile=$(mktemp $path/abc-script.XXXXXXXXXXXXXXXXXXXXXXXXXX)
 dd if=/dev/urandom of=$tmpfile bs=1M count=$(expr 1 + $RANDOM % 3) status=progress
done

Ushbu scriptni ishga tushirish uchun quyidagi buyruqlarni ushbu script turgan jildga terminal orqali kirib yozasiz.

chmod +x file-generator.sh
./file-generator

Dastur sizdan qancha fayl yaratishini so'raydi siz kiritasiz masalan 40000-ta.Qancha fayl yaratishni kiritganizdan keyin fayllarni qayerda generatsiya qilishni so'raydi siz havola(path) berasiz. Dastur ishini tugatganidan keyin sizda o'zingiz kiritgan miqdorda fayllar bor buni endi Rustda yozilgan dastur orqali o'chirib ko'ramiz

cargo run rmx /home/ismoilovdev/Desktop/test/

Fake fayllarni genaratsiya qiluvchi dasturning muallifi Manuchehr Usmonov va dasturga o'zgartirishlar kiritildi.

rmx's People

Contributors

ismoilovdevml avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

brabus-mobile

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.