/home/ras0ir

Feed Rss

Çok uzak değil birkaç sene öncesine kadar sanal sunucu maliyetleri 50-60$ dolar arası iken, bugünlerde peynir ekmek fiyatına VPS satılır oldu. (en son aylık 2 dolara falan gördüm o derece). Beş yaşındaki çocuğun facebook hesabı açtığı günümüzde, 5 yaşındaki VPS sahipleri ile karşılaşırsak şaşmamak lazım. Zira etraf sistem yöneticisiyim diyenler ile dolmuş vaziyette, LAMP kurana sistem yöneticisi diyorlarmış günümüzde, ironik.

Sitemle karışık sözlerimden sonra konuma başlayayım. Dropbox ile neyin yedeğini alacaksın ameka, programın herşeyi hazır zaten tıklıyorum yedeğimi atıyorum diyebilirsiniz. Cevabım basit: bunu dropbox’ın grafik arabirimini kullanmadan nasıl yapacağınızı anlatacağım:

Evet yanlış duymadınız, dropbox’ı herhangi bir (genellikle GNOME/nautilus ikilisini) arayüze, yardımcı uygulamaya ihtiyaç duymadan çalıştırmanız mümkün. Bunun için yapmanız gereken işlem de çok basit :)

Her şeyden evvel, dropbox.com‘a gidip kendinize bir Dropbox hesabı açın.
Dropbox dizininizi (ki ev dizini tercih etmenizde fayda var kaybolmamak için) bulunduracağınız dizini seçtikten sonra Dropbox’ı sitesinden indirin.

32 bit işletim sistemi kullanıyorsanız:
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86"

64 bit işletim sistemi kullanıyorsanız:
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86_64"

Daha sonra çektiğiniz arşivi açın:

tar xf dropbox.tar.gz

Bu arada özellikle tar xf kullandım. Sene 2011, her şey değişirken tar da akıllanıyor. Uzantısı ne olursa olsun “xf” ile o arşivi açabilirsiniz.

Arşivi açtıktan sonra, ortada hiç bir şeyin olmadığını farkedeceksiniz, panik yapmayın. Arşivi açtığınız yerde .dropbox-dist ismiyle gizli bir dizin oluşacak. Bu dizine girin ve dropbox daemonu ilk seferliğine çalıştırın:


cd .dropbox-dist
./dropboxd

Uygulama ilk çalıştığında size bir URL verecek. Bu linki kullanarak açmış olduğunuz hesaba, dropbox’ı kayıt etmiş oluyorsunuz.Herhangi bir işlem yapmanıza gerek yok, linke tıkladığınızda, bağlama işlemi otomatik gerçekleşmiş oluyor.

Bağlama işlemi sona erdikten sonra hali hazırda açık olan dropboxd’yi kapatın ve arkaplanda çalışacak şekilde tekrar başlatın.


Ctrl-C
./dropboxd &

Yazıma başlarken VPS’lerden bahsetmiştim, daldan dala atladığımı düşünmeyin, fikri burada bağlayacağım :) . VPS’inize hâlel gelebileceğini düşünerekten, Dropbox kullanarak çok önemli dosyalarınızın (avseq01.dat :p) yedeğini Dropbox’a gönderebilirsiniz.

dropboxd’yi çalıştırdığımızda, ev dizininde Dropbox dizini otomatik oluşturuluyor. Bu dizine atacağınız her şey eşzamanlı dropbox’a gidecektir.

Boyutuna göre, ister tüm kök dizininizi (tamamının yedeğini atmak gereksiz olur. /tmp, /proc, /sys gibi dizinlere ihtiyacınız yok), isterseniz sizin için hayati önem taşıyan dizinlerinizin yedeğini atabilirsiniz. Ayrıca Dropbox üzerindeki file revision history de çok iyi ki bunu bir tehlikeyle karşı karşıya kaldığınızda farkedeceksiniz.

Ben genelde backup için rdiff-backup aracını kullanıyorum, artık yılların alışkanlığı, ssh üzerinden vs. kullanımda çok rahat bir uygulama. Yedeklerimi de rdiff-backup ile atıyorum. (amazon s3 desteği yok, s3 desteği olan bir araç arıyorsanız duplicity’den başkası yalan ;) )

Örnekleyelim:

/tmp, /proc, /mnt, /sys dizinlerini hariç tutacak şekilde yedek alalım:

rdiff-backup --exclude /tmp --exclude /proc --exclude /mnt --exclude /sys / ~/Dropbox/kokyedek

Dropbox dizininizin altına tüm kök dizinin yedeğini almış oluyorsunuz böylece.

rdiff-backup’ın tüm parametrelerine web sitesinden veya man rdiff-backup ile manual dosyasından ulaşabilirsiniz. Yazının devamında basit bir script koydum, o scripti kendinize göre düzenleyip Dropbox’dan faydalı bir iş için yararlanmaya devam edebilirsiniz.

Bu scripti crontab ile 6 saatte bir çalıştırıyorum, 6 saatte bir çalışacak bir cronjobı şöyle yazabilirsiniz: (ilk olarak crontab -e tabii ki)

0 */6 * * * /script/dosyasi

Learn more

Eh günüm vim içerisinde geçince yazıları da vim içerisinden göndermek farz oldu.
Eklentiyi kurmak için bu adrese gidiyorsunuz ya da

git clone https://github.com/vim-scripts/Vimpress.git komutunu veriyorsunuz.

Kullanımı basit; blog.vim’i açıyorsunuz ve xmlrpc.php için gerekli bilgileri giriyorsunuz.
Komutlara gelince:
BlogList: Yazılarınızı listeler.
BlogNew: Yazı oluşturmanızı sağlar.
BlogOpen ID: ID numaralı yazıyı açar.
BlogSend: Yazıyı gönderir.

Not: Yazı gönderirken StrID vermeyin, otomatik atanıyor zaten.

Çok iddialı bir yazı başlığı oldu, farkındayım :) . Aslında neyin ne olduğunu açıklamaktan ziyade pragmatik bir yazı sunacağım sadece.

OpenVZ wiki biraz karışık bir yapıya sahip olsa da (mesela 3 linke tıkladıktan sonra kendinizi başladığınız yerde bulabilirsiniz.) oldukça faydalı bir doküman havuzu. Özellike sistem kaynakları yönetimi ve networking ile ilgili dokümanları mikemmel.

OpenVZ’nin ne olduğuna dair ufak bir tanım da yapalım. OpenVZ işletim sistemi seviyesinde sanallaştırma sunan bir yapıdır. Aslında sanallaştırmadan ziyade *BSD’ler üzerindeki jail yapısının GNU/Linux’daki karşılığıdır diyebiliriz. Şu an GNU/Linux sistemler üzerinde bu yapı OpenVZ ve LxC (linux containers) ile sağlanıyor. Amacı ana sistemden (host) izole edilmiş sistemler çalıştırmak yani.

Eğer bir VPS sahibiyseniz ve size bu VPS’i sunan şirket altyapı olarak OpenVZ kullanıyorsa genelde görmüşsünüzdür X mb garanti RAM ve Y mb’ye kadar kullanılabilir RAM. (256 mb garanti, 512 mb burst)

Peki bu değerler nereden gelmekte, nerede saklanmaktadır? Bunu öğrenmek basit, container içerisinde aşağıdaki komutu verin:

cat /proc/user_beancounters

Çıktısı şuna benzer bir çıktı olacaktır:

Version: 2.5
       uid  resource           held    maxheld    barrier      limit    failcnt
      102:  kmemsize        2918315    4799167   11055923   11377049          0
            lockedpages           0          0        256        256          0
            "privvmpages"       51016      58728     "131072"     131072          0
            shmpages            642      10130      21504      21504          0
            dummy                 0          0          0          0          0
            numproc              23         35        240        240          0
            physpages         34135      39706          0 2147483647          0
            "vmguarpages"          0          0      "98304"      98304          0
            oomguarpages      34135      39706      65536      65536          0
            numtcpsock            8         25        360        360          0
            numflock              1         11        188        206          0
            numpty                1          3         16         16          0
            numsiginfo            0         30        256        256          0
            tcpsndbuf        212952     434296    1720320    2703360          0
            tcprcvbuf        135368     218888    1720320    2703360          0
            othersockbuf       8992      60096    1126080    2097152          0
            dgramrcvbuf           0       4296     262144     262144          0
            numothersock         25         47        360        360          0
            dcachesize       126324     144072    3409920    3624960          0
            numfile             499        682       9312       9312          0
            dummy                 0          0          0          0          0
            dummy                 0          0          0          0          0
            dummy                 0          0          0          0          0
            numiptent            15         15        128        128          0

Tırnak içerisinde belirtilenler sanal makinenize ayırılmış garanti ram (vmguarpages) ve burstable ram (privvmpages) miktarını ifade eder. Bunun gerçek değerini görmek için belirtilen sayıları 4 ile çarpmalısınız. Bu şekilde o makinede ayrılmış garanti ram ve burstable ram değerlerinizi öğrenebilir ve VPS aldığınız yerin hostçu mu yoksa tostçu mu olduğunu görebilirsiniz. Genelde çok az garanti RAM verip çok yüksek burstable RAM veriyorlar, burstable RAM konusunda OpenVZ’de herhangi bir sınır yok, atış serbest yani ;) . Not düşeyim, bu değerler kilobyte değeridir.

Şimdi gelelim hesaplamaya, örneğimizde vmguarpages değeri 98304 ve privvmpages değeri ise 131072. Bu değerleri 4 ile çarptığımızda makinemize ayrılmış ram miktarını görebiliriz.

Garanti ram (vmguarpages) 98304 x 4 = 393216k = 384MB
Burstable ram (privvmpages) 131072 x 4 = 524288k = 512MB

Bu değerlere göre VPS’im 384MB’yi gönül ferahlığıyla kullanabilecek, ana makine boşta olduğunda ve imkanlar dahilinde 512MB’ye kadar RAM kullanılabilecek.

Buraya kadar olan kısımlar aslında VPS sahibini ilgilendiriyordu. Gelelim host makine sahibini ilgilendiren kısma. Yeni bir sanal makine (aslında sanal makine tabiri uymuyor, jail diyelim gelenek bozulmasın) oluşturduktan sonra RAM değerlerini değiştirmek için:

vzctl set CONTAINER_ID --vmguarpages $((256 * ayırmak_istediğiniz_ram_miktarı)) --save
vzctl set CONTAINER_ID --privvmpages $((256 * ayırmak_istediğiniz_ram_miktarı)) --save

formülünü kullanabilirsiniz. Örnekleyecek olursak, container ID’si 101 olan bir makineye 256 mb garanti RAM ve 512 MB burstable RAM tahsis edelim:


vzctl set 101 --vmguarpages $((256 * 256)) --save
vzctl set 101 --privvmpages $((256 * 512)) --save

Eğer sonunda –save parametresi kullanmazsanız, host makine veya container yeniden başlatıldığında RAM değeri eski haline döner. Unutmadan belirtelim, sanal makinenin (yani jailin) kapalı veya açık olması önemli değil, çalışan bir makinenin de anlık RAM değerleri değiştirilebiliyor.

Senelerdir GNU/Linux kullanıyorum; seneler geçmesine rağmen her gün yeni bir şey mutlaka öğreniyorum. Tabii yeri geldiğinde bunları paylaşmak lazım ;) . By yazım görsel araçlardan ziyade konsolla çalışanlara yönelik olacak evvela belirteyim.

Faydalı olacağını düşündüğüm çeşitli komutlar var; her zaman lazım olmaz ama bir köşede durmalı.Evvela dosya ismindeki gereksiz boşluklardan kurtulalım. Kolay kolay sinirlenmeyen bir insan olsam da yeri geldiğinde FUUUUUUUUUUUU çektiğim durumlar oluyor. Bunların başında da isminde boşluk bulunan dosyalar geliyor. Bu dosyaları kullanırken her seferinde “” escape’ini kullanmaktansa bu dosyaların ismini “_” veya “.” kullanarak rahatça işlem yapabiliriz. Genelde müzik albümleri indirdikten sonra (problem müyap?) albüm içerisindeki dosyaların isimlerine baktığımızda boşluğun fazlaca olduğu gerçeğiyle karşılaşıyoruz. Böyle durumlarda aşağıdaki komut ile boşlukları “_” karakterine çevirebilirsiniz.


for i in *' '* ; do mv "$i" "${i// /_}" ; done

Ve bunu akılda tutmak zor olacağından, alias olarak kullanabilirsiniz. Bunun için ~/.bashrc dosyanıza (zsh kullanıyorsanız .zshrc) aşağıdaki gibi şekilde ekleme yapabilirsiniz:
alias bosluksil="for i in *' '* ; do mv "$i" "${i// /_}" ; done"

Bir başka ipucu ise tiling pencere yöneticisi kullananlara gelsin. Ayarlama yaparken kullanacağınız programın kendini ne olarak tanıttığını öğrenmek için:
xprop | grep "WM_WINDOW_ROLE|WM_CLASS"| xmessage -file - -center

Önemli, zira otomatik olarak spesifik workspacelerde çalışacak uygulamaların isimlerini öğrenmeniz ve buna göre yapılandırma yapmanız gerekir. Yeri gelmişken tavsiyede de bulunayım; bir defa yapılandırma yapıp ömür boyu aynı yapılandırmayı kullanabileceğiniz ve doküman bakımından en zengin pencere yöneticisi XMonad ;) .

Diğer bir komuta gelince, işin içine biraz fonksiyon katacağız, fonksiyonlar yeri geldiğinde oldukça işe yarıyor. Mesela elinizde bir yapılandırma dosyası var ve bu dosyaya baktığınızda oldukça fazla comment içerdiğini görüyorsunuz. Commentleri es geçip etkin satırları görmek için ufak bir fonksiyon yazabilirsiniz. Ya da alias olarak da kullanabilirsiniz. Ben fonksiyon olarak kullanmayı tercih ediyorum alışkanlık :)


uncomment() {
sed -e 's/#.*//' -e 's/[ ^I]*$//' -e '/^$/ d' $1
}

uncomment dosyaismi dediğinizde commentli dosyanın etkin satırlarını görmenizi sağlar.

Konsolu seviyorsunuz, açılışta da konsol açılsın istiyorsunuz (eğer öyleyseniz bilin ki soyunuz tükenmek üzere, yeni yetmeler konsol kullananlara nedense deli gözüyle bakıyor artık) ve yemişim KDM’yi, GDM’yi Slim’i diyorsunuz. Öyleyse oldukça basit bir giriş yöneticisi emrinize amade:


if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/tty1 ]]; then
startx
logout
fi

Yukarıdaki satırları .bashrc dosyanıza eklediğinizde tty1′den login olduğunuzda otomatik olarak startx çalışır ve X’de oturumu kapattığınızda sistemden çıkış yaparsınız. Kullanıcı değiştirme gibi bir seçeneği olsa KDM’ye GDM’ye ta$ çıkarırdı yani ;)

Ve son olarak Arch Linux kullanıcılarına yönelik bir komut vereyim. Paketleri sistemde kapladığı alana göre sıralıyor:


paste <(pacman -Q | awk '{ print $1; }' | xargs pacman -Qi | grep 'Size' | awk '{ print $4$5; }') <(pacman -Q | awk '{print $1; }') | sort -n | column -t