tarsau: a tiny archiver in C
A simple archiver for Linux/Unix written in C: bundles multiple text files into one .sau archive and extracts them back.
cat README.md
tarsau
Bu proje Linux/Unix ortaminda C dili ile yazilmis basit bir arsivleme programidir.
Sikistirma yapmaz. Birden fazla ASCII metin dosyasini tek bir .sau dosyasinda birlestirir.
Sonra bu arsivi tekrar acip dosyalari geri cikartabilir.
Projenin amaci
- Birden fazla metin dosyasini tek arsivde toplamak
- Ozel bir
.sauformatini uygulamak - Arsivden dosyalari tekrar cikarmak
- Dosya izinlerini korumak
Derleme
Projeyi derlemek icin:
make
Temizlik icin:
make clean
Derleme sonunda calistirilabilir dosya adi:
./tarsau
Kullanim
1. Arsiv olusturma
./tarsau -b t1.txt t2.txt t3.txt -o arsiv.sau
Eger -o verilmezse varsayilan cikti adi:
a.sau
Ornek:
printf 'merhaba\n' > t1.txt
printf 'dunya\n' > t2.txt
./tarsau -b t1.txt t2.txt -o deneme.sau
2. Arsiv acma
Mevcut dizine cikarmak icin:
./tarsau -a deneme.sau
Hedef dizine cikarmak icin:
./tarsau -a deneme.sau cikti_klasoru
Eger hedef dizin yoksa program olusturmaya calisir.
.sau dosya formati
Arsiv su sirayla tutulur:
[ILK 10 BYTE][HEADER][DOSYA1_ICERIK][DOSYA2_ICERIK]...
Ilk 10 byte
Header uzunlugunu ASCII sayi olarak tutar.
Ornek:
0000000030
Header formati
Her kayit su sekildedir:
|dosya_adi,izin,boyut|
Ornek:
|t1.txt,0644,8||t2.txt,0755,9|
Tam gorunum ornegi
0000000030|t1.txt,0644,8||t2.txt,0755,9|
Header bittikten sonra dosya icerikleri arka arkaya gelir. Icerikler arasinda ekstra ayirici yoktur.
Programin yaptigi kontroller
- En fazla 32 giris dosyasi kabul eder
- Toplam giris boyutu 200 MB sinirini gecmemelidir
- Giris dosyalari regular file olmali
- Giris dosyalari ASCII metin olmali
- ASCII disi dosyada su mesaj verilir:
<dosya_adi> giriş dosyasının formatı uyumsuzdur!
- Bozuk veya uygunsuz arsivde su mesaj verilir:
Arşiv dosyası uygunsuz veya bozuk!
Izin koruma
Program arsiv olustururken stat() ile izin bilgisi alir.
Arsiv acarken chmod() ile bu izinleri geri uygular.
Ornek olarak:
064407550600
gibi izinler korunmaya calisilir.
Test ornekleri
Basit arsiv olusturma testi
printf 'abc\n' > a1.txt
printf 'xyz\n' > a2.txt
./tarsau -b a1.txt a2.txt -o test.sau
xxd -g 1 -l 80 test.sau
Arsivden geri acma testi
rm -f a1.txt a2.txt
./tarsau -a test.sau
cat a1.txt
cat a2.txt
Hedef dizine acma testi
rm -rf deneme_klasoru
./tarsau -a test.sau deneme_klasoru
ls -l deneme_klasoru
Izin koruma testi
printf 'ozel\n' > p1.txt
printf 'calis\n' > p2.txt
chmod 600 p1.txt
chmod 755 p2.txt
./tarsau -b p1.txt p2.txt -o perms.sau
rm -rf hedef
rm -f p1.txt p2.txt
./tarsau -a perms.sau hedef
ls -l hedef/p1.txt hedef/p2.txt
ASCII disi dosya testi
printf '\377' > bad.bin
./tarsau -b bad.bin -o bozuk.sau
Dosya yapisi
src/tarsau.c
Makefile
README.md
Not
Bu program sikistirma yapmaz. Amac, ozel bir arsiv formati ile dosyalari birlestirip sonra geri acmaktir.