SSHFS nyaman, tetapi tidak cocok dengan rsync atau lebih umum dengan alat sinkronisasi.
Masalah terbesar adalah bahwa SSHFS sebagian besar membunuh optimasi kinerja rsync. Khususnya, untuk file menengah ke besar, ketika rsync melihat bahwa file telah dimodifikasi, ia menghitung checksum pada bagian-bagian file di setiap sisi untuk mentransfer hanya bagian-bagian yang telah dimodifikasi. Ini adalah optimasi hanya jika bandwidth jaringan secara signifikan lebih kecil dari bandwidth disk, yang biasanya terjadi. Tetapi dengan SSHFS, bandwidth "disk" sebenarnya adalah bandwidth jaringan, jadi rsync harus membaca seluruh file untuk menentukan apa yang akan disalin. Bahkan, dengan salinan lokal (yang terkait dengan rsync, bahkan jika salah satu sisi menggunakan SSHFS), rsync hanya menyalin seluruh file.
SSHFS juga merusak kinerja jika ada banyak file kecil. Rsync perlu memeriksa setidaknya metadata setiap file untuk menentukan apakah sudah dimodifikasi. Dengan SSHFS, ini membutuhkan perjalanan pulang-pergi jaringan untuk setiap file. Dengan rsync atas SSH, kedua belah pihak dapat bekerja secara paralel dan mentransfer informasi secara massal, yang jauh lebih cepat.
Dalam hal pembatasan akses, SSHFS memerlukan akses SFTP, sedangkan rsync membutuhkan kemampuan untuk menjalankan kode (khususnya, program rsync) melalui shell. Jika pengguna tidak memiliki akun shell, Adalah mungkin dan umum untuk memberikan akun dengan shell khusus yang hanya memungkinkan menjalankan beberapa program termasuk sftp-server
dan rsync
. Lihat Apakah Anda membutuhkan shell untuk SCP?
Jika Anda hanya menyalin file baru dan tidak ada jumlah file yang sangat besar, tidak ada perbedaan kinerja yang berarti.
SSHFS membuat koneksi SSH ketika sistem file di-mount dan mempertahankan koneksi itu sampai tidak di-mount. Rsync membuat koneksi baru setiap kali Anda menjalankannya, tetapi Anda dapat menggunakan fitur multiplexing dan piggyback pada satu koneksi utama untuk menghindari otentikasi setiap kali.
SSHFS adalah sistem file FUSE dan karenanya hanya mendukung metadata Unix tradisional dan ACL. Rsync dapat mentransfer atribut yang diperluas (Anda harus menggunakan rsync -aAX
, perhatikan bahwa dataran -a
hanya mempertahankan metadata Unix tradisional).
rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz
. Ketika saya gunakanrsync
untuk operasi ini, selama perhitungan checksum untuk mentransfer hanya bagian-bagian yang telah dimodifikasi, apakahrsync
harus membaca seluruh file, yang akan menyebabkan data lengkap untuk diunduh alih-alih hanya bagian yang diperbarui? @Gilles