Apakah ada alasan untuk menggunakan scp bukan rsync?
62
Apakah ada alasan untuk menggunakan scpbukan rsync? Saya tidak dapat melihat alasan untuk menggunakan scplagi, rsyncmelakukan semua yang scpdilakukannya, dengan lebih aman (dapat melestarikan symlinks dll).
Jawaban singkat: Tidak. Scp tidak pernah berbahaya.
Shadur
2
@Shadur scp berbahaya karena menimpa file target yang ada secara default. Jadi rsync, tapi setidaknya memungkinkan membatasi kemungkinan kerusakan -u.
Gilles 'SANGAT berhenti menjadi jahat'
3
@Gilles Seperti alat apa pun, Anda harus memahami apa fungsinya dan bagaimana menggunakannya agar aman.
Alex Chamberlain
8
Dalam konteks itu, teratur cpdan rmakan dianggap "berbahaya" - dan jika Anda mendefinisikan "berbahaya" sebagai "dapat mengacaukan saya jika saya melakukan sesuatu yang bodoh", rsynctidak kalah berbahaya.
Shadur
1
Pada sistem tanpa rsyncdiinstal, menggunakan rsync(jelas) bahkan tidak mungkin.
Kusalananda
Jawaban:
46
scp menyediakan metode seperti cp untuk menyalin file dari satu mesin ke mesin jarak jauh melalui koneksi SSH yang aman.
rsync memungkinkan Anda menyinkronkan folder jarak jauh.
Mereka adalah program yang berbeda dan keduanya memiliki kegunaannya. scp selalu aman, sedangkan rsync harus melewati SSH agar aman.
Juga, cukup yakin rsync harus diinstal di ujung yang lain.
ckhan
3
@ Ya ampun, tidak dapat menyalin tanpa menginstal apa pun di sisi lain, itu hanya akan kurang efisien.
mikebloch
2
Saya suka kesederhanaan scp.
Alex Chamberlain
2
@ mikebloch Bagaimana Anda melakukannya? Apakah ini fitur baru? Baru saja mencoba ini menggunakan versi 3.0.9. dan itu mengeluh tidak dapat menemukan rsyncdi remote.
Alexios
1
@mikebloch, harus diinstal di server untuk melakukan perhitungan checksum, yang dapat menambah banyak beban cpu ke server. Inilah mengapa sebagian besar situs besar tidak mendukungnya, dan mengapa zsyncdibuat sebagai alternatif.
psusi
19
Salah satu hal utama (yang saya pikir tidak ada yang disebutkan) adalah bahwa jika Anda mentransfer sejumlah besar data atau file, dan jika transfer terputus sebelum selesai karena alasan apa pun, rsync akan mengambilnya di tempat yang ditinggalkannya. Sedangkan scp tidak.
Saya menggunakan scp jika saya ingin mentransfer satu atau beberapa file atau direktori. Saya pergi ke rsync untuk data ukuran multi-GB.
Mungkin perlu ditambahkan bahwa --partialflag berguna ketika mentransfer file besar. rsyncakan mengambil tempat yang ditinggalkannya dalam file daripada memulai file itu lagi.
Flup
Seperti @Flup disebutkan rsync tidak akan meninggalkan file-in-transit apa pun untuk Anda melanjutkan kecuali Anda menggunakan opsi --partial. File-file ini secara default disembunyikan di direktori target. Anda dapat menggunakan --partial-dir untuk meletakkan semua file ini dalam satu direktori.
Lester Cheung
Baiklah, rsync -vP username@host:/path/to/file .akan lakukan ini juga. Lihat jawaban ini di Stackoverflow
rsync dapat mentransfer file antara dua host jarak jauh. Bahkan, rsync a host:bsetara dengan scp a host:b.
brandizzi
Itulah yang saya tulis, rsync dapat mentransfer delta antara host lokal dan remote tetapi scp tidak terbatas hanya untuk itu, ia dapat mentransfer delta antara dua host jarak jauh. @brandizzi
rsyncmembandingkan file di setiap ujung dan hanya mentransfer bagian yang diubah dari file yang diubah. Ketika Anda mentransfer file untuk pertama kalinya, itu berperilaku seperti scp, tetapi untuk transfer kedua, di mana sebagian besar file tidak berubah, itu akan mendorong data jauh lebih sedikit daripada scp. Ini juga cara yang nyaman untuk memulai kembali transfer yang gagal - Anda cukup menerbitkan ulang perintah yang sama dan akan mengambilnya dari waktu sebelumnya, sedangkan scpakan memulai lagi dari awal.
scplebih mudah digunakan karena lebih sedikit argumen. Saya menangkap myselv menggunakan scp alih-alih rsyncjika saya hanya mentransfer satu file. Mungkin saya hanya malas mendefinisikan alias ke rsync ... ;-)
Hmmm, kenapa begitu? rsync a host:bsetara dengan scp a host:b, jumlah argumen yang sama.
mikebloch
1
@mikebloch Dua huruf lagi untuk mengetik ... ;-) Di masa lalu saya harus menyediakan "-e ssh -a" untuk mendapatkan hasil yang tepat. Sekarang "-e ssh" adalah default, ini mungkin permainan yang berbeda.
-u
.cp
danrm
akan dianggap "berbahaya" - dan jika Anda mendefinisikan "berbahaya" sebagai "dapat mengacaukan saya jika saya melakukan sesuatu yang bodoh",rsync
tidak kalah berbahaya.rsync
diinstal, menggunakanrsync
(jelas) bahkan tidak mungkin.Jawaban:
scp menyediakan metode seperti cp untuk menyalin file dari satu mesin ke mesin jarak jauh melalui koneksi SSH yang aman.
rsync memungkinkan Anda menyinkronkan folder jarak jauh.
Mereka adalah program yang berbeda dan keduanya memiliki kegunaannya. scp selalu aman, sedangkan rsync harus melewati SSH agar aman.
sumber
rsync
di remote.zsync
dibuat sebagai alternatif.Salah satu hal utama (yang saya pikir tidak ada yang disebutkan) adalah bahwa jika Anda mentransfer sejumlah besar data atau file, dan jika transfer terputus sebelum selesai karena alasan apa pun, rsync akan mengambilnya di tempat yang ditinggalkannya. Sedangkan scp tidak.
Saya menggunakan scp jika saya ingin mentransfer satu atau beberapa file atau direktori. Saya pergi ke rsync untuk data ukuran multi-GB.
sumber
--partial
flag berguna ketika mentransfer file besar.rsync
akan mengambil tempat yang ditinggalkannya dalam file daripada memulai file itu lagi.rsync -vP username@host:/path/to/file .
akan lakukan ini juga. Lihat jawaban ini di Stackoverflowrsync : Transfer delta (menggunakan Delta Transfer Algorithm-nya ) antara:
scp : Mentransfer seluruh file antara:
Rangkuman:
scp
dapat mentransfer file antara dua host jarak jauh sementararsync
tidak mendukungnya.sumber
rsync a host:b
setara denganscp a host:b
.Pengguna Chris di Webhosting Talk menulis:
sumber
scp
lebih mudah digunakan karena lebih sedikit argumen. Saya menangkap myselv menggunakan scp alih-alihrsync
jika saya hanya mentransfer satu file. Mungkin saya hanya malas mendefinisikan alias ke rsync ... ;-)sumber
rsync a host:b
setara denganscp a host:b
, jumlah argumen yang sama.Kredit ke @tomrunia di https://gist.github.com/KartikTalwar/4393116
Perhatikan
--delete
, jangan gunakan itu jika Anda ingin menyimpan file asing di direktori tujuansumber