dosyalarda önemli olan bytelardır.. winrar'ın nasıl yaptıgını %100 bilmemekle beraber benim dedigimi yaparsanız %100 çalışacagına garanti veririm.

Dosya binary modda açarsınız...
toplam kaç byte oldugunu hesaplarsınız. Farzedelim 1000 byte..

1000 byte'ın 5 de birini okuruz ve bir dosyaya yazarız. bu dosyanın adı eski-dosya1.r10 olsun
2. 200 bytelık kısmı eski-dosya2.r10 dosyasına yazarız. bu şekilde devam ederiz....

6. bir dosyada da
ilk olarak kaç parçaya böldügümüzü yazarız.
daha sonra
dosyaların adını yazarız ve ne kadarlık byte tuttuklarını yazarız.. ve hangi aralıklara yazılacagını yazarız.
mesela
eski-dosya0.r10 olsun bunun adı da...
5
eski-dosya1.r10 200 0-199
eski-dosya2.r10 200 200-399
eski-dosya3.r10 200 400-599
eski-dosya4.r10 200 600-799
eski-dosya5.r10 200 800-999

daha sonra eski-dosya.rar'ı oluşturmak için bu dosyalardan anlayan bir program yazarız. Buna eski-dosya0.r10 verdiginde sana eski-dosya.rar oluşturacak şekilde yaparsın.
bu 2. birleştiren programın yapacagı eski-dosya0.r10 daki bilgileri sırasıyla okuyup eski-dosya.rar 'a yazmaktır. bunu da şöyle yapacaksın.. ilk olarak kaç dosyaya böldügünü okuyacak. bakacaksın 5 dosya.. sonra sırayla satırları okuyacaksın. her okudugun satırdaki dosyayı peşpeşe eski-dosya.rar dosyasına yazarsan birleştirilmiş şekilde yeni dosyanı bulacaksın.
Yapacagın programda kullanacagın şeyler. dosya açma dosya yazma.. bunları da binary modda yapacaksın.
Özel bir dille anlatmadım. Çünkü her dilde bu yapılabilir. İstersen php kullan istersen c. zaten sen de algoritmik olarak istemişsin.
Bu şekilde parçalayan ve birleştiren bir program yazabilirsin..
Ben mesela stereo dosyadan mono dosyalar oluşturmuştum buna benzer bir şekille...
wav dosyalarının süresinin kısaltılması da bununla benzer bir işlemdir. Ama yapmanız gereken bir takım işler daha var. Bunları da aklıma geldigi için ekledim...