Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

14
DOKUMENTASI TUG PRAKTIKUM SISTEM SEMESTER GASAL 20 [79] Mirroring Rep Mirro Yudistira Yoga Muhammad Fu Alfandi Nurulm FAK IN T GAS BESAR M OPERASI 010 / 2011 pository Server dan Shell untuk or pada BlankOn Linux Disusun oleh: a Aji 113090129 uad 113090131 mukhlis 113090160 Asisten Penguji: KULTAS INFORMATIKA NSTITUT TEKNOLOGI TELKOM BANDUNG 2011 1 Auto

description

Informatics Engineering, Server, Linux, Shell, BlankOn Linux

Transcript of Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

Page 1: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

DOKUMENTASI TUGAS BESAR

PRAKTIKUM SISTEM OPERASI SEMESTER GASAL 2010

[79] Mirroring Repository Server dan Shell untuk Auto

Mirror pada BlankOn Linux

Yudistira Yoga Aji

Muhammad Fuad

Alfandi Nurulmukhlis

FAKULTAS INFORMATIKA INSTITUT TEKNOLOGI TELKOM BANDUNG

DOKUMENTASI TUGAS BESAR

PRAKTIKUM SISTEM OPERASI

SEMESTER GASAL 2010 / 2011

Mirroring Repository Server dan Shell untuk Auto

Mirror pada BlankOn Linux

Disusun oleh:

Yudistira Yoga Aji 113090129

Muhammad Fuad 113090131

Alfandi Nurulmukhlis 113090160

Asisten Penguji:

FAKULTAS INFORMATIKA INSTITUT TEKNOLOGI TELKOM BANDUNG

2011

1

Mirroring Repository Server dan Shell untuk Auto

Page 2: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

2

LEMBAR PENGESAHAN

Tugas Besar dengan judul : Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn

Linux

Telah Disetujui Menjadi

Tugas Besar Praktikum Sistem Operasi

Program S1 Teknik Informatika

Institut Teknologi Telkom

Bandung, 13 Desember 2011

Menyetujui,

Asisten Praktikum Sistem Operasi

Zulkarnain Wahyu

113070049

Page 3: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

3

ABSTRAKSI

Pada umumnya tugas ini dibuat untuk memenuhi tugas besar praktikum sisop

dengan judul “Mirroring Repositoru Server dan Shell untuk Auto Mirror pada BlankOn

Linux”

Repositori lokal dapat dibangun dalam rangka menghemat penggunaan

bandwidth karena proses pengambilan berkas-berkas paket dari mirror hanya perlu

dilakukan satu kali sedangkan selanjutnya cukup mengakses repositori lokal saja.

BlankOn Linux merupakan salah satu distro Linux yang berisikan perangkat

lunak (software) yang dapat digunakan untuk keperluan desktop, laptop, dan

workstation. Dengan dipadukan oleh berbagai pernak-pernik khas indonesia, distro ini

sangat cocok digunakan untuk pengguna komputer di Indonesia.

Shell Script adalah sekumpulan perintah yang disimpan pada sebuah file pada

Sistem Operasi Linux. Ekstensi file dari Shell Script adalah .sh tetapi tanpa menyertakan

ekstensi file tersebut tetap dapat dikenali sebagai Shell Script. Di Sistem Operasi Linux

terdapat banyk pilihan Script Shell yang dapat digunakan tetapi yang menjadi default

dan banyak digunakan adalah Bourne Again Shell (bash). Shell script juga menyediakan

beberapa fitur seperti percabangan, perulangan dan variable layaknya bahasa

pemrograman. Untuk menulis Shell Script dapat menggunakan Editor Teks apa saja

(contoh: nano, vi, gedit). Sebuah Shell Script dieksekusi melalui Command Line Sistem

Operasi.

Keyword : Repositori lokal,BlankOn,Shell Script,Mirroring Repository Server.

Page 4: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

4

DAFTAR ISI

JUDUL.......……………………………………………….…...………...….........…..1

LEMBAR PENGESAHAN ………….......……………………………….…............2

ABSTRAKSI ....………………………………………………………….….............3

DAFTAR ISI………………………………………………………………...............4

BAB I PENDAHULUAN….............……………………..............................………1

1.1 Latar Belakang.............................................……….................5

1.2 Tujuan.….......................………………………….….............5

1.3 Rumusan Masalah …..........…...…………………..................5

1.4 Batasan Masalah ….....…………………………......…..........5

BAB II ISI…..........…………………...........………………………......……….........6

2.1 Analisis dan Desain...............................…………....…….......6

2.1.1 Komponen Sistem...........................................................6

2.1.2 Kelebihan dan Kekurangan Komponen Sistem..............6

2.2 Implementasi dan Pengujian....................... ............................7

2.2.1 Deskripsi Sistem.............................................................7

2.2.2 Implementasi...................................................................7

2.2.3 Pengujian.......................................................................13

2.2.4 Kendala dan Penyelesaian.............................................14

BAB III PENUTUP......................…………………………....……………...15

3.1 Kesimpulan dan Saran..…………….....................................15

3.2 Daftar Pustaka........................................................................15

Page 5: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

5

BAB I

PENDAHULUAN

1.1. Latar Belakang

Ubuntu merupakan sistem operasi yang sangat dinamis, terutama yang berkaitan dengan

update aplikasi-aplikasi yang ter-install. Kita dapat dengan mudah meng-update sistem kita

hanya dengan mengetik dua baris perintah di Terminal yaitu “sudo apt-get update” dan

“sudo apt-get upgrade”. Mirror yang ideal tentu saja perpaduan antara mirror yang cepat

dan mirror yang baik. Lakukan pencarian mirror yang cepat dengan “Software Sources”

kemudian lihat statusnya pada situs di atas apakah “up to date” atau paling tidak “one day

behind”. Sedangkan di indonesia, biasanya menggunakan mirror dari “University of

Indonesia” alias UI yang lumayan cepat dan memiliki status “one day behind” untuk

Ubuntu 11.04 Natty Narwhal (mirror UI melakukan sinkronisasi paling tidak sekali dalam

sehari). Untuk selanjutnya, silakan cari sendiri mirror yang nyaman untuk kalian.

Repositori merupakan tempat penyimpanan aplikasi-aplikasi yang telah diatur

sedemikian rupa dan tersedia untuk dapat kita akses melalui internet. Untuk yang tidak

memiliki akses internet jangan khawatir, karena repository ini tidak hanya dapat diakses

melalui internet saja, melainkan juga menggunakan repository alternatif lewat distribusi

pada media lain seperti DVD, atau kita juga dapat membuat repositroy secara lokal sehingga

apabila suatu saat kita membutuhkanya, tidak perlu repot untuk memasukkan satu per satu

DVD yang diperlukan.

1.2. Tujuan

Repositori adalah portal yang menyimpan aplikasi-aplikasi yang bisa di pakai di

ubuntu. Bisa juga untuk mempercepat download. Dan fungsi mirror seperti :

• Load balancing, karena dengan mirror repositroy, server utama tidak akan

terbebani karena akses tidak hanya melalui satu server saja, melainkan

beberapa server.

• Sharing sumber daya, tidak akan ada sumber daya atau source yang terbuang

percuma karena, begitu ada source yang tidak sedang diakses, maka dapat

diakses oleh mirror ini.

• Memperbesar kemungkinan tersedianya sumber daya atau source, jika suatu

saat ada site yang mati, maka kita bisa mencoba ke site lainya karena antara

satu site dengan site lainya memiliki sifat terdesentralisasi

1.3. Rumusan Masalah

1. Apa fungsi mirror repository ?

2. Apa itu shell untuk auto mirror pada BlankOn Linux ?

3. Bagaimana cara membuat mirror repository dan shell untuk auto mirror pada BlankOn

Linux ?

4. Bagaimana mengimplementasikan mirror repository ?

1.4. Batasan Masalah

1. Tidak boleh memakai .deb harus menggunakan .tar.gz

2. Tidak boleh memakai server xampp, tetapi menggunakan ningx atau apache

3. Downloadnya automatis, jadi aplikasi akan update sendiri

Page 6: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

6

BAB II

ISI

2.1 Analisis dan Desain

2.1.1 Komponen Sistem

Kami menggunakan Sistem Operasi Unix distro Ubuntu Feisty-Fawn. Kami

menggunakan Apache untuk web server dan rsync untuk sinkronisasi antara dua server

(mirroring) antara dua server, dan kami menggunakan dua PC sebagai server dan client.

Crontab juga kami gunakan untu auto mirror penjadwalan pada tubes kami.

2.1.2 Kelebihan dan Kekurangan Komponen system

Kelebihan dari Ubuntu diantaranya :

a. Merupakan Sistem Operasi yang Open Source, maka gratis baik sebagai user

maupun developer.

b. Lebih aman karena virus, trojan ataupun malware sulit hidup di lingkungan

Linux

c. Ubuntu tidak membutuhkan hardware dengan spesifikasi yang tinggi.

d. Ubuntu update akan dilakukan tidak hanya pada sistem operasinya tetapi pada

seluruh aplikasi yang diinstall menggunakan repository.

Kekurangan dari Ubuntu diantaranya :

a. Tidak semudah dan semutakhir suse

b. Tidak sestabil debian dan slackware

c. Apabila terjadi kerusakan, sulit diperbaiki. Sehingga lebih baik dilakukan install

ulang.

d. Untuk menjalankan aplikasi tambahan (hiburan) harus install sendiri, tetapi

aplikasi tersebut tidak familiar seperti aplikasi pada Windows.

Kelebihan dari Apache :

a. Lebih mudah untuk dicari karena sudah populer.

b. Lebih mudah digunakan karena tutorial pemakaianya mudah dicari di mana saja.

c. Fleksibilitas tinggi karena lebih pasti hasilnya.

d. Sudah disediakan di Ubuntu melalui httpd.

Kekurangan Apache diantaranya :

a. Caranya cukup rumit karena ada yang lebih mudah dengan menggunakan

LAMPP/XAMPP.

b. Sering diabaikan oleh user karena proses yang cukup rumit.

Kelebihan dari rsync diantaranya :

a. Installasi lebih mudah karena sudah di support di Ubuntu.

b. Mudah dalam penggunaanya karena rsync sudah populer dan mudah dicari di

mana saja.

c. mendukung penyalinan link, device, owner, grup, dan permisi.

d. Option exclude dan exclude-from serupa dengan GNU tar

Page 7: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

7

e. sebuah mode CVS exclude untuk mengabaikan file-file yang sama yang akan

diabaikan oleh CVS

f. dapat menggunakan sembarang remote shell transparan, termasuk rsh atau ssh

g. tidak membutuhkan root privilege

h. pipelining transfer file untuk meminimalkan biaya latency

i. dukungan bagi server rsync anonymous atau authenticated

Kekurangan dari rsync diantaranya :

a. Lebih mudah dengan menggunakan DVD repo.

b. Tidak bisa di pakai di windows yang merupakan Sistem Operasi yang populer.

2.2 Implementasi dan Pengujian

2.2.1 Deskripsi Sistem

Aplikasi yang kami buat memiliki fungsionalitas utama sebagai berikut :

1. Load balancing, karena dengan mirror repositroy, server utama tidak akan terbebani karena akses tidak hanya melalui satu server saja, melainkan beberapa server.

2. Sharing sumber daya, tidak akan ada sumber daya atau source yang terbuang percuma karena, begitu ada source yang tidak sedang diakses, maka dapat diakses oleh mirror ini.

3. Memperbesar kemungkinan tersedianya sumber daya atau source , jika suatu saat ada site yang mati, maka kita bisa mencoba ke site lainya karena antara satu site dengan site lainya memiliki sifat terdesentralisasi.

4. Mempercepat download. 5. Automatic download. 6. Memudahkan dalam penginstallan aplikasi/software beserta package-package-

nya. 7. Mengurangi lalu lintas data. 8. Mempercepat akses ke situs, karena adanya mirror. 9. Meringankan beban komputer karena akses ke mirror akan lebih ringan.

2.2.2 Implementasi

2.2.2.1 Web Server

Bicara web server, tentu yang diijinkan di tubes kali ini hanya apache dan nginx.

Tapi yang kami gunakan adalah apache php mysql phpmyadmin :

Ketikan perintah :

Page 8: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

8

$sudo apt-get install mysql-server

$sudo apt-get install libapache2-mod-php5

$sudo apt-get install apache2 php5 php5-mysql phpmyadmin

Page 9: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

9

Setelah sudah jalan, sekarang tinggal folder web di /var/www dipindah ke home, dan :

1. Masuk dulu ke folder /var

2. Ketik perintah sudo ln –s /home/alfandi

3. Ubah nama foldernya dengan perintah sudo mv alfandi www

Beres deh nginstall web servernya.

2.2.2.2 Rsync

Bicara Repository Mirror tentu saja bicara hubungan antara PC yaitu server dan

client, dalam hal ini kami menggunakan Rsync (Remote Syncronization) yang akan

menghubungkan kedua PC. Pada bagian ini akan membahas bagaimana melakukan

proses mirroring website dari main server ke client website, ini digunakan untuk

mendistribusikan website dari server ke client, sehingga proses pembuatan website

hanya dilakukan di satu sisi saja yakni server, untuk website pada client cukup dengan

memirrorkan website dari server ke client sehingga website pada main server sama

dengan website pada client. Dengan menggunakan rsync maka proses mirroring tidak

akan mengirim semua data yang ada pada server ke client melainkan hanya data yang

berubah atau data baru saja yang akan dimirrorkan, sehingga proses bisa efisien dan

cepat. Untuk proses keamanan saat mirroring maka digunakanlah ssh yang lebih aman,

sehingga tidak perlu membuka port baru untuk rsync namun hanya perlu membuka port

ssh yakni port 22. Tetapi kita harus memasukan username dan password ketika akan

melakukan ssh, sehingga memerlukan interaksi manusia yang tentu saja akan sedikit

merepotkan. Namun ada cara untuk mengatasi masalah tersebut yakni dengan auto login

pada saat melakukan koneksi ssh dengan menggunakan publik keys. Kita membuat

‘key’ pada client yang kemudian ‘key’ tersebut disimpan pada server, sehingga ketika

client melakukan ssh ke server tidak perlu lagi memasukan password. Persyaratan

sebelum melakukan mirroring yakni ssh pada server haurs terinstall dahulu dan bisa

dijalankan. Jika belum terinstall maka lakukan intalassi pada server dan client

melakukan ssh ke server tidak perlu lagi memasukan password. Persyaratan sebelum

melakukan mirroring yakni ssh pada server harus terinstall dahulu dan bisa dijalankan.

Jika belum terinstall maka lakukan installasi pada server dan client.

1. Install rsync

Langkah pertama yang perlu dilakukan adalah menginstall rsync pada

server dan client.

apt-get install rsync

2. Test rsync

Proses test dilakukan pada client dengan login sebagai root dan menjalankan perintah : rsync -avz -e ssh server.com:/var/www/ /var/www/ maka akan keluar :

The authenticity of host ‘server.com (192.168.0.100)’ can’t be established.

RSA key fingerprint is 32:e5:79:8e:5f:5a:25:a9:f1:0d:ef:be:5b:a6:a6:23. Are you sure you want to continue connecting (yes/no)? ketikan yes Kemudian masukan password root maka proses mirroring akan berlangsung dengan memirrorkan isi folder /var/www/ pada server ke /var/www/ pada client. Untuk memeriksa keberhasilan proses mirror maka dapat diperiksa file pada server dan client jika sama maka proses mirroring telah berhasil.

Page 10: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

10

3. Auto Login ssh

Pada client Jalankan perintah ssh-keygen -t rsa client:~# ssh-keygen -t rsa

Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: ae:cd:84:c8:28:67:fa:29:d8:c5:e8:ce:12:d8:84:ae

client:~# Setiap pertanyaan tekan aja tombol enter, demikian pula dengan pertanyaan

passphrase enter saja(kosong). Disini secara default letak file publik keynya di folder .ssh Salin file id_rsa.pub ke server client:~# scp .ssh/id_rsa.pub root@server:~ root@server’s password: id_rsa.pub 100% 393 0.4KB/s 00:00

Pada server buka file konfigurasi ssh yakni /etc/ssh/sshd_config, pastikan bahwa ada baris yang seperti dibawah ini (yang laen tidak perlu diedit) RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys2 Masih pada server salin id_rsa.pub ke file authorized_key2 cat id_rsa.pub >> .ssh/authorized_keys2

Kembali ke client dan lakukan ssh ke server, jika ssh sudah berjalan tanpa

memasukan password lagi maka auto login ssh anda sudah berjalan.

4. Test rsync

Lakukan kembali test pada client dengan login sebagai root dan

menjalankan perintah :

rsync -avz -e ssh server.com:/var/www/ /var/www/

2.2.2.3 Crontab perintah rsync

Untuk crontab perintah rsync gunakan perintah :

rsync -avz -e ssh server.com:/var/www/ /var/www/

2.2.2.4 Instalasi rsync dengan tar.gz

Rsync adalah adalah sebuah program kecil yang berfungsi hampir sama

dengan rcp, namun memiliki fitur tambahan yang lebih banyak dan

menggunakan protokol rsync remote update untuk mempercepat transfer file

bila file tujuan sudah ada.

Alih-alih membuat sebuah skrip sesi FTP atau berbagai bentuk skrip

transfer file lainnya, rsync hanya menyalinkan perbedaan file-file saja,

mengkompresinya dan mengirimkannya menggunakan ssh jika anda ingin

keamanan.

Rsync dapat diinstal dari RPM atau dari tarball, dalam hal ini kami

menggunakan versi RPM. Setelah mendownloadnya kemudian install :

$sudo rpm –ivh rsync-2.4.6-1.i386.rpm

Sedangkan jika menggunakan tarball, setelah mendownloadnya

silahkan lakukan langkah berikut :

Page 11: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

11

Pindah ke direktori rsync :

Cd rsync-2.4.6

Menjalankan skrip ./configure kemudian build rsync dengan cara :

Make

Jika ingin menginstalasi rsync ke sistem, maka lakukan perintah :

$sudo make install

2.2.2.5 Membuat server rsync

Untuk membuat sebuah server rsync ada dua langkah utama yang harus anda

lakukan pada mesin yang ingin anda jadikan sebagai server rsync :

Menjalankan rsync dalam mode daemon, dengan memberikan perintah rsync --

daemon pada perintah baris.

Menset file konfigurasi /etc/rsyncd.conf

rsyncd.conf adalah sebuah file konfigurasi rsync ketika dijalankan dengan

option --daemon. Saat itulah rsync menjadi rsync server yang listening ke TCP

port 873. File rsyncd.conf mengendalikan otentikasi, akses, pencatatan dan

modul yang tersedia.

Format File Konfigurasi

File konfigurasi ini terdiri dari modul dan parameter. Modul dimulai dengan

nama modul dalam tanda kurung siku dan berlanjut terus hingga awal modul

berikutnya. Modul berisikan parameter dalam bentuk "name = value".

Hanya tanda sama dengan pertama yang signifikan. Whitespace sebelum dan

setelah tanda sama dengan pertama diabaikan.

Baris yang dimulai dengan tanda "#" akan diabaikan.

Nilai yang dapat diberikan mengikuti tanda sama dengan di parameter berupa

string (tidak dibutuhkan quote) atau boolean, yang mungkin dapat diberikan

sebagai yes/no, 0/1, true/false.

Option Global

Parameter pertama dalam file, sebelum header modul, adalah parameter-

parameter global.

motd file

Option "motd file" memungkinkan anda untuk menspesifikasikan "pesan hari

ini" yang akan ditampilkan ke client setiap kali koneksi. Defaultnya adalah tidak

ada file motd.

log file

Page 12: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

12

Option "log file" memberi tahu daemon rsync untuk mencatat pesan-pesan ke

file alih-alih menggunakan syslog.

pid file

Option "pid file" memberitahu daemon rsync untuk mencatat id prosesnya ke

file tersebut.

syslog facility

Option "syslog facility" memungkinkan anda menspesifikasikan nama fasilitas

syslog yang akan digunakan ketika mencatat pesan-pesan ke server rsync. Anda

dapat menggunakan sembarang nama fasilitas syslog standar yang didefinisikan

pada sistem anda. Nama-nama umum tersebut antara lain auth, authpriv, cron,

daemon, ftp, kern, lpr, mail, news, security, syslog, user, uucp, local0, local1,

local2, local3, local4, local5, local6 dan local7. Bakunya adalah daemon.

socket options

Option ini dapat menyediakan beragam kegembiraan bagi orang-orang yang

suka mengotak-atik sistem mereka. Anda dapat menset segala macam option

soket yang mungkin dapat mempercepat transfer atau memperlambatnya.

Silakan baca man page untuk sistem call setsockopt() untuk rincinya. Bakunya

tidak ada option soket khusus yang diset.

Contoh File Konfigurasi

Sebuah contoh file rsyncd.conf sederhana yang memungkinkan rsync anonim ke

sebuah area ftp di /home/ftp adalah sebagai berikut :

[ftp]

path = /home/ftp

comment = ftp export area

Contoh yang lebih kompleks adalah :

uid = nobody

gid = nobody

use chroot = no

max connections = 4

syslog facility = local5

pid file = /etc/rsyncd.pid

Page 13: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

13

[ftp]

path = /var/ftp/pub

comment = whole ftp area (approx 6.1 GB)

[sambaftp]

path = /var/ftp/pub/samba

comment = Samba ftp area (approx 300 MB)

[rsyncftp]

path = /var/ftp/pub/rsync

comment = rsync ftp area (approx 6 MB)

[sambawww]

path = /public_html/samba

comment = Samba WWW pages (approx 240 MB)

[cvs]

path = /data/cvs

comment = CVS repository (requires authentication)

auth users = osamu, lader

secrets file = /etc/rsyncd.secrets

File /etc/rsyncd.secrets akan tampak sebagai berikut :

osamu:mypass

lader:mypass

2.2.3 Pengujian

Dalam pengujian, kami menguji pada auto mirror crontab pada ubuntu dan

pengujian membuka browser untuk mengecek mirror pada client.

2.3 Kendala penyelesaian

Dalam menggunakan rsync, dibutuhkan 2 PC, dan PC tersebut harus kami install

ubuntu, hal tersebut cukup merepotkan kami karena media dan tools yang kami punya cukup

terbatas seperti laptop dengan spec pas-pasan, dan langkah dalam membuat repository dengan

menggunakan rsync karena kami belum familiar.

Page 14: Mirroring Repository Server dan Shell untuk Auto Mirror pada BlankOn Linux

14

BAB III

PENUTUP

j. Kesimpulan

Apache merupakan web server yang dapat membantu kita dalam menggunakan aktifitas

yang berhubungan dengan server. Rsync digunakan untu membuat mirror repository antara

server dan client dan crontab agar penjadwalan auto update.

k. Saran

Agar menggunakan LAMPP supaya lebih mudah, tetapi hal itu merupakan batasan

dalam tugas kami kali ini sehingga kami menggunakan Apache dan rsync untuk repositori

mirror nya.

3.3 Daftar Pustaka

http://awangga.wordpress.com/2008/11/02/membangun-web-server/

http://vanfier.wordpress.com/2007/08/06/mirror-your-web-site-with-rsync/

http://habi3.blogspot.com/2007/05/berbagai-jenis-tutorial-rsync.html

• Pembimbing tubes, serta teman – teman yang sentantiasa membantu kami dalam pengerjaan tubes ini.