Untuk membandingkan folder proyek di Mac Anda dengan salinan di server yang dapat diakses melalui SSH, gunakan rsync dalam mode dry-run. Fitur ini dapat membuat daftar berkas mana saja yang tampak tidak sinkron tanpa mentransfer atau mengubahnya. Untuk perbedaan teks di dalam satu berkas, gunakan diff setelah membawa kedua versi ke Mac. Panduan ini berfokus pada membandingkan direktori proyek lokal dengan direktori jarak jauh; panduan ini tidak berasumsi bahwa kedua salinan tersebut sinkron atau memberi tahu Anda versi mana yang harus dipertahankan.
Periksa koneksi dan jalur terlebih dahulu
Buka Terminal di Mac Anda. Apple mendokumentasikan SSH sebagai salah satu protokol yang dapat digunakan Terminal untuk terhubung ke server jarak jauh; dengan klien baris perintah ssh, Anda juga dapat menjalankan perintah di mesin jarak jauh. Anda akan memerlukan nama server, akun jarak jauh, akses ke direktori proyek, dan autentikasi SSH yang berfungsi. Panduan Terminal Apple dan manual ssh OpenBSD menjelaskan opsi-opsi koneksi ini.
Ganti contoh akun, host, dan nama folder di bawah ini dengan milik Anda sendiri. Mesin jarak jauh harus memiliki rsync yang terpasang dan tersedia untuk akun Anda. rsync --version menampilkan versi lokal; versi jarak jauh dapat diperiksa dengan ssh user@host rsync --version.
ssh user@server.example.com
Jika proses masuk tersebut gagal, selesaikan masalah host, autentikasi, jaringan, atau akses sebelum membandingkan berkas. Kemudian tentukan kedua direktori proyek secara tepat. Dalam contoh ini, /Users/you/Projects/site bersifat lokal dan /srv/projects/site bersifat jarak jauh. Pertahankan garis miring penutup pada setiap jalur direktori untuk membandingkan isi direktori dalam tata letak relatif yang sama. Beri tanda kutip pada jalur yang mengandung spasi.
Pratinjau berkas mana saja yang berbeda
Jalankan perintah ini dari Mac Anda:
rsync -rnic --out-format='%i %n' \
user@server.example.com:/srv/projects/site/ \
/Users/you/Projects/site/
Jalur jarak jauh adalah sumber (source) dan jalur Mac adalah tujuan (destination). Perintah ini menggunakan rekursi (-r), output perubahan terperinci (-i), perbandingan checksum (-c), dan mode dry-run (-n). Dokumentasi Rsync menyatakan bahwa dry-run tidak melakukan perubahan apa pun; output terperinci memberikan daftar ringkas pembaruan yang diusulkan. Dalam arah ini, item yang tercantum berarti sumber jarak jauh berbeda dari, atau hilang di, tujuan lokal. Manual rsync mendokumentasikan dry-run, perubahan terperinci, dan perbandingan checksum.
Mode checksum membaca data berkas di kedua sisi untuk membandingkan konten, sehingga memerlukan waktu lebih lama dan menggunakan lebih banyak I/O disk daripada pemeriksaan cepat default rsync, yang mengandalkan ukuran berkas dan waktu modifikasi. Gunakan -nic saat konten berkas penting meskipun stempel waktu atau ukuran mungkin tidak memperlihatkan adanya perubahan. Untuk proses awal yang lebih cepat, gunakan -rin sebagai gantinya; opsi tersebut melaporkan perubahan yang terdeteksi oleh pemeriksaan cepat rsync dan dapat melewatkan perubahan konten jika ukuran dan waktu modifikasi sama persis. Pratinjau ini tidak menampilkan baris yang berubah di dalam berkas.
Balikkan kedua jalur jika salinan Mac seharusnya diperlakukan sebagai sumber dan salinan jarak jauh sebagai tujuan. Arah ini penting: penanda terperinci rsync mencerminkan apa yang akan diperbaruinya di tujuan. Pertahankan opsi -n saat memeriksa hasil. Hapus opsi tersebut hanya jika Anda memang berniat melakukan transfer; rsync adalah alat penyalinan, bukan penggabungan dua arah (two-way merge).
Membaca isi perbedaan berkas teks
Untuk memeriksa perubahan baris yang sebenarnya, bandingkan dua berkas lokal dengan diff -u. Pertama-tama, salin salah satu versi ke lokasi sementara terpisah menggunakan metode transfer normal yang disetujui, atau gunakan salinan proyek yang sudah Anda miliki secara lokal. Kemudian jalankan:
diff -u \
"/Users/you/Projects/site/config/settings.yml" \
"/Users/you/Desktop/settings-remote.yml"
Output terpadu (unified output) menempatkan konteks sekitar di dekat baris-baris yang diubah. Baris yang diawali dengan tanda - berasal dari berkas pertama; baris yang diawali dengan tanda + berasal dari berkas kedua. diff adalah perbandingan konten, jadi perintah ini tidak akan mentransfer atau menggabungkan suntingan. Untuk seluruh struktur pohon direktori lokal, diff -ru local-folder remote-folder membandingkan berkas yang sesuai secara rekursif, tetapi folder jarak jauh harus terpasang (mounted) atau tersedia sebagai jalur lokal. Manual GNU Diffutils menjelaskan perbandingan direktori rekursif dan output terpadu; opsi perintah macOS dapat bervariasi, jadi periksa man diff di Mac Anda jika ada opsi yang ditolak. Manual GNU Diffutils.
Pahami batasannya sebelum bertindak
Pratinjau rsync yang bersih berarti tidak ada perbedaan yang terdeteksi menggunakan aturan perbandingan dan jalur yang Anda pilih. Ini tidak menampilkan tinjauan berdampingan (side-by-side), tidak menyelesaikan suntingan yang berkonflik, atau menjamin setiap properti sistem berkas identik. Opsi checksum rsync membandingkan konten berkas, sedangkan metadata seperti izin dan stempel waktu bergantung pada opsi yang Anda pilih. Selain itu, pohon berkas dapat berubah setelah pratinjau jika seseorang menyunting salah satu salinan.
Jika sistem jarak jauh tidak menyediakan akses SSH atau rsync, alur kerja ini tidak akan berjalan seperti yang tertulis. Gunakan metode akses yang diizinkan oleh sistem tersebut, buat dua salinan lokal yang dapat diakses, dan bandingkan keduanya dengan diff atau alat perbandingan lain yang sesuai. Jangan menjalankan perintah transfer sebagai pengganti pratinjau kecuali Anda memang menghendaki perilaku pembaruan dari sumber ke tujuannya.
Sumber
Menghubungkan ke server di Terminal di Mac — Dukungan Apple
ssh(1) — Halaman manual OpenBSD — OpenBSD
Halaman manual rsync(1) — Proyek Samba
Membandingkan dan Menggabungkan Berkas — Proyek GNU