2012-07-21 35 views
9

Có cách nào để scp tất cả các tệp trong thư mục đệ quy đến máy từ xa và giữ tên tệp ban đầu của chúng nhưng không sao chép thư mục nằm trong đó?Recursively scp trừ thư mục hiện tại

dir1/file 
dir1/dir2/file2 

vì vậy nội dung của dir1 sẽ chỉ được sao chép. dir1 sẽ không được tạo. Tuy nhiên, thư mục dir2 sẽ được tạo với file2 bên trong.

Tôi đã thử scp -r dir1 remote:/newfolder nhưng nó tạo ra dir1 trong thư mục /newfolder trên remote. Tôi không muốn nó tạo ra thư mục dir1. Chỉ cần đặt tất cả các tệp trong số dir1 vào newfolder.

Trả lời

19
cd dir1 
scp -r . remote:/newfolder 

Điều này tránh cho scp một cơ hội để làm bất cứ điều gì với tên dir1 trên máy từ xa. Bạn cũng có thể thích:

(cd dir1; scp -r . remote:/newfolder) 

này rời khỏi vỏ của bạn trong thư mục gốc của nó, trong khi làm việc như nhau (vì nó sẽ khởi động một tiểu vỏ mà không hoạt động cdscp).

8

Điều này có nghĩa sao chép danh sách các tập tin được thực hiện bởi việc mở rộng vỏ dir1/* đến vị trí xa xôi hẻo lánh:/newfolder

scp -r dir1/* remote:/newfolder 
+0

Tôi thích câu trả lời này vì nó tránh phải làm một 'cd'. Nếu câu lệnh tiếp theo của bạn sau 'scp' mong bạn ở trong thư mục gốc của bạn, thì bạn phải thực hiện một bước khác để' cd' quay lại nó. – jreancsu

1

Bạn có thể sử dụng cú pháp dấu chấm có đường dẫn tương đối.

scp -r dir1/. remote:/newfolder 

Nếu thư mục từ xa không tồn tại được tạo ra.

Các vấn đề liên quan