Masuk ke shell mesin jauh baru separuh pekerjaan — datanya juga harus berpindah: konfigurasi naik ke server, log turun ke laptop, backup dikirim ke mesin cadangan. SSH sudah menyediakan jalur terenkripsi, dan di atas jalur itu tumbuh beberapa alat dengan karakter berbeda, dari penyalin satu berkas yang sederhana sampai mesin sinkronisasi yang hanya memindahkan beda. Lingkungan latihan kita tidak memiliki klien dan daemon SSH, jadi bentuk perintah jauhnya kita lihat di prosa dan contoh tampilan; tetapi dua pola terpenting — sinkronisasi delta rsync dan streaming tar lewat pipe — bisa kita latih utuh antar folder lokal, karena keduanya berjalan tanpa jaringan sama sekali.

Peta Alat Transfer #

Lima alat menutupi hampir semua kebutuhan pemindahan berkas antar mesin Linux:

AlatGaya kerjaKekuatan utamaKeterbatasan
scpsatu perintah, satu arahsederhana, tersedia di mana-manamenyalin utuh, tanpa lanjut bila putus
rsyncsinkronisasi folderhanya delta, bisa resume, --deletesintaksnya punya jebakan garis miring
sftpsesi interaktifmenjelajah dan salin dua arah dalam satu sesimanual, kurang cocok untuk skrip besar
sshfsmount jarak jauhberkas jauh tampil sebagai folder lokalbutuh FUSE; tiap operasi menanggung latensi jaringan
tar pipestreaming sekali jalantanpa arsip sementara di kedua sisiputus di tengah berarti mengulang dari awal

Pilihan praktisnya mengikuti kebiasaan admin: satu berkas sekali kirim memakai scp; folder yang disinkronkan berulang memakai rsync; menjelajah isi server sambil ambal-letakkan berkas memakai sftp; dan memindahkan pohon direktori besar sekali jalan memakai tar pipe.

scp dan sftp: Klasik dan Interaktif #

scp menyalin berkas dengan sintaks sumber tujuan, dan salah satunya boleh berada di mesin jauh dengan format user@host:path — pembahasan lengkapnya sudah kita lewati di chapter ssh dan scp . Kakaknya yang lebih nyaman untuk pekerjaan banyak berkas adalah sftp: sebuah sesi interaktif di atas koneksi SSH, dengan ls dan cd untuk menjelajah sisi jauh, get untuk mengunduh, put untuk mengunggah, dan quit untuk keluar. Berikut contoh tampilan sesi singkatnya:

console
$ sftp backup
Connected to backup.
sftp> ls
cadangan   log
sftp> cd cadangan
sftp> get laporan-q1.pdf
Fetching /srv/cadangan/laporan-q1.pdf to laporan-q1.pdf
/srv/cadangan/laporan-q1.pdf                    100%  512KB   2.1MB/s   00:00
sftp> put laporan-q2.pdf
Uploading laporan-q2.pdf to /srv/cadangan/laporan-q2.pdf
laporan-q2.pdf                                  100%  498KB   2.3MB/s   00:00
sftp> quit

Kedua alat ini menyalin berkas secara utuh setiap kali dipanggil. Untuk dokumen kecil itu tidak terasa; untuk folder yang berisi ratusan megabyte dan disinkronkan setiap hari, menyalin ulang semua yang tidak berubah adalah pemborosan — dan di situlah rsync masuk.

rsync over SSH: Hanya Pindahkan yang Berbeda #

rsync membandingkan sumber dan tujuan lebih dulu, lalu memindahkan hanya bagian yang berbeda (delta transfer): berkas yang identik dilewati, berkas yang berubah dikirim sepotong-sepotong. Dijalankan lewat SSH, bentuknya rsync -a sumber/ user@host:/jalur/tujuan/ — opsi -a (archive) menjaga permission, timestamp, dan struktur direktori. Materi lengkap delta-transfer milik chapter rsync di section storage; di sini kita fokus pada pola pemakaiannya untuk mesin jauh, dan mekanismenya bisa dilatih utuh antar dua folder lokal:

bash
rm -rf sumber tujuan
mkdir -p sumber/laporan
printf 'laporan penjualan kuartal 1\n' > sumber/laporan/q1.txt
printf 'konfigurasi mesin\n' > sumber/mesin.conf
rsync -a sumber/ tujuan/
printf 'laporan penjualan kuartal 1 revisi\n' > sumber/laporan/q1.txt
printf 'lampiran baru\n' > sumber/laporan/q2.txt
rm sumber/mesin.conf
rsync -a --itemize-changes --delete sumber/ tujuan/
diff -r sumber tujuan && echo "pohon tujuan identik dengan sumber"

Output yang Dihasilkan:

text
*deleting   mesin.conf
>f.s....... laporan/q1.txt
>f+++++++++ laporan/q2.txt
pohon tujuan identik dengan sumber

Mari kita bedah baris demi baris:

  1. Baris 1–5: pohon sumber dibuat — folder laporan dengan satu berkas, plus satu berkas di akar — lalu rsync -a sumber/ tujuan/ menyalin seluruhnya ke folder tujuan untuk pertama kali.
  2. Baris 6–8: simulasi “seminggu berlalu”: q1.txt direvisi, q2.txt baru ditambahkan, mesin.conf dihapus dari sumber.
  3. Baris 9 (rsync -a --itemize-changes --delete): sinkronisasi kedua — persis perintah yang berjalan antar mesin; ganti tujuan/ menjadi budi@server-kantor:/srv/dokumen/ dan keduanya berbicara lewat SSH.
  4. *deleting mesin.conf: itemize menandai penghapusan di tujuan akibat --delete — opsi yang menjadikan tujuan cermin sempurna dari sumber, berkas mati di sumber ikut mati di tujuan.
  5. >f.s.......: berkas q1.txt dikirim ulang karena ukurannya berubah (s); > berarti transfer ke tujuan, f berarti berkas biasa.
  6. >f+++++++++: q2.txt adalah berkas baru — semua tanda plus, isi penuh dikirim.
  7. Baris 10 (diff -r ...): bukti akhir bahwa isi kedua pohon kini identik; tanpa --delete pada baris 9, mesin.conf masih tertinggal di tujuan dan diff akan protes.

Soal bandwidth: opsi -z menyuruh rsync mengompresi data di jalur, dan pilihan itu bergantung medium. Pada tautan WAN yang lambat, -z hampir selalu menang karena yang dikirim jauh lebih sedikit. Pada LAN gigabit, kompresi justru bisa memperlambat karena CPU kompresi menjadi kemacetan sementara jaringannya sendiri lebih cepat dari kecepatan kompresi — ukur dulu sebelum menjadikan -z kebiasaan permanen.

tar Pipe over SSH: Sekali Jalan Tanpa Arsip Sementara #

Pola klasik penggeseran pohon utuh: tar mengemas berkas menjadi satu aliran, aliran itu mengalir lewat pipe, dan tar di sisi terima langsung membongkarnya. Bentuk lengkapnya antar mesin: tar czf - dokumen/ | ssh budi@server-kantor 'tar xzf - -C /srv/arsip/' — tanda - di kedua sisi berarti “baca/tulis ke aliran, bukan ke berkas”, jadi tidak ada berkas .tar.gz sementara yang menumpuk di kedua mesin. Versi lokalnya, dengan -C untuk memilih folder kerja tiap sisi, bisa kita jalankan sungguhan:

bash
rm -rf asal terkirim
mkdir -p asal/dokumen
printf 'catatan rapat bulanan\n' > asal/dokumen/catatan-rapat.txt
printf 'daftar server kantor\n' > asal/dokumen/daftar-server.txt
mkdir -p terkirim
tar czf - -C asal . | tar xzf - -C terkirim
diff -r asal terkirim && echo "pohon tiba utuh di tujuan"

Output yang Dihasilkan:

text
pohon tiba utuh di tujuan
  1. Baris 1–4: pohon asal dibuat berisi satu folder dan dua berkas — pengganti direktori yang ingin kita pindahkan ke server.
  2. Baris 5 (mkdir -p terkirim): sisi penerima disiapkan; di mesin jauh, peran ini dimainkan folder tujuan yang sudah ada.
  3. Baris 6 (tar czf - -C asal .): tar mengarsipkan isi folder asal (titik berarti “mulai dari sini”, -C asal berarti pindah dulu ke folder itu) dan menulis arsip terkompresi z ke stdout, bukan ke berkas.
  4. (| tar xzf - -C terkirim): pipe menyerahkan aliran langsung ke tar kedua yang membongkarnya di folder terkirim — di sinilah ssh host 'tar xzf -' menyisipkan dirinya pada versi jarak jauh, membungkus pipe dengan enkripsi.
  5. Baris 7 (diff -r): pohon asal dan penerima dibandingkan utuh — bukti tidak ada yang hilang di jalan.

Pola ini unggul untuk perpindahan satu arah yang besar karena tar membaca berkas berurutan dan mengalir tanpa menunggu; kelemahannya sekaligus jelas: tidak ada daftar periksa di tengah jalan, sehingga koneksi yang putus harus diulang dari awal. Untuk pemindahan berulang, rsync tetap raja; untuk streaming sekali jalan, tar pipe tetap sulit dikalahkan.

sshfs: Mesin Jauh sebagai Folder Lokal #

Kebalikan dari “kita datang ke berkas” adalah “berkas datang ke kita”. sshfs memakai FUSE (Filesystem in Userspace) untuk memasang direktori jauh sebagai folder lokal: sshfs budi@server-kantor:/srv/dokumen ~/dokumen-jauh membuat isi server muncul di folder home, dan editor, file manager, maupun skrip kita bekerja di atasnya seperti folder biasa. Perintah fusermount -u ~/dokumen-jauh melepas pemasangan itu kembali. Kenyamanannya dibayar latensi: tiap operasi berkas menjadi satu perjalanan pulang-pergi ke server, jadi kompilasi proyek besar di atas sshfs akan terasa menyiksa dibanding rsync sekali jalan.

Transfer berkas menuntaskan urusan teks dan data. Tetapi ada pekerjaan yang tetap butuh tampilan — mengelola mesin dari panel grafis, menjalankan aplikasi desktop di server — dan itu pekerjaan chapter berikutnya.

Referensi lanjut: rsync.samba.org untuk dokumentasi resmi rsync beserta rsync(1) , dan sftp(1) untuk daftar lengkap perintah sesi interaktifnya.