scp - bỏ qua một tập tin trong khi chạy


8

Tôi đang chạy scp và sao chép một thư mục từ máy chủ từ xa, tôi đang chạy với -rl, vì vậy tôi thấy các tệp đang được sao chép, có thể bỏ qua tệp hiện tại theo cách nào đó không?

Câu trả lời:


11

Không, bạn không thể. Nhưng bạn có thể dừng lại scpvà sử dụng rsyncthay thế. Nó sẽ chỉ sao chép những khác biệt còn lại từ bản sao một phần và bạn có thể loại trừ bất kỳ tệp hoặc thư mục nào bạn không muốn chuyển.

rsync -avP -e ssh --exclude=somefile --exclude=somedir ./localdir/ user@server:remotedir/

2
Điều này rất hữu ích, vâng, nhưng thật không may, nó không trả lời câu hỏi đã được hỏi.
Emmaly Wilson

8
Nó trả lời câu hỏi một cách hoàn hảo; câu hỏi hỏi liệu có thể làm gì không và câu trả lời này trả lời là "không". Sau đó, nó cung cấp một sự thay thế hữu ích, theo chủ đề.
Christopher Shroba

1

Không, không phải với -rhoặc bất kỳ cú pháp nào khác thực hiện nhiều lần chuyển tệp trong một scplệnh.

Điều đó nói rằng, scpcũng tuân theo mô hình UNIX: viết các chương trình cung cấp chức năng đơn giản, chính xác có thể được kết nối với nhau theo những cách thú vị. Điều này có nghĩa là có thể viết một vòng lặp thực hiện tương tác các lệnh riêng lẻ của lệnh, mỗi vòng cho mỗi tệp. Sau đó, bạn có thể thoát ra khỏi các lệnh riêng lẻ khi chúng đang được chạy. (Ctrl-C)

Mã cho điều này đang được để lại như một bài tập cho người đọc, nhưng cần phải nhấn mạnh vòng lặp này trong một vỏ tương tác. Thoát ra khỏi vỏ không tương tác sẽ chấm dứt toàn bộ công việc.


0

Có bạn có thể!

Hãy liệt kê các thư mục từ xa và sao chép từng tệp riêng biệt. Sau đó nhấn ctrl-c cho mỗi tệp mà bạn không muốn sao chép:

OLD_IFS="$IFS"
IFS=$'\n'
for file in `ssh user@host ls /remote/directory/`
  do echo user@host:/remote/directory/$file /local/directory/
done;
IFS="$OLD_IFS"

OLD_IFS ở đây để xử lý các tệp có khoảng trắng trong đó.


Nơi nào bạn đặt điều này? Bạn gọi cái đó như thế nào?
Số liệu thống kê
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.