Làm cách nào để sao chép tất cả các tệp từ một thư mục sang một thư mục từ xa bằng scp?


68

Mục tiêu của tôi là chỉ sao chép tất cả các tệp từ ~ / local_dir sang user@host.com / var / www / html / target_dir bằng scp và không tạo danh mục local_dir trong local_dir.

/var/www/html/target_dir/files..

nhưng không

/var/www/html/target_dir/local_dir/files.. khi sử dụng tham số -r


1
Không scp * user@host.com:/var/www/html/target_dirlàm những gì bạn muốn? Nếu vậy, vui lòng chỉnh sửa chi tiết hơn về những gì bạn đang cố gắng thực hiện & đã thử cho đến nay.
Michael Homer

Bổ sung /. không còn làm việc Thêm ở đây
Tsulatsi Tamim

Câu trả lời:


91

scp có đối số -r. Vì vậy, hãy thử sử dụng:

$ scp -r ~/local_dir user@host.com:/var/www/html/target_dir

Đối số -r hoạt động giống như đối số -r trong cp, nó sẽ chuyển toàn bộ thư mục của bạn và tất cả các tệp và thư mục con bên trong.


5
Lệnh của bạn đã tạo local_dirthư mục trong / var / www / html / target_dir mục tiêu của tôi là chỉ sao chép các tệp.
Edgaras Karka

Xin lỗi, tôi đã hiểu sai. Sau đó, chỉ cần lặp lại lệnh, nhưng như thế này: $ scp -r ~/local_dir user@host.com:/var/www/html/Sau đó đổi tên thư mục mới nếu cần.
parazyd

8
Hoặc $ scp -r ~/local_dir/* user@host.com:/var/www/html/target_dirbất cứ điều gì nổi thuyền của bạn.
parazyd

Cách loại trừ một số thư mục khỏi cục bộ trong khi sao chép vào điều khiển từ xa
Sushivam

13
Thay đổi ký tự đại diện *thành một dấu chấm .và bạn sẽ sao chép nội dung thư mục (bao gồm mọi tệp chấm) mà không cần sao chép chính thư mục đó. scp -pr ~/local_dir/. user@example.com:/path/to/target_dir
roaima

19

Nếu mục tiêu của bạn là để chuyển tất cả các file từ local_dircác *ký tự đại diện hiện các trick:

$ scp ~/local_dir/* user@host.com:/var/www/html/target_dir

Các -rtùy chọn có nghĩa là "đệ quy", vì vậy bạn phải viết nó khi bạn đang cố gắng để chuyển toàn bộ thư mục hoặc nhiều thư mục.

Từ man scp:

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

Vì vậy, nếu bạn có thư mục con bên trong local_dir, ví dụ cuối cùng sẽ chỉ truyền tệp, nhưng nếu bạn đặt -rtùy chọn, nó sẽ chuyển tệp và thư mục.


1+ Bởi vì bạn cần đọc các bình luận trong câu trả lời được chấp nhận để có câu trả lời đúng, trong khi điều này chỉ giải thích trực tiếp.
André Christoffer Andersen

17

Việc thêm /.vào thư mục nguồn của bạn sẽ chuyển nội dung của nó thay vì chính thư mục đó. Ngược lại với giải pháp ký tự đại diện, điều này cũng sẽ bao gồm bất kỳ tệp ẩn nào.

$ scp -r ~/local_dir/. user@host.com:/var/www/html/target_dir

Tín dụng cho giải pháp này được chuyển đến roaima, nhưng tôi nghĩ nó nên được đăng dưới dạng câu trả lời thực tế, không chỉ là một bình luận.


0

Thực hiện theo các bước sau:

  1. Sao chép thư mục local_dirvới tất cả các thư mục con của nó:

    scp -r ~/local_dir user@host.com /var/www/html/target_dir
    
  2. chỉ sao chép nội dung của local_dirvà không phải local_dirchính thư mục :

    scp -r ~/local_dir/* user@host.com /var/www/html/target_dir
    
  3. Không sử dụng: scp -r ~/local_dir/. user@host.com /var/www/html/target_dirvì nó gây ra lỗi (vừa được kiểm tra và nhận được lỗi sau):

    scp: error: unexpected filename: .
    
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.