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).


6
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.


9
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.


3
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
Devesh Saini

9

rsync : Transfer delta (menggunakan Delta Transfer Algorithm-nya ) antara:

  1. host lokal dan jarak jauh

scp : Mentransfer seluruh file antara:

  1. host lokal dan jarak jauh
  2. remote dan remote hosts

Rangkuman: scpdapat mentransfer file antara dua host jarak jauh sementara rsynctidak mendukungnya.


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
Devesh Saini

2

Pengguna Chris di Webhosting Talk menulis:

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.


0

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 ... ;-)


1
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.
Nils

0

Kredit ke @tomrunia di https://gist.github.com/KartikTalwar/4393116

rsync -aHAXxv --numeric-ids --delete --progress \
  -e "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x" \
  [source_directory] user@hostname:[target_directory]/

Perhatikan --delete, jangan gunakan itu jika Anda ingin menyimpan file asing di direktori tujuan

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.