Cách nhanh nhất để sao chép thư mục chứa nhiều tệp qua SSH


13

Cách tốt nhất để sao chép các tập tin trên máy chủ thông qua ssh là gì?

Trong trường hợp của tôi: Tôi đang nói về việc nhân đôi cửa hàng magento. (15000 tệp ~ 50MB)

cp -a source destination

Đang mất hàng giờ ... (trong trường hợp máy chủ của tôi là 2,4 Xeon, RAM 2 GB)

Câu trả lời:


18

Một từ : rsync.

Lưu ý rằng nếu bạn đang sử dụng một liên kết chậm hoặc máy chủ đang tải nặng, công cụ được sử dụng để sao chép sẽ không bị nghẽn cổ chai và mọi cách sao chép sẽ bị chậm.

Điều này sẽ cung cấp cho bạn cách sử dụng cơ bản để sao chép giữa máy tính cục bộ của bạn và máy chủ từ xa: http://oreilly.com/pub/h/38

Để sao chép từ máy tính cục bộ sang máy chủ từ xa (tất nhiên bạn cần thay thế đường dẫn, tên người dùng và địa chỉ máy chủ):

rsync -avz -e ssh /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
  • -a lưu trữ
  • -v dài dòng
  • -z nén
  • -e ssh "sử dụng đường hầm SSH"

Để sao chép theo một hướng khác, chuyển đổi các đường dẫn (đầu tiên là từ , thứ hai là để ):

rsync -avz -e ssh remoteuser@remotehost.somewhere.example.com:/path/on/server /path/on/local/computer

Nhưng rsync hữu ích ngay cả khi sao chép mọi thứ xung quanh trên cùng một máy chủ:

rsync -av /path-to/copy/from /path_to/copy/to

2
Lưu ý rằng @Piskvor bỏ -ztùy chọn để sao chép cục bộ vì nó thêm chi phí không cần thiết. IMHO, bạn chỉ nên sử dụng -zkhi sử dụng rsync trên một liên kết mạng chậm. Nếu sao chép số lượng lớn dữ liệu trên 100Base-T, bạn có thể vẫn ổn nếu không có -z. Với kết nối mạng nhanh, sử dụng nén có thể chốt CPU của bạn và bỏ đói các quy trình khác.
tomlogic

@tomlogic: Điểm hay - nói cách khác, không sử dụng -zđể sao chép hoặc sao chép LAN trong một máy; kiểm tra có và không có -zbản sao trên Internet (cái này hay cái kia có thể nhanh hơn, tùy thuộc vào nhiều thứ).
Piskvor rời khỏi tòa nhà

1
Tôi cũng sẽ không nén nếu bạn biết các tệp của mình đã được nén, chẳng hạn như đồng bộ hóa một cây thư mục chứa đầy JPEG vì không có gì để đạt được.
ngắt dòng

Lưu ý: -e sshhiện được mặc định cho các máy chủ từ xa, do đó không cần thiết phải vượt qua tùy chọn một cách rõ ràng.
Piskvor rời khỏi tòa nhà

3

Từ khác: scp

scp /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server

Đối với giao dịch một shot, scp là tiện dụng. Nếu đó là rất nhiều tệp, thì rsync là một ý tưởng tốt. Nếu một kết nối bị mất, rsync có thể chọn nơi nó dừng lại.

Tôi biết rằng rsync đã nén ( -z) và vừa biết rằng scp cũng vậy ( -C).


Cả hai IIRC đều sử dụng thuật toán nén của SSH, ít nhất là cho các mạng op.
Piskvor rời khỏi tòa nhà

0

Trong thiết lập của bạn, rsync có lẽ là đủ ... nhưng như một ví dụ, nếu có nhiều tệp nhỏ, có thể nhanh hơn để tar các tệp trước khi chuyển sau đó qua rsync. Điều này là do việc chuyển chủ sở hữu, dấu thời gian, quyền đôi khi nặng hơn chính tệp nếu tệp nhỏ. Tar sẽ hợp nhất tất cả thông tin đó trong một tệp và rsync sẽ sao chép các khối lớn hơn.

Hoặc thậm chí tốt hơn, nếu không cần bảo mật, hãy sử dụng tar và nc:

Khi đến đích, hãy chuẩn bị một daemon nhận, giải nén và gỡ bỏ:

nc -l -p 12345 | pigz -d | tar xvf - 

Trên nguồn, tar mọi thứ, nén song song và gửi nó đến đích:

tar cvf - ./ | pigz | nc host 12345
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.