Log of Debian/Ubuntu packages

I have a plan to do a little research about packages in Debian and/or Ubuntu repositories. For this, I think I need a preferably complete log of packages that coming in and out of the repositories.

A friend of mine pointed me the following two mailing list archives where Debian and Ubuntu seem to be logging the packages.

If somebody knows the other sources, or if the above sources are unsuitable for the purpose I am looking for, please let me know πŸ™‚

Ubuntu Repository: Total Packages and Sizes

Long time ago, I made a chart that shows Ubuntu Repositories’ size over several releases. At that time, there were only 6 releases and 1 release that was still being worked on. Fast forward almost 6 years later, now we have 18 Ubuntu releases, yay! How does that chart look like now?

Well, here we go! I just made some new charts!

Ubuntu Releases - Packages and SIzes

The full charts can be seen atΒ http://fajran.github.io/vis-ubuntu-pkg/

As you can see, the repositories are constantly growing. Ubuntu starts with about 8 GB of packages and now it has more than 50 GB. The number of packages is also growing from just over 12.5 thousands and now it almost three times larger.

How did I count the numbers? I took the package index files (a.k.a. Packages file) and counted the number of packages inside. I also summed the size of each packages to get the size of the repository. The files are from the at-release repository which means I excluded the -updates and -security repositories. The at-release repository is presumably frozen and therefore the size won’t change anymore, where the latest two repositories are for the updates, which by definition are always updated. Well.. except when the release is not supported anymore.

I put all of the codes I wrote and use in my GitHub repository https://github.com/fajran/vis-ubuntu-pkg. Feel free to check, modify, and update it. I release the whole thing as public domain!

Restrukturisasi repositori openSUSE di Kambing

tl;dr Repositori openSUSE di Kambing tidak mengikuti struktur standar yang diberikan oleh openSUSE sehingga akan direstrukturisasi ulang agar mengikuti struktur asli.

Kalau melihat rsync.opensuse.org, openSUSE mengelompokkan repositorinya ke dalam beberapa modul rsync yang mungkin bisa dikelompokkan lagi menjadi hotstuff, updates, full, dan buildservice. Menurut dokumentasi tentang mirror repositori openSUSE, kelompok hotstuff berisi berkas-berkas yang paling sering diminta dan kelompok full berisi apa saja yang ada di download.opensuse.org. Kelompok updates dan buildservice masing-masing berisi paket-paket perbaikan dan berkas-berkas dari openSUSE Build Service.

Kali ini saya hanya akan membahas mengenai isi kelompok hotstuff dan full karena keduanya mungkin yang paling sering banyak dipakai. Isi kelpompok updates sudah termasuk di dalam kedua kelompok tersebut sehingga tidak perlu dibahas secara khusus. Untuk kelompok buildservice, sepertinya isinya tidak terlalu relevan untuk pengguna akhir (cmiiw) jadi tidak akan dibahas juga.

Kembali ke isi repositori. Kalau melihat isi kelompok hotstuff 160GB, kelompok ini hanya berisi repositori untuk openSUSE 11.1 (bukan yang terbaru kan nih?), update untuk 10.3 sampai 11.2, dan sebuah direktori repositories yang sepertinya berisi paket-paket terbaru yang dikelompokkan berdasar kategori tertentu. Berbeda dengan kelompok hotstuff, kelompok full tidak memiliki direktori repositories namun kelompok ini berisi memiliki repositori untuk openSUSE versi 11.0, 11.1, dan 11.3-Milestone1 yang masih dalam masa pengembangan.

Bagi yang ingin melihatnya sendiri, coba jalankan perintah berikut.

$ rsync -av rsync.opensuse.org::opensuse-hotstuff-160gb/ > opensuse-hotstuff-160gb.txt
$ rsync -av rsync.opensuse.org::opensuse-full/ > opensuse-full.txt

Tenang saja, perintah di atas tidak akan menyalin seluruh berkas yang ada melainkan hanya akan mengambil daftar berkas yang ada di dalamnya lalu dimasukkan ke dalam berkas opensuse-hotstuff-160gb.txt dan opensuse-full.txt. Buka kedua berkas tersebut untuk melihat apa yang ada di dalam repositori.

Sekarang coba lihat repositori openSUSE di Kambing.

$ rsync -av kambing.ui.ac.id::kambing/ > kambing.txt

Repositori di Kambing memiliki direktori repositories dan juga repositori untuk openSUSE versi 11.0 sampai 11.3-Milestone1! Kok bisa? padahal kan keduanya seharusnya berada dalam kelompok berbeda (menurut rsync.opensuse.org). Jawabannya adalah karena Kambing menggabungkan kedua kelompok tersebut. Isi opensuse-full yang ditambahkan dengan direktori repositories dari opensuse-hotstuff-160gb. Dengan melakukan hal ini sebenarnya Kambing telah membuat sesuatu yang tidak standar (mencampurkan dua repositori) dan sepertinya tidak baik untuk diteruskan.

Dalam beberapa hari ke depan, Kambing akan tobat melakukan penyimpangan ini dan akan melakukan restrukturisasi ulang repositori openSUSE. Penggabungan dua repositori ini akan dihapuskan dan akan kembali dipecah menjadi dua buah repositori terpisah, sesuai aslinya. Berikut ini struktur baru yang akan dibuat.

Berkas ISO tentu saja juga tidak akan dimasukkan karena memang sengaja dipisahkan di ftp://kambing.ui.ac.id/iso/opensuse/. Isi direktori khusus ISO ini diambil dari opensuse-full dengan mengatur agar hanya berkas ISO yang diambill. Tenang saja, struktur direktori tetap sama seperti aslinya.

Mengunduh seluruh berkas dalam repositori Ubuntu

.. atau Debian .. atau BlankOn. Sama saja πŸ™‚

Untuk menyalin sebuah repositori Debian (maupun turunannya) secara komplit, kita dapat menggunakan aplikasi rsync atau debmirror. Namun bagaimana jika kedua aplikasi tersebut tidak ada? Atau andai akses melalui rsync tidak diperkenankan?

Jawabannya adalah download saja dengan download manager kesukaan Anda!

Tentu saja download manager yang mampu membaca sebuah daftar berkas dalam bentuk URL dan mengunduh seluruh berkas yang terdaftar di sana. Saya biasa menggunakan wget, bagi Anda yang tukang download, pasti Anda tahu harus menggunakan apa πŸ™‚

Namun, bagaimana cara mendapatkan daftar berkas tersebut? Mari kita pelajari caranya.

Dalam repositori Debian dan turunannya, terdapat sebuah berkas yang berperan sebagai daftar isi yang menyimpan seluruh informasi berkas/paket yang ada. Berkas ini bernama Packages dan Anda dapat menemui berkas ini dalam repositori pada direktori berikut.

http://server.repo/ubuntu/dists/[versi]/[komponen]/binary-[arsitektur]/Packages

Contohnya adalah

http://kambing.ui.edu/ubuntu/dists/intrepid/main/binary-i386/Packages

Ganti Packages menjadi Packages.gz kalau ingin mengunduh versi yang terkompresi dengan gzip.

Untuk mencari tahu versi, komponen, maupun arsitektur yang tersedia, buka saja direktori induknya. Nanti akan terlihat versi, komponen, dan arsitektur yang ada pada repositori tersebut. Misalnya untuk mencari tahu komponen yang ada pada Ubuntu Intrepid, Anda dapat membuka http://kambing.ui.edu/ubuntu/dists/intrepid dan melihat isinya. Ada empat buah subdirektori di saya, yaitu main, multiverse, restricted, dan universe.

Setelah mendapatkan berkas Packages, mari kita bongkar isinya untuk mendapatkan daftar berkas.

Berkas Packages adalah sebuah daftar isi paket yang ada dalam sebuah repositori. Setiap paket yang ada akan dituliskan deskripsinya di sana. Mulai dari nama paket, versi, ukuran berkas, lokasi berkas, sampai penjelasan (deskripsi) paket tertulis di sana. Kali ini, informasi yang kita butuhkan adalah lokasi berkas yang ditandai dengan Filename:

Setiap baris yang diawali dengan kata Filename: adalah informasi yang kita perlukan. Silakan gunakan fasilitas dalam teks editor yang Anda gunakan sehingga Anda dapat menghapus semua informasi/baris lain kecuali baris yang diawali dengan Filename:.

Jika sudah, Anda akan mendapatkan ratusan baris seperti contoh di bawah ini.

Filename: pool/main/a/abiword/abiword_2.6.4-4ubuntu4_i386.deb
Filename: pool/main/a/abiword/abiword-common_2.6.4-4ubuntu4_all.deb
...

Yang kita butuhkan adalah nama dan direktori berkas paket. Oleh karena itu, hapuslah kata Filename: pada awal baris dan sisakan nama berkas yang diawali oleh pool/.

Setelah itu, tambahkan alamat dasar repositori di depan nama direktori/berkas yang ada. Dua baris pada contoh di atas akan menjadi seperti berikut.

http://kambing.ui.edu/ubuntu/pool/main/a/abiword/abiword_2.6.4-4ubuntu4_i386.deb
http://kambing.ui.edu/ubuntu/pool/main/a/abiword/abiword-common_2.6.4-4ubuntu4_all.deb

Silakan gunakan repositori kesayangan Anda.

Selanjutnya? siapkan waktu luang dan pita Internet yang lapang untuk mengundung seluruh berkas pada repositori!

Oh iya, jangan lupa untuk mengunduh berkas dari seluruh komponen yang ada sehingga Anda dapat mendapatkan repositori yang lengkap. Untuk Ubuntu, Anda harus mengunduh berkas pada komponen main, universe, multiverse, dan restricted.

Oh iya lagi, cara yang ditulis ini hanya ditujukan jika Anda ingin mengunduh atau setidaknya mendapatkan seluruh nama berkas dalam sebuah repositori. Tidak ditujukan untuk membuat repositori lokal.

Jika Anda ingin membuat repositori lokal, aplikasi download manager yang Anda gunakan harus mampu merekonstruksi ulang direktori-direktori yang ada. Sehingga setiap berkas akan diletakkan pada direktorinya masing-masing sesuai dengan kondisi yang ada pada repositori. Selain itu, unduh juga berkas Packages dan letakkan pada direktori sesuai dengan yang ada pada repositori.

Jika aplikasi download manager Anda dapat melakukannya, maka selamat Anda telah membuat repositori lokal secara manual tanpa bantuan aplikasi khusus!

PS: Saya pernah membuat skrip kecil yang melakukan seluruh hal di atas secara otomatis. Silakan cek di arsip GitHub saya.

Mengecek ukuran dan memilah-milah repositori

Bagi para penyedia mirror, salah satu hal yang mungkin dilakukan sebelum memirror sebuah repositori adalah mencari tahu ukuran repositori. Daripada kehabisan ruang harddisk di tengah2 proses mirroring, lebih baik dicari tahu sebelumnya bukan?

Cara yang biasa saya lakukan adalah dengan menggunakan rsync. Gunakan opsi -avH maka Anda akan mendapatkan daftar berkas beserta ukurannya. Sebagai contoh, mari kita cek ukuran repositori Fedora. Saya akan menggunakan mirror fr2.rpmfind.net karena cukup cepat diakses dari tempat saya.

$ rsync -av fr2.rpmfind.net::linux/fedora/ > lengkap.txt
$ tail -n1 lengkap.txt
total size is 1051301220677  speedup is 35944.42

Dapat dilihat bahwa ukuran repositori Fedora adalah 1051301220677 Byte alias sekitar 1 TeraByte.

Ingin memirror semuanya? ya silakan jika mau. Namun tidak seluruh penyelenggara mirror memiliki harddisk besar dan koneksi cepat untuk mengunduh data sebanyak ikut. Selain itu, jika hanya sebagian kecil dari repositori yang digunakan oleh orang, sebagian besar lainnya hanya akan menyita tempat dan tidak berguna karena jarang atau bahkan tidak pernah digunakan oleh orang.

Untuk itu, isi repositori yang ingin dimirror perlu dipilah-pilah. Buat sebuah berkas yang berisi daftar pola berkas yang tidak akan dimirror (excluded). Silakan baca manual rsync untuk mencari tau cara penulisannya. Sebagai contoh, saya akan menggunakan daftar yang tertulis pada http://pastie.org/350853, yang saya simpan dalam berkas exclude.txt.

$ rsync -av --exclude-from exclude.txt fr2.rpmfind.net::linux/fedora/ > saring.txt
$ tail -n1 saring.txt
total size is 93447289613  speedup is 26148.68

Ukuran repositori Fedora hasil saringan ini telah menyusut cukup banyak. Dari total lengkap sebesar 1TB sekarang hanya berukurang sekitar 100GB. Hemat 90% ruang harddisk untuk data-data yang saya rasa tidak banyak diperlukan orang lagi.

Sekian saja tips dari saya πŸ™‚

Oya, sekalian nanya. Ada berapa banyak orang yang perlu repositori Fedora untuk arsitektur x86_64 (alias amd64)? Kalau filter x86_64 dibuang, inilah yang saya dapatkan.

total size is 199176293997  speedup is 25021.69

Berbeda sekitar 100GB dari saringan sebelumnya yang bertujuan agar paket untuk i386 saja yang lolos saringan. Berapa lama ya donlod 100GB?

Membuat repositori lokal Ubuntu dari DVD Repository

Ada banyak cara membuat repositori lokal dari DVD, coba saja cari di google. Salah dua di antaranya dapat dibaca di wiki ubuntu-id dan wiki telkomspeedy. Saya cuma mau nambahin aja cara yang lain πŸ™‚

Sepanjang yang saya perhatikan, ada dua aliran pembuatan repositori lokal dari dvd ini. Yang pertama adalah cara yang mencoba merekonstruksi ulang repositori asli, yaitu seluruh isi DVD digabungkan menjadi satu kesatuan. Cara yang biasa dilakukan adalah dengan menyalin seluruh isi DVD ke dalam satu buah direktori dan menggabungkan daftar isi repositori (atau mengambil dari repositori asli) yang tertulis dalam berkas Packages. Tutorial pembuatan model ini dapat dilihat pada wiki ubuntu-id.

Aliran kedua adalah pembuatan repositori lokal yang terpisah-pisah sebanyak jumlah DVD yang ada. Misalkan jumlah DVD ada 5 maka akan ada 5 buah direktori yang masing-masing harus dimasukkan ke dalam daftar repositori yang tertulis pada berkas sources.list.

Agar ada sesuatu kontribusi baru dalam cara pembuatan repositori lokal yang akan saya jelaskan ini, saya perlu menceritakan sedikit mengenai sebuah kasus yang mungkin cocok untuk dijawab dengan cara yang akan saya tuliskan ini. Andaikan Anda menyimpan berkas iso dari DVD repository dan Anda juga ingin membuat repositori lokal. Anda tentu saja dapat melakukannya dengan cara yang dijabarkan dalam wiki telkomspeedy. Namun Anda akan mendapati repositori yang tersebar menjadi beberapa bagian. Bagaimana jika Anda ingin mendapatkan repositori utuh namun Anda tidak ingin menyalin isi dari seluruh DVD yang Anda miliki?

Jawabannya adalah dengan cara menggabungkan direktori pool/ dalam DVD yang mengandung berkas-berkas paket. Seluruh direktori tersebut digabungkan menjadi satu direktori sehingga seolah-olah berkas-berkas yang tersebar itu akan berada di bawah satu direktori tertentu. Setelah direktori pool/ “digabungkan”, Anda tentunya perlu menggabungkan daftar isi seperti yang dibahas pada wiki ubuntu-id. Daftar isi ini benar-benar harus digabungkan isinya bukan hanya terlihat menjadi satu seperti isi direktori pool/.

Untuk memperjelas, coba perhatikan diagram berikut ini.

/media/hardy-1/pool/  --+
/media/hardy-2/pool/    |
/media/hardy-3/pool/    +-->  /var/www/ubuntu/pool/
/media/hardy-4/pool/    |
/media/hardy-5/pool/  --+

Lima buah direktori pool/ di bawah /media/hardy-*/ akan “digabung” menjadi satu ke dalam /var/www/ubuntu/pool/.

Setelah itu, daftar isi dalam /var/www/ubuntu/dists/ akan dibuat. Bisa dengan cara menggabungkan bekas Packages yang terpecah atau mengunduh ulang dari repositori asli Ubuntu. Untuk keperluan ini, saya telah membuat skrip sederhana yang akan mengunduh berkas Packages.

Urusan penggabungan direktori dapat dilakukan dengan beberapa cara. Salah duanya adalah dengan menggunakan aufs dan mhddfs. Tutorial penggunaan mhddfs dapat dilihat di blog bang udienz. Kalau saya akan nyoba menggunakan aufs πŸ™‚

Sudah cukup dulu basa-basinya, sekarang mari kita mulai tutorialnya.

  1. Siapkan berkas ISO yang Anda miliki, mount point untuk seluruh berkas ISO tersebut, dan direktori tujuan.

    Katakanlah berkas iso ada di /home/repo/, mount point ada di bawah /media/, dan direktori tujuan adalah /var/www/ubuntu/

  2. Mount seluruh DVD yang ada.

    $ sudo mount -o loop /home/repo/ubuntu-8.04-repository-i386-1_contrib.iso /media/hardy-1
    $ sudo mount -o loop /home/repo/ubuntu-8.04-repository-i386-2_contrib.iso /media/hardy-2
    $ sudo mount -o loop /home/repo/ubuntu-8.04-repository-i386-3_contrib.iso /media/hardy-3
    $ sudo mount -o loop /home/repo/ubuntu-8.04-repository-i386-4_contrib.iso /media/hardy-4
    $ sudo mount -o loop /home/repo/ubuntu-8.04-repository-i386-5_contrib.iso /media/hardy-5
    
  3. “Gabungkan” direktori pool/ dengan aufs. aufs ini adalah sebuah modul di kernel yang berguna untuk menggabungkan sistem berkas. Pada Ubuntu Hardy Heron yang saya gunakan ini, modul tersebut sudah terpasang dan siap digunakan.

    $ sudo mkdir -p /var/www/ubuntu/pool
    $ sudo mount -t aufs 
      -o dirs=/media/hardy-1/pool:/media/hardy-2/pool:/media/hardy-3/pool:/media/hardy-4/pool:/media/hardy-5/pool 
      none /var/www/ubuntu/pool
    

    Dengan demikian, direktori /var/www/ubuntu/pool/ akan berisi gabungan direktori pool/ yang terpisah dalam beberapa DVD.

  4. Untuk berkas daftar isi repositori dari repositori Ubuntu. Anda juga dapat menggabungkan berkas daftar isi yang terpecah namun kali ini saya akan mencontohkan cara yang lain, yaitu dengan mengunduh ulang dari repositori Ubuntu.

    Unduh skrip pengunduh daftar isi.

    $ wget http://github.com/fajran/iseng/raw/master/download-debian-dists/download-dists.sh
    $ chmod +x download-dists.sh
    

    Gunakan skrip tersebut untuk mengunduh daftar isi.

    $ ./download-dists.sh 
        http://kambing.ui.edu/ubuntu/ 
        hardy 
        main,restricted,universe,multiverse 
        i386 
        /var/www/ubuntu/
    

    Skrip tersebut meminta lima buah parameter. Parameter pertama adalah URL dasar sebuah repositori Ubuntu, parameter kedua adalah daftar kode nama rilis, parameter ketiga adalah daftar komponen, parameter keempat adalah daftar arsitektur, dan parameter kelima adalah direktori tujuan. Daftar yang disebut dalam parameter kedua, ketiga, dan keempat dipisahkan oleh sebuah koma.

    Pastikan Anda telah menginstal wget sebelum menjalankan skrip tersebut.

Ya itu saja! Repositori lokal Anda sudah tersedia di /var/www/ubuntu.

Oh iya, saya belum benar-benar mencobanya πŸ˜› namun kira2 caranya seperti itu. Tolong laporkan jika Anda mencoba tutorial di atas πŸ™‚

Kalau Anda jeli, Anda akan melihat kegunaan tambahan dengan menggunakan cara ini. Anda dapat menyediakan berkas ISO DVD repository dan repositori siap akses dengan tetap menghemat penggunaan harddisk! Jika Anda menyediakan repositori dan juga berkas ISO DVD repository, maka Anda sebenarnya telah menyimpan dua buah salinan repositori. Boros bukan?

Anda juga dapat menambahkan direktori yang dapat ditulisi pada harddisk saat membuat direktori gabungan dengan aufs. Dengan demikian, Anda juga dapat menyediakan repostori -updates dan -security yang diperbaharui setiap saat.

Karena repositori utama itu tidak akan berubah lagi isinya, maka sebenarnya Anda dapat menyimpannya dalam media hanya tulis (read only) seperti berkas ISO (termasuk dalam bentuk ISO DVD repository!). Berkas-berkas dalam repositori Ubuntu yang dapat berubah isinya (-updates dan -security) dapat tetap Anda simpan dalam harddisk. Berhubung seluruh pembagian repositori ini menggunakan satu direktori yang sama untuk menyimpan berkas paket (yaitu dalam direktori pool/), maka Anda dapat menggunakan aufs untuk menggabungkan direktori pool/ yang sebenarnya tersebar di beberapa tempat, yaitu harddisk dan berkas ISO.

Bagi yang pusing membaca tulisan saya, mudah2an diagram berikut dapat memperjelas.

/media/repo/ubuntu/pool/   --+
                             |
/media/iso-1/pool/           +--> /var/www/ubuntu/pool/
/media/iso-2/pool/           |
/media/iso-./pool/           |
/media/iso-n/pool/         --+

Isi dari /media/iso-* adalah isi dari berkas ISO yang tentu saja tidak dapat ditulisi. Sedangkan /media/repo/ubuntu/ terletak pada harddisk yang bisa ditulisi. Anda menyimpan repositori utama pada berkas iso yang kemudian dikaitkan ke /media/iso-* dan repositori -updates dan -security, yang isinya terus berubah, Anda simpan dalam harddisk pada /media/repo/ubuntu/.

Sekian saja. Semoga bermanfaat πŸ™‚

Susunan repository, hardlink, dan mirroring

Pada repositori Ubuntu, ada direktori pool/ yang berisi seluruh berkas yang ada, mulai dari berkas paket deb, kode sumber orig.tar.gz, modifikasi tuk membuat paket diff.gz, dan lain-lain. Berkas-berkas ini ditujuk dari daftar isi yang ada pada berkas Packages dan Sources yang ada di bawah direktori dists/. Sebuah berkas, tentu saja bisa ditunjuk oleh lebih dari satu daftar isi, yang melambangkan versi dan arsitektur berbeda. Kalau ada berkas yang dipakai bersama, bisa lebih hemat tempat bukan?

Lain distro, lain pula teknik yang dipakai tuk menyusun repositori. Coba lihat repositori Fedora. Berkas-berkas paket, selain dapat ditemukan di bawah direktori Everything/, dapat juga ditemukan di bawah direktori Fedora/. Kalau dilihat sekilas, banyak duplikasi berkas di sana yang tentu saja kalau tidak diatur dengan baik, hanya membuang kapasitas harddisk. Dengan kata lain, tidak efisien!

Susunan repositori Fedora yang dibuat seperti itu belum tentu tidak memiliki maksud tertentu. Berhubung saya tidak familiar dengan Fedora termasuk repositorinya, saya hanya dapat menduga-duga saja. Total ukuran berkas paket di bawah direktori Fedora/ untuk i386 adalah sekitar 2.9 GB. Sedangkan total ukuran berkas di bawah direktori Everything/ adalah sekitar 12.6 GB. Sungguh perbedaan ukuran yang sangat besar bukan? Saya duga, paket yang ada di bawah direktori Fedora/ adalah paket-paket “pilihan” sedangkan yang ada di bawah direktori Everything/, sesuai namanya, adalah seluruh paket yang ada.

Penyusunan direktori seperti ini sebenarnya mempermudah urusan mirroring. Aplikasi rsync yang dapat digunakan untuk menyalin berkas “mentah-mentah” sudah bisa digunakan untuk membuat mirror sebuah repositori Fedora secara selektif, yaitu hanya repositori untuk versi dan arsitektur tertentu saja. Berbeda dengan menyalin repositori Ubuntu yang harus menggunakan aplikasi tambahan seperti debmirror jika ingin menyalin secara selektif.

Lalu bagaimana caranya agar tetap bisa mengatur susunan repositori seperti Fedora dan tetap bisa menjaga efisiensi penggunaan harddisk seperti Ubuntu? Pembuatan hardlink bisa menjadi jawaban! Dengan menggunakan hardlink, sebuah berkas dapat dibuat “salinannya” di tempat lain tanpa harus mengorbankan kapasitas harddisk karena berkas-berkas tersebut sebenarnya adalah berkas yang sama. Yaaa.. mirip pointer pada bahasa C yang menunjuk ke alamat memori yang sama. Dan, … repositori Fedora menggunakan cara ini! Berkas yang ada di bawah direktori Fedora/ merupakan hardlink ke berkas yang ada di bawah direktori Everything/ (atau sebaliknya? ah sama saja πŸ™‚

Nah.. bagi para pemelihara mirror yang menggunakan rsync, untungnya rsync cukup cerdas untuk membaca informasi link ini. Berkas berbeda yang sebenarnya sama karena penggunaan hardlink ini dapat dideteksi sehingga sang mirror tidak perlu menyalin berkas yang sama lebih dari satu kali dan rsync akan membuatkan hardlink-nya secara otomatis. Hemat bandwidth, hemat waktu, dan tentu saja hemat tempat!

Caranya cukup dengan menambahkan opsi -H pada saat menjalankan rsync.

$ rsync -avH server::modul/ /tujuan/

Sekian dulu, nanti terlalu panjang =P