Tôi có thể scp một thư mục có thư mục phụ?


31

Tôi có một thư mục chứa các tệp cho một trang web tĩnh như:

/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...

Nếu tôi cập nhật một cái gì đó trên máy tính xách tay của mình, tôi muốn một lệnh duy nhất gửi các tệp đến máy chủ ubfox của tôi. Tôi không muốn thiết lập FTP trên nó nếu tôi không có quá, tự hỏi liệu scp có thể xử lý việc này không?


Câu trả lời:


56

Lệnh scp -r source user@target:destsẽ chuyển tất cả các thư mục con của nguồn và sao chép chúng.

Tuy nhiên, scphành xử như cpvà luôn sao chép các tệp, ngay cả khi nó giống nhau trên cả nguồn và đích. [Xem ở đây để giải quyết.]

Vì đây là một trang web tĩnh, rất có thể bạn chỉ thực hiện cập nhật, không tạo lại toàn bộ, vì vậy bạn có thể sẽ thấy mọi thứ di chuyển nhanh hơn nếu bạn sử dụng rsyncqua ssh thay vì scp. Có lẽ là một cái gì đó như

rsync -av -e ssh source user@target:dest

...để bắt đầu. Nếu bạn đang làm điều này trên một mạng LAN, cá nhân tôi sẽ sử dụng các tùy chọn -avWthay thế cho rsync.

Rsync cũng cung cấp cho bạn khả năng sao chép xóa trong nguồn của bạn; vì vậy nếu bạn xóa một tệp khỏi cây của mình, bạn có thể chạy rsyncnhư trên và bao gồm cờ --deletevà nó sẽ xóa cùng một tệp khỏi phía đích.


9

scp có một cờ đệ quy sẽ làm những gì bạn muốn. scp -r /base/directory user@server:/to/location

từ man scp

-r      Recursively copy entire directories.  Note that scp follows symbolic
          links encountered in the tree traversal.

2

scp -r và rsync -r là những cách đáng tin cậy nhất để có được những gì bạn muốn, như những người khác đã lưu ý.

Bạn cũng có thể sử dụng sshfs để 'mount' nó như thể nó là một ổ đĩa cục bộ: sshfs user@host:/site /mnt/mountpoint

(Tuy nhiên, có lẽ bạn nên làm việc tại địa phương và triển khai với rsync. Chỉ cần một công cụ khác để nhận biết.)

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.