Lompat ke konten utama

Penyusun Perintah rsync

Versi --dry-run keluar lebih dulu, karena itu yang menyelamatkan

Susun perintah rsync beserta SSH, pengecualian, batas laju, dan mode cermin. Versi --dry-run selalu keluar di atas perintah sungguhan, dan akibat garis miring di ujung sumber dijelaskan setiap kali.

Perhatikan garis miring di ujung — outputnya menjelaskan akibatnya.

Selain 22 akan menambah -e.
Kosongkan bila memakai kunci default.

Mode cermin
--delete menghapus file di tujuan yang tidak ada di sumber. Batas penghapusan ada di sebelahnya — isi keduanya bersamaan.
Batalkan bila lebih dari ini.
KB/s
0 = tanpa batas.
Akhiri dengan / untuk folder. Pola tanpa garis miring cocok di mana pun.

Jalankan blok --dry-run lebih dulu, selalu. Ia tidak menyentuh satu file pun, dan ia satu-satunya cara mengetahui bahwa jalur yang Anda tulis benar-benar yang Anda maksud.

Seluruh perhitungan berjalan di browser Anda. Alamat IP, nama interface, dan password yang Anda masukkan tidak pernah dikirim ke server CoreNet.

Yang dihasilkan

Dua perintah, dan urutannya disengaja:

  1. Versi --dry-run — keluar paling atas. Ia tidak menyentuh satu file pun, hanya melaporkan apa yang akan terjadi.
  2. Perintah sungguhan — di bawahnya, setelah Anda membaca output yang pertama.

Ditambah penjelasan yang menyesuaikan diri dengan pilihan Anda: akibat garis miring, mana yang tidak ikut terhapus, dan pilihan mana yang justru memperlambat.

Satu garis miring memindahkan segalanya

Ini kesalahan rsync yang paling sering terjadi, dan yang paling tidak memberi petunjuk.

rsync -a /var/www/app  /backup/        →  /backup/app/
rsync -a /var/www/app/ /backup/        →  /backup/  (isinya langsung)

Perbedaannya satu karakter di ujung sumber. Yang pertama menyalin foldernya; yang kedua menyalin isinya.

Tidak ada pesan error untuk pilihan yang salah, karena keduanya sah. Gejalanya baru terlihat berminggu-minggu kemudian sebagai /backup/app/app/app/ — bertingkat sedalam jumlah kali scriptnya berjalan.

Garis miring di ujung tujuan tidak berpengaruh apa pun. Hanya sumber yang penting.

Tool ini membaca apa yang Anda tulis dan menjelaskan akibatnya dengan jalur Anda sendiri sebagai contoh — bukan dengan contoh umum yang harus Anda terjemahkan lagi.

--delete dan jaring pengaman yang hampir tidak ada yang tahu

--delete menghapus file di tujuan yang tidak ada di sumber. Itu yang membuatnya cermin, dan itu juga yang membuatnya berbahaya: bila jalur sumber salah tulis — atau folder sumber sedang tidak ter-mount — rsync melihat sumber kosong, lalu mengosongkan tujuan dengan patuh.

Obatnya --max-delete:

rsync -a --delete --max-delete=50 sumber/ tujuan/

Bila yang akan dihapus lebih dari 50 file, rsync membatalkan seluruh perjalanan alih-alih melanjutkan. Hampir tidak ada yang memakainya karena jarang disebut, padahal ia satu-satunya jaring pengaman yang bekerja tanpa perlu Anda ingat pada saat yang tepat.

Tool ini mengingatkan bila --delete dinyalakan tanpa --max-delete.

Yang dikecualikan tidak ikut terhapus

Halus, dan sering disalahpahami.

File yang kena --exclude tidak dihapus di tujuan meski --delete aktif. Jadi writable/cache/ di server tujuan tetap utuh walau dikecualikan dari pengiriman — dan itu memang perilaku yang benar untuk hampir semua orang.

Bila yang Anda inginkan justru menghapusnya juga, flagnya --delete-excluded. Tool ini sengaja tidak menyediakannya di formulir: yang membutuhkannya tahu apa yang dicarinya, dan yang tidak tahu sebaiknya tidak menemukannya secara kebetulan.

Isi -a, dan bagian yang gagal diam-diam

-a singkatan dari -rlptgoD: rekursif, ikut link simbolik, pertahankan izin, waktu, grup, pemilik, dan file khusus.

Bagian pemilik hanya berhasil bila rsync dijalankan sebagai root. Sebagai pengguna biasa ia gagal tanpa menghentikan apa pun, dan seluruh file di tujuan menjadi milik Anda. Untuk backup yang kelak dipulihkan ke tempat asalnya, itu berarti izinnya harus dibetulkan ulang — dan hampir selalu baru disadari saat restore.

Kapan -z justru memperlambat

Kompresi masuk akal pada sambungan lambat atau berbayar per data. Pada jaringan lokal gigabit, ia memperlambat: CPU menjadi penghambatnya, bukan jaringannya.

Untuk data yang sudah termampatkan — video, gambar JPEG, arsip .zip atau .gz — kompresi tidak menghemat apa pun sambil tetap memakan CPU di kedua sisi.

Pertanyaan yang sering diajukan

Kenapa --dry-run ditaruh di atas, bukan sebagai catatan? Karena catatan di bawah tidak dibaca. Yang disalin orang adalah baris pertama yang terlihat seperti perintah, dan tool ini memastikan baris itu tidak dapat merusak apa pun.

**Apa arti >f dan *deleting pada output dry-run?** --itemize-changes menandai tiap baris: >f berarti file akan ditulis ke tujuan, *deleting berarti file akan dihapus. Menghitung baris *deleting sebelum menjalankan yang sungguhan adalah kebiasaan yang paling murah.

Bisakah rsync melanjutkan file besar yang terputus? Bisa, itu gunanya -P (gabungan --partial --progress). Tanpa itu, file yang terputus di tengah dibuang dan dimulai dari nol.

Bagaimana menjalankannya terjadwal? Susun perintahnya di sini, lalu jadwalkan dengan Pembaca & Penyusun Jadwal Cron. Pada versi terjadwal, buang -P — output progresnya hanya memenuhi log tanpa ada yang membacanya.

Apakah data saya dikirim ke server? Tidak. Seluruh penyusunan berjalan di browser Anda.