PDA


Tam Sürüm Bilgini Göster : LİNUX İÇİN Dosya Sistemi Yaratılması ve Kontrolü


TurkisH
01-23-2007, 11:36 AM
Dosya Sistemi Yaratılması ve Kontrolü

Bazen MS-DOS altından oluşturulamayan dosya sistemlerini (ext2 gibi) oluşturmak gerekebilir. Linux altında bir dosya sistemini oluştururken aynı zamanda bunu kontrol eden programlar vardır. Bunların en çok kullanılanı, Slackware sürümünde gelen mkfs/'tir.

mkfs ile Linux native (ext2) dosya sistemi oluşturmak için mkfs.ext2 programı kullanılır.





mkfs.ext2

"aygıt" yerine üzerine dosya sistemi kurulacak olan cihazın /dev dizini altındaki düğüm dosyasının ismi yazılır. Blok sayısı yerine, fdisk yazılımından o bölümün kaç blok olduğunu öğrenip bu sayıyı girmelisiniz. Bir blok 1024 bayttan oluşur. Örneğin





# mke2fs /dev/hda3 163829

komutu, /dev/hda3 disk bölümünde ext2 dosya sistemi kurar. Bu komutu kullanmadan önce iyi düşünün, zira burada yeralan tüm dosyalar silinir ve bu hatanın geri dönüşü olmaz. Aşağıdaki komut ile bir disket üzerinde ext2 dosya sistemi kuruluyor.





# mke2fs /dev/fd0 1440

mke2fs ile mkfs.ext2 komutları aynıdır. Benzer şekilde, MS-DOS dosya sistemi yaratmak için mkfs.msdos, minix dosya sistemi yaratmak için mkfs.minix kullanılabilir. Blok sayısı girilmez ise mke2fs bunu otomatik olarak bulacaktır.

Herhangi bir sebepten dolayı diskte bozulma ve veri kaybını en aza indirmek için de yazılımlar vardır. fsck ile dosya sistemi kontrolü yapılabilir. fsck ile ext2, dosfsck (veya fsck.msdos) ile MS-DOS formatlı alanlar kontrol edilir.





linux:~# fsck /dev/hda2Parallelizing fsck version 0.5b (14-Feb-95)e2fsck 0.5b, 14-Feb-95 for EXT2 FS 0.5a, 95/03/19/dev/hda2 is mounted. Do you really want to continue (y/n)? yesPass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary informationFix summary information? yesBlock bitmap differences: -46486 -46487 -46488 -46489 -46490. FIXEDFree blocks count wrong for group 5 (2803, counted=2808). FIXEDFree blocks count wrong (16326, counted=16331). FIXED/dev/hda2: ***** FILE SYSTEM WAS MODIFIED *****/dev/hda2: ***** REBOOT LINUX *****/dev/hda2: 3494/29632 files, 42904/59235 blocks

Bir dosya sistemini kontrol etmeden önce okunan bölümü root dosya sisteminden ayırın ve kontrol işleminden sonra bilgisayarı kapatıp tekrar açın.

debugfs programı, dosya sistemi parametrelerini incelemek için kullanılır. Disk üzerine doğrudan erişım yaptığı için dikkatli kullanmalısınız. ext2fs yardımıyla kurtarılamayan bazı dosyalar (özellikle silinmiş dosyalar) debugfs yardımıyla kurtarılabilir.

4.4 Sembolik Bağlantılar

Bazı durumlarda, bir dosyayı oluşturup bu dosyanın başka bir dosyayı işaret etmesi istenebilir. Genellikle sistem yöneticileri tarafından kullanılan sembolik bağlantı yardımıyla bir dosya veya dizin, bunlara karşılık gelen başka bir dosya veya dizin olarak gösterilir.

Aşağıda bir sembolik bağlantı örneği yeralıyor. Sistem görevlisi, /root dizini altındayken /usr/src/linux dizinine geçmek istiyor. /usr/src/linux dizinine işaret eden bir bağlantı kurmak için ln komutu kullanılır. -s parametresi, bu bağlantının sembolik olacağına işaret eder.





ln -s





linux:~# ls -ltotal 116drwxr-xr-x 2 root root 1024 Feb 14 08:13 kernel-rw-r--r-- 1 root root 115695 Sep 15 1994 lodlin15.zipdrwx------ 2 root root 1024 Jan 7 1980 mail-rw-r--r-- 1 root root 0 Feb 15 08:14 typescriptlinux:~# ln -s /usr/src/linux linuxlinux:~# ls -ltotal 116drwxr-xr-x 2 root root 1024 Feb 14 08:13 kernel-rw-r--r-- 1 root root 115695 Sep 15 1994 lodlin15.zipdrwx------ 2 root root 1024 Jan 7 1980 maillrwxrwxrwx 1 root root 9 Feb 15 08:14 linux -> /usr/src/linux-rw-r--r-- 1 root root 0 Feb 15 08:14 typescript

Bu işlemden sonra kullanıcının /usr/src/linux dizinine geçmesi için cd linux" yazması yetecektir. Sembolik bağlantı dosyasını diğerlerinden ayıran, satırın en solundaki l karakteridir.

4.5 Dosya Arşivleme ve Sıkıştırma

Linux altında dosya arşivlenmesi ve sıkıştırılması neredeyse belirli ve standartlaşmış birkaç komut ile gerçekleştiriliyor. tar komutu yardımıyla istenilen dosyaları arşivleyebilir, bunların üzerine yenilerini ekleyebilir, istediğiniz zaman da tekrar açıp eski haline getirebilirsiniz. GNU gzip komutu ise dosyaların sıkıştırılması (zip) ve sıkıştırılmış dosyaların açılması (unzip) işlemlerini yapabiliyor. Fazla disk alanınız yoksa bu iki komut her zaman yardımınıza koşacaktır.

Dosya Arşivleme

tar (Tape ARchive) programı, bir veya birden fazla dosyayı tek bir forma sokar. Genellikle bir dizin ve bu dizinin altında yer alan tüm alt dizinleri biraraya getirmek için kullanılır. tar, dosyaların üzerinde sıkıştırma işlemini normalde uygulamaz. Fakat tar'ın GNU sürümü (Linux'ta da kullanılan) bu işlemi gzip kullanmadan da yapabiliyor.

tar komutuna bir örnek verelim :





$ tar -cf arsiv.tar tmp/

Bu komut, -c (create archive) parametresi yardımıyla tmp dizini altındaki herşeyi paketleyip arsiv.tar isimli dosyaya yollar. -f parametresi, hangi dosyaya yazılacağını belirtir. İstediğiniz zaman dosyayı tekrar açmak isterseniz :





$ tar -xf arsiv.tar

komutunu kullanın. -x (extract) parametresi, -f ile belirtilen dosyayı açacaktır.

-r opsiyonu ile daha önce yaratılmış bir arşive dosya eklenebilir. Böylece dosyayı açma ve tekrar arşiv oluşturma işleminden kurtulmuş olursunuz.





$ tar -rf arsiv.tar ekleme.txt

Dosyanın içeriğini önceden görebilmek için -t parametresini kullanın ve bu işlemi de alışkanlık haline getirin. Bazı durumlarda arşivlenmiş yazılım, kendine ait bir dizin açmak yerine içerdiği dosyaları bulunduğu yere yazabilir.





tar -tf arsiv.tar

Hangi dosyaların açıldığını ekranda görebilmek için -v parametresini ekleyin:





# tar -zcvf tmp.tgz /tmptar: Removing leading / from absolute path names in the archive.tmp/tmp/tar-errortmp/.X11-unix/tmp/rc.inet1.OLDtmp/networks.OLDtmp/linux/tmp/linux/fss.txttmp/lilo.conftmp/PKGTOOL.REMOVED

Aşağıdaki komut, arşivlenen dosyaları diskete kaydetmeye yarıyor. Bunun için temiz bir disketi yuvasına yerleştirin ve aşağıdaki satırı yazın.





# tar -cf /dev/fd0 tmp/

tmp dizini altındaki herşeyi diskete kaydetmiş olduk. Açmak için bilinen yöntemi kullanırız :





# tar -xf /dev/fd0

Dosya Sıkıştırma ve Açma

Dosya sıkıştırma amacıyla sıkça kullanan iki yazılım vardır : gzip ve compress. Her iki yazılım da Slackware Linux dağıtımında bulunuyor. GNU'nun dağıtımı olan gzip, tar ile birlikte kullanılan ve dosya sıkıştırma ve arşivlemede neredeyse standart haline gelmiş bir program. Bir dosyayı sıkıştırmak için parametre girmeden gzip komutunun ardından dosya ismini yazın.





$ gzip elvis$ ls -al elvis.gz

gzip ile sıkıştırılmış dosyaların sonu .gz ile biter. Bunları açmak için gunzip komutunu kullanın:





$ gunzip elvis.gz

compress ve uncompress de sırayla bir dosyayı sıkıştırmak ve açmak için kullanılır. Aslında Linux'ta uncompress adında bir yazılım yoktur, bu dosya ismi compress dosyasına bağlantılıdır. compress ile sıkıştırılan dosyaların sonu .Z ile biter.





$ ls -al web.html-rw-r--r-- 1 gorkem users 41450 Jan 27 13:40 web.html$ compress web.html$ ls -al web.html.Z-rw-r--r-- 1 gorkem users 18906 Jan 27 13:40 web.html.Z

Yukarıdaki web.html dosyasını sıkıştırdığımızda dosyanın boyutu 41450 bayttan 18906 bayta indi. Açmak için:





$ uncompress web.html.Z

Bir dosyanın uzantısından ne tür bir dosya olduğunu anlayamazsanız file komutu imdadınıza koşar. Linux'ta belirli uzantılı dosyaların başı bilinen bir harf veya harf grubu ile başlar. file komutu dosyanın başındaki karakterleri kontrol ederek ve bunları bir listeyle (/etc/magic) karşılaştırarak dosyanın ne tür olduğunu söyler.





# file tmp.gztmp.tgz: gzip compressed data - deflate method , last modified: Sat Feb 15 08:21:50 1997 os: Unix# file tmp.tar.Ztmp.tar.Z: compressed data 16 bits

Birlikte Kullanım

ftp adreslerinde Linux için yeralan yazılımlar genellikle tar ve gzip, nadiren de tar ve compress ile sıkıştırılıp arşivelenerek saklanırlar. Çünkü tar komutu tek başına arşivi sıkıştırmaz, bu işlem için gzip veya compress kullanılır. Bunların açılabilmesi için tar komutu ve birkaç parametre yeterli olur.





$ ls netscape-4.0.linux-elf.tar.gz

Yukarıdaki dosya önce tar ile arşivlenmiş, ardından gzip ile sıkıştırılmış. Tek adımda bu iki dosyayı açmak için tar dosyasına x ve f parametrelerinin dışında z parametresini de ekleyin :





$ tar -zxf netscape-4.0.linux-elf.tar.gz$ ls netscape-4.0.linux-elf

Eğer dosya sıkıştırılırken compress komutu kullanılmışsa z yerine Z parametresini yazın.





$ ls folder.tar.Z$ tar -Zxf folder.tar.Z$ ls folder

Benzer şekile, bir dosyayı aynı anda hem tar ile arşivlemek, hem de sıkıştırmak istersek c ve f parametreleri dışında compress ile Z, gzip ile z parametrelerini girmek yeterlidir. Aşağıda sırayla gn-gopher dizisinin önce tar ve gzip ile, ardından tar ve compress ile arşivlenmesi görülüyor.





$ lsgn-gopher/ $ tar -zcf gopher.tgz gn-gopher/$ tar -Zcf gopher.tar.Z gn-gopher/

4.6 Dizin Tarama

Linux işletim sistemini ilk kurduğunuz anda, yüzlerce dizin altında binlerce dosyanız olacaktır. find komutu, bu dosyaların arasında tarama yapabilmek için geliştirilmiştir. Bu komutla sadece dosya isimlerine değil, dosyanın sahibi, erişim hakları, son erişim tarihi gibi verilere de ulaşmak mümkündür. find komutunun en sık kullanış şekli şudur :





find -name

dizin-ismi yerine taranacak olan dosyanın bulunduğu dizin ismi yazılır. -name parametresinden sonra ise aranan dosyanın ismini girin. Burada "*" ve "?" gibi joker karakterlerini de kullanabilirsiniz. (Bu gibi özel karakterler hakkında daha geniş bilgi Bash kabuğu konusu altında bulunabilir)

Aşağıda, find komutunun kullanımına ilişkin birkaç örnek yeralıyor.





$ find . -name "*.html" (bulundugunuz dizinden itibaren sonu .html ile biten dosyalari arar)$ find /home/halil -name "screen" (/home/halil dizininden itibaren screen isimli dosyalari arar)

Bu komut, -type d parametresi yardımıyla sadece dizin isimleri arasında arama yapar.





$ find /usr/ -name "linux" -type d

find komutuna bir alternatif olan locate komutu ile dosyalar çok kısa bir sürede taranabiliyor. update komutu, her sabah belirli bir saatte sistemdeki tüm dosya ve dizin isimlerini bir veri tabanına yükler. Daha sonra bu dosyada yeralan belirli bir dosya veya dizin ismini locate ile arayabilirsiniz:





# locate pico/usr/bin/pico/usr/man/man1/pico.1.gz

Yukarıdaki komut ile içinde pico kelimesi geçen dosyaları bulduk.

4.7 mtools MSDOS Arabirimi

Linux altından, MS-DOS formatlı disketlere ulaşmayı kolaylaştıran paketin ismi mtools olarak biliniyor. Bu isim, paketin tüm komutlarının ilk harfinin "m" olmasından kaynaklanmış. Paketle birlikte gelen çeşitli yardımcı programlar sayesinde MS-DOS formatlı diskette yeralan dosyalar listelenebilir, silinebilir, disket formatlanabilir, hatta disketin kimliği değiştirilebilir.

Son çıkan mtools paketi, 2MB formatlı disketleri de tanıyabiliyor. Aşağıda, mtools paketinden çıkan bazı komutlar ve örnek kullanımları gösteriliyor.

mdir : disketin içeriğini görüntüler.





linux:~# mdir a: Volume in drive A is SYSTEM_BT Directory for A:/IO SYS 40566 9-30-93 6:20aMSDOS SYS 38138 9-30-93 6:20aAUTOEXEC BAT 91 3-29-95 10:23aNDD
3-29-95 10:26aCHKLIST MS 81 11-07-96 7:00pVGA_45
3-29-95 10:28aYARDIM
3-29-95 10:17aUTIL
3-29-95 10:17aVIRUS
3-29-95 10:17a 9 File(s) 291328 bytes freelinux:~#

mcopy : Bir dosyayı Linux'tan diskete, disketten Linux'a aktarır.





linux:~# mcopy a:/autoexec.bat .Copying AUTOEXEC.BAT

mdel : DOS dosyasını siler

mformat : Disketi formatlar.

mmd : Disket üzerinde dizin oluşturur.

MSDOS mtools arabirimi aynı zamanda VFAT tipi uzun dosya isimlerini de ekranda gösterebilir. Eğer dosya ismi, tek bir DOS ismi içine sığmıyorsa ve 8+3 kuralını bozuyorsa uygun bir kısa isim yaratılır.

Bunun yanında mtools'un 2 Mb'lık disketleri okuyabilme özelliği de vardır. mtools paketinin konfigürasyon dosyası /etc/mtools.conf'tur. Bu dosyanın kullanımı için mtools(1) man dosyasından yararlanabilirsiniz