`Scp` khác với` rsync` như thế nào?


241

Một bài viết về việc thiết lập blog Ghost nói sẽ sử dụng scpđể sao chép từ máy cục bộ của tôi sang máy chủ từ xa:

scp -r ghost-0.3 root@*your-server-ip*:~/

Tuy nhiên, Railscast 339: Chef Solo Basics sử dụng scpđể sao chép theo hướng ngược lại (từ máy chủ từ xa đến máy cục bộ):

scp -r root@178.xxx.xxx.xxx:/var/chef .

Trong cùng một Railscast, khi tác giả muốn sao chép các tệp vào máy chủ từ xa (cùng hướng với ví dụ đầu tiên), anh ta sử dụng rsync:

rsync -r . root@178.xxx.xxx.xxx:/var/chef

Tại sao sử dụng rsynclệnh nếu scpsẽ sao chép theo cả hai hướng? Làm thế nào scpkhác nhau rsync?


ngoài việc đơn giản hơn và luôn được mã hóa, không ai chỉ ra bất cứ điều gì mà scp có thể làm tốt hơn "rsync -aA". tôi thích "rsync -aAX --delete source Dest". kiểm tra bsync cho đồng bộ hai chiều.
Tomachi

Câu trả lời:


344

Sự khác biệt chính giữa các công cụ này là cách chúng sao chép các tập tin.

scpvề cơ bản đọc tệp nguồn và ghi nó đến đích. Nó thực hiện một bản sao tuyến tính đơn giản, cục bộ hoặc qua mạng.

rsynccũng sao chép các tập tin cục bộ hoặc qua mạng. Nhưng nó sử dụng một thuật toán chuyển delta đặc biệt và một vài tối ưu hóa để làm cho hoạt động nhanh hơn rất nhiều. Hãy xem xét cuộc gọi.

rsync A host:B
  • rsyncsẽ kiểm tra kích thước tệp và dấu thời gian sửa đổi của cả AB và bỏ qua mọi xử lý tiếp theo nếu chúng khớp.

  • Nếu tệp đích B đã tồn tại, thuật toán chuyển delta sẽ đảm bảo chỉ có sự khác biệt giữa AB được gửi qua dây.

  • rsyncsẽ ghi dữ liệu vào một tập tin tạm thời T , và sau đó thay thế file đích B với T để thực hiện cập nhật cái nhìn "nguyên tử" để quá trình mà có thể được sử dụng B .

Một sự khác biệt khác giữa họ liên quan đến việc gọi. rsynccó rất nhiều tùy chọn dòng lệnh, cho phép người dùng tinh chỉnh hành vi của nó. Nó hỗ trợ các quy tắc lọc phức tạp, chạy trong chế độ hàng loạt, chế độ daemon, v.v. scpchỉ có một vài công tắc.

Tóm lại, sử dụng scpcho các nhiệm vụ hàng ngày của bạn. Các lệnh mà bạn gõ một lần trong vỏ tương tác của bạn. Việc sử dụng đơn giản hơn và trong những trường hợp đó, việc rsynctối ưu hóa sẽ không giúp ích nhiều.

Đối với các nhiệm vụ định kỳ, như croncông việc, sử dụng rsync. Như đã đề cập, trên nhiều yêu cầu, nó sẽ tận dụng dữ liệu đã được chuyển, thực hiện rất nhanh và tiết kiệm tài nguyên. Nó là một công cụ tuyệt vời để giữ cho hai thư mục được đồng bộ hóa qua mạng.

Ngoài ra, khi xử lý các tệp lớn, sử dụng rsyncvới -Ptùy chọn. Nếu quá trình chuyển bị gián đoạn, bạn có thể tiếp tục chuyển đến nơi đã dừng bằng cách phát lại lệnh. Xem câu trả lời của Sid Kshatriya .


14
Bạn nói để sử dụng scp cho các nhiệm vụ hàng ngày của bạn. Từ lời giải thích của bạn và OP, có vẻ như giao diện cho hai công cụ khi được sử dụng mà không có tùy chọn là giống hệt nhau. Nếu rsync có triển khai vượt trội và các giao diện giống nhau, tại sao không luôn luôn sử dụng rsync?
Alex

5
Giao diện của chúng không giống nhau, thậm chí không có tùy chọn. Rsync có cách hiểu đặc biệt về dấu gạch chéo trên đối số nguồn (đồng bộ hóa chính thư mục so với nội dung của nó). Nó có thể có các vấn đề khác, tôi không chắc chắn.
Rafa

2
Ngoài ra, tôi đoán scpcó nhiều khả năng sẽ khả dụng trên một hệ thống giống Unix, vì vậy bạn sẽ ngăn chặn một "lệnh không tìm thấy" gây phiền nhiễu ngay bây giờ.
Rafa

2
@ erikb85 rsync có cờ -P sẽ hiển thị thanh tiến trình và cho phép tiếp tục lại từ quá trình chuyển hoàn thành một phần. digitalocean.com/community/tutorials/ trộm
Ben

1
Một giao diện khác biệt giữa scprsync: rsync -aso với scp -rpđể duy trì thời gian sửa đổi và quyền.
Rafa

71

rysnc có thể hữu ích để chạy trên các kết nối chậm và không đáng tin cậy. Vì vậy, nếu bản tải xuống của bạn hủy bỏ ở giữa một tệp lớn thì rysnc sẽ có thể tiếp tục từ nơi nó bị tắt khi được gọi lại.

Sử dụng rsync -vP username@host:/path/to/file .

Tùy chọn -P bảo tồn các tệp được tải xuống một phần và cũng hiển thị tiến trình.

Như thường lệ kiểm tra man rsync


32

Sự khác biệt b / w scp và rsync trên các tham số khác nhau

1. Hiệu suất trong thời gian trễ

  • scp : scp tương đối ít tối ưu hóa và tốc độ

  • rsync : rsync tương đối tối ưu hơn và tốc độ

https://www.disk91.com/2014/tĩ/networks/compare-performance-of-different-file-transfer-protatio-over-latency/

2. Xử lý gián đoạn

  • scp : công cụ dòng lệnh scp không thể tiếp tục tải xuống bị hủy bỏ từ các kết nối mạng bị mất

  • rsync: Nếu phiên rsync ở trên bị gián đoạn, bạn có thể tiếp tục phiên đó bao nhiêu lần tùy ý bằng cách nhập cùng một lệnh. rsync sẽ tự động khởi động lại việc chuyển nơi mà nó đã dừng.

http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html

3. Ví dụ lệnh

scp

$ scp source_file_path destination_file_path

rsync

$ cd /path/to/directory/of/partially_downloaded_file
$ rsync -P --rsh=ssh userid@remotehost.com:bigdata.tgz ./bigdata.tgz 

Các -Ptùy chọn cũng giống như --partial --progress, cho phép rsync để làm việc với các tập tin đã tải về một phần. Các --rsh=sshtùy chọn cho rsync để sử dụng ssh như một remote shell.

4. Bảo mật:

scp an toàn hơn. Bạn phải sử dụng rsync --rsh=sshđể làm cho nó an toàn như scp.

tài liệu người đàn ông để biết thêm:

biểu đồ hiệu suất


Cảm ơn câu trả lời mới này, đặc biệt là phần bảo mật.
zhihong

trên nhiều hệ thống ssh được sử dụng theo mặc định. serverfault.com/questions/378939/do-you-need-e-ssh-for-rsync
qwr

2
Về Bảo mật, từ ghi chú phát hànhThe scp protocol is outdated, inflexible and not readily fixed. We recommend the use of more modern protocols like sftp and rsync for file transfer instead.
openSSH

6

Một tính năng chính của rsynchơn scp(bên cạnh thuật toán delta và mã hóa nếu được sử dụng w / ssh) là nó tự động xác minh nếu tệp được chuyển đã được chuyển chính xác. Scp sẽ không làm điều đó, đôi khi có thể dẫn đến tham nhũng khi chuyển các tệp lớn hơn. Vì vậy, nói chung rsync là một bản sao có bảo đảm .

Các trang của Centos đề cập đến phần cuối của --checksummô tả tùy chọn:

Lưu ý rằng rsync luôn xác minh rằng mỗi tệp được chuyển đã được xây dựng lại chính xác ở phía bên nhận bằng cách kiểm tra tổng kiểm tra toàn bộ tệp được tạo khi tệp được chuyển, nhưng việc xác minh sau khi chuyển tự động không liên quan gì đến tùy chọn này trước đó- Tập tin chuyển nhượng Tập tin này có cần được cập nhật không? kiểm tra.


5

Có một điểm khác biệt với tôi scplà luôn được mã hóa bằng ssh (shell an toàn), trong khi rsynckhông nhất thiết phải được mã hóa. Cụ thể hơn, rsyncbản thân nó không thực hiện bất kỳ mã hóa nào; nó vẫn có khả năng sử dụng các cơ chế khác (ví dụ ssh) để thực hiện mã hóa.

Ngoài bảo mật, mã hóa cũng có tác động lớn đến tốc độ truyền của bạn, cũng như chi phí hoạt động của CPU. (Kinh nghiệm của tôi là rsynccó thể nhanh hơn đáng kể so với scp.)

Kiểm tra bài đăng này khi rsynccó mã hóa trên.


1

scp là tốt nhất cho một tập tin.
HOẶC kết hợp tar& nén cho các tập dữ liệu nhỏ hơn như cây mã nguồn với tài nguyên nhỏ ( ví dụ : hình ảnh, sqlite, v.v. ).


Tuy nhiên , khi bạn bắt đầu giao dịch với khối lượng lớn hơn, hãy nói:

  • thư mục phương tiện (40 GB)
  • sao lưu cơ sở dữ liệu (28 GB)
  • thư viện mp3 (100 GB)

Việc xây dựng tệp zip / tar.gz để chuyển bằng scp vào thời điểm này là không thực tế đối với các giới hạn vật lý của máy chủ được lưu trữ.

Như một bài tập, bạn có thể thực hiện một số môn thể dục như đường ống tarvào sshvà chuyển hướng kết quả vào một tệp từ xa . (tiết kiệm nhu cầu xây dựng một trao đổi hoặc bản sao tạm thời hay còn gọi là zip hoặc tar.gz)

Tuy nhiên ,

rsync đơn giản hóa quá trình này và cho phép bạn truyền dữ liệu mà không tốn thêm dung lượng đĩa.

Ngoài ra ,

Các cập nhật liên tục (cron?) Sử dụng các thay đổi tối thiểu so với các bản sao được sao chép hoàn toàn sẽ tăng tốc độ di chuyển dữ liệu lớn theo thời gian.

tl; dr
scp == quy mô nhỏ (có chỗ để xây dựng các tệp nén trên cùng một ổ đĩa)
rsync== quy mô lớn (với sự cần thiết phải sao lưu dữ liệu lớn và không còn chỗ trống)


-1

tốt hơn là suy nghĩ trong một bối cảnh thực tế. Trong nhóm của chúng tôi, chúng tôi sử dụng rsync -aPđể thay thế một máy chủ cassandra xấu trong cụm của chúng tôi. Chúng tôi không thể làm điều này với scp (chậm và không bảo toàn tiến độ).


Không thực sự mang lại bất cứ điều gì chưa được đề cập trong các câu trả lời khác. Ngoài ra, chúng tôi thậm chí không nên trả lời các câu hỏi ngoài chủ đề.
Dan Cornilescu

1
@DanCornilescu điều này mô tả trường hợp sử dụng trong một kịch bản thực tế, giúp người khác dễ dàng hiểu được sự khác biệt. Tôi không thấy bất kỳ câu trả lời tương tự nào khác
del bao

2
Xem -P giải thích và ghi chú chậm / liên quan đến tốc độ trong câu trả lời của Sid và Rafa.
Dan Cornilescu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.