Penggunaan Mirror Local sangat berguna untuk anda yang memiliki beberapa ubuntu server. Dengan mengelola mirror server ubuntu sendiri, maka anda akan dengan mudah melakukan update ataupun instalasi paket ubuntu pada server anda.
Ada dua cara untuk mengelola mirror lokal yaitu :
Menggunakan
Debmirror - Debmirror memungkinkan anda untuk memilih paket (dapper, edgy, edgy-security, etc) yang ingin anda mirror. Cara ini sangat berguna bagi anda yang memiliki kapasitas hardisk yang terbatas.
- Menggunakan rsync - Hal yang menjadi keunggulan dari rsync yaitu seluruh archive files akan disinkronisasikan ke server mirror lokal anda. Oleh karena seluruh files disinkronisasi, maka akan membutuhkan kapasitas hardisk minimal sebesar 800GB.
Pada tulisan ini akan dijelaskan langkah-langkah melakukan rsync archive ubuntu. .
Paket-paket yang diperlukan:
- Server ubuntu dengan kapasitas hardisk minimal 800GB
- Apache
-
- mailx (optional)
Langkah-langkahnya adalahs sebagai berikut
Sediakan ruang kosong hardisk seperlunya
Pada saat tulisan ini dikutip, besar Ubuntu Archive sekitar 680 GB. Besaran ini akan terus bertambah dari waktu ke waktu sesuai dengan perkembangan pada server repository ubuntu itu sendiri.
Besar hardisk yang harus tersedia untuk menampung Ubuntu Archive direkomendasikan minimal sebesar 800GB.
Download Paket yang diperlukan
- rsync dibutuhkan untuk membuat dan mengelola server mirror.
- mailx hanya dibutuhkan bila anda ingin membuat email script yang akan mengirimkan pesan ke email anda bila terjadi masalah.
# apt-get install rsync mailx
Memulai Mirroring Pertama Kali
Karena kita kang mengunduh archive dengan ukuran kurang lebih 600GB, maka akan membutuhkan waktu yang cukup lama.
Buat direktori ubuntu
# mkdir /media/mirror/ubuntu
Sekarang kita sudah memiliki direktori tujuan. jalankan rsync untuk mulai mengunduh. Bandwidth yang digunakan bisa dibuka bebas, atau dapat juga dibatasi.
# rsync -a --bwlimit=10M --progress --delete-after rsync://archive.ubuntu.com/ubuntu /media/mirror/ubuntu
--progress adalah parameter untuk menampilkan progres rsync.
Catatan: Meskipun sudah ditambahkan parameter --progress, rsync membutuhkan waktu agak lama untuk memunculkan progress rsync itu sendiri. Hal ini merupakan sesuatu yang normal mengingat besarnya files yang akan dimirror.
Bandwidth dalam menggunakan rsync diukur dalam Bytes, bukan bits.
Buat script untuk melakukan update secara berkala
sementara menunggu proses rsync berjalan, kita dapat membuat script untuk membuat server mirror tetap update
Perhatian : Jangan menggunakan script atau cron job, sebelum rsync pertama kali selesai dijalankan!
Buka editor ubuntu (vi, pico, or nano) dan simpan kode programnya sebagai /usr/local/bin/ubuntu-mirror-sync.sh
## Mirror Synchronization Script /usr/local/bin/ubuntu-mirror-sync.sh
## Version 1.01 Updated 13 Feb 2007 by Peter Noble
## Point our log file to somewhere and setup our admin email
log=/var/log/mirrorsync.log
adminmail=admin@my.domain
# Set to 0 if you do not want to receive email
sendemail=1
# Subject is the subject of our email
subject="Ubuntu Mirror Sync Finished"
## Setup the server to mirror
remote=rsync://archive.ubuntu.com/ubuntu
## Setup the local directory / Our mirror
local=/media/mirror/ubuntu
## Initialize some other variables
complete="false"
failures=0
status=1
pid=$$
echo "`date +%x-%R` - $pid - Started Ubuntu Mirror Sync" >> $log
while [[ "$complete" != "true" ]]; do
if [[ $failures -gt 0 ]]; then
## Sleep for 5 minutes for sanity's sake
## The most common reason for a failure at this point
## is that the rsync server is handling too many concurrent connections.
sleep 5m
fi
if [[ $1 == "debug" ]]; then
echo "Working on attempt number $failures"
rsync -a --delete-after --progress $remote $local
status=$?
else
rsync -a --delete-after $remote $local >> $log
status=$?
fi
if [[ $status -ne "0" ]]; then
complete="false"
(( failures += 1 ))
else
echo "`date +%x-%R` - $pid - Finished Ubuntu Mirror Sync" >> $log
# Send the email
if [[ -x /usr/bin/mail && "$sendemail" -eq "1" ]]; then
mail -s "$subject" "$adminmail" <<OUTMAIL
Summary of Ubuntu Mirror Synchronization
PID: $pid
Failures: $failures
Finish Time: `date`
Sincerely,
$HOSTNAME
OUTMAIL
fi
complete="true"
fi
done
exit 0
Setelah rsync pertama kali selesai dilakukan, silahkan melanjutkan untuk menjalankan kode yang telah dibuat.
Catatan : Kode yang dubuat menjalankan rsync dengan menambahkan parameter --delete-after sehingga tidak menggangu user yang sedang melakukan updating ke server mirror yang telah ktia buat.
Gunukan Cron untuk Melakukan rsync secara berkala dan otomatis
Official Ubuntu Mirrors merekomendasi untuk melakukan update mirror setiap 6 jam. Tetapi hal ini tidak diwajibkan, kita dapat melakukan update mirror sebanyak satu kali dalam sehari pada waktu tengah malam disaat pengguna internet sudah sepi, sehingga bandwidth dapat terpakai dengan optimal. Berikut perintah untuk membuat Cron
# crontab -e
Masukan baris perintah dibawah ini
15 21 * * * /usr/local/bin/sync-ubuntu-mirror.sh > /dev/null 2> /dev/null
Contoh diatas menunjukan bahwa proses update mirror akan berlangsung setiap malam pada pukul 9.15 PM.
Publikasikan mirror anda pada Apache server
Ini adalah bagian yang cukup mudah. perhatikan perintah dibawah ini.
cd /var/www/
ln /media/mirror/ubuntu -s
perintah diatas akan menghasilkan direktori ubuntu sudah dapat diakses melalui website repository yang kita buat. Contohnya repo.unpatti.ac.id/ubuntu
Update repository Komputer anda
Bila kita ingin menggunakan mirror server yang sudah kita buat, maka ubah sources list apt sebagai berikut :
#nano /etc/apt/sources.list
Setelah itu masukan baris-baris perintah dibawah ini
deb http://repo.unpatti.ac.id/ubuntu/ feisty main restricted
deb-src http://repo.unpatti.ac.id/ubuntu/ feisty main restricted
deb http://repo.unpatti.ac.id/ubuntu/ feisty-updates main restricted
deb-src http://repo.unpatti.ac.id/ubuntu/ feisty-updates main restricted
unutk mencobanya silahkan gunakan perintah dibawah ini
# apt-get update