Lệnh chuyển tập tin đệ quy SCP


11

Tự hỏi liệu có thể chỉ định một thứ tự sắp xếp khi chuyển tập tin với scp.

Ví dụ: $ scp -r "user@host:/path/to/download/" .

[... files download in a seemingly random order ...]

Vì có lẽ điều này có thể liên quan đến cách các scpchức năng, có cách nào để định cấu hình ssh trên nguồn (máy chủ) để các tệp được chuyển, ví dụ, theo thứ tự tên tệp tăng dần không?

Câu trả lời:


4

Tôi sẽ giải quyết vấn đề với tarvà tính minh bạch của đường ống ssh. Một ví dụ có thể được nhìn thấy dưới đây, PC từ xa được đặt tên bar. Trước khi thử nghiệm, tôi đã tạo ba tệp trống /tmp/foobằng cách thực thi ssh bar 'mkdir /tmp/foo ; touch /tmp/foo/{a,b,c}'.

$ ssh bar 'cd /tmp/foo ; ls | sort -r | tar -cT -' | tar -xv
c
b
a
$ ls -l a b c
-rw-r--r-- 1 dnet dnet 0 nov   29 17:07 a
-rw-r--r-- 1 dnet dnet 0 nov   29 17:07 b
-rw-r--r-- 1 dnet dnet 0 nov   29 17:07 c

Các -Tlá cờ của tarlàm cho nó đọc tên tập tin để đóng gói từ tham số tiếp theo, và -có nghĩa là đầu vào tiêu chuẩn. Bây giờ bạn chỉ cần đặt tên của các tệp vào nó, có thể đến từ ls(như trong ví dụ) hoặc findcho các nhiệm vụ khó khăn hơn. Với thiết lập này, bạn có thể sử dụng sortđể chỉ ra thứ tự chính xác các tệp sẽ được truyền qua SSH (trong trường hợp này là -rcác tệp được sắp xếp theo thứ tự chữ cái ngược). Chỉ -vđược thêm vào cuối cùng, giải nén tar, để hiển thị thứ tự.


Woah, cách tiếp cận cấp dưới tuyệt vời và trình bày bức tranh rộng lớn hơn rất rõ ràng. Cảm ơn bạn.
Dmitry Minkovsky

Làm thế nào một cách tiếp cận như vậy có thể được mở rộng để chuyển các tập tin riêng lẻ thay vì trong một kho lưu trữ? Một vòng lặp trên kết quả từ sẽ sorttrong barlệnh từ xa bằng cách nào đó thực hiện điều này?
Dmitry Minkovsky

Nó có thể, nhưng tôi không thấy vấn đề với việc chuyển nó thành một vấn đề. Nếu bạn nghĩ về nó, không có nhiều khác biệt giữa phương pháp này và scp- cả gửi siêu dữ liệu và nội dung cho mỗi tệp, họ chỉ sử dụng một "giao thức" khác nhau. Tôi đoán bạn có thể lặp lại kết quả, nhưng sau đó bạn nên chăm sóc các tệp có khoảng trắng trong tên của chúng.
dnet

2
@dimadima, nếu bạn thích câu trả lời rất nhiều, có lẽ bạn có thể chấp nhận câu trả lời .
Peter V. Mørch

Câu trả lời này hoạt động, nhưng người ta phải điều chỉnh nó cho trường hợp khi các tệp có khoảng trắng trong tên.
Ruslan

1

Người ta có thể đạt được chuyển tập tin theo thứ tự bảng chữ cái bằng cách sử dụng rsync:

rsync -P -e ssh -r user@remote_host:/some_path local_path

Pcho phép tải xuống một phần, ethiết lập giao thức SSH và rtải xuống đệ quy.


0

Trong trường hợp điều này giúp được ai đó, tôi đã cung cấp một giải pháp đơn giản tại đây:

/programming/23067175

Vẫn đang chờ đợi một cách thông minh hơn để làm điều đó!


1
Đây chỉ là một liên kết. Để có câu trả lời đầy đủ, hãy cung cấp câu trả lời ở đây và sau đó cung cấp liên kết để tham khảo.
Kevin Panko
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.