Các tên từ xa được chuyển đến scp
thực sự được hiểu là một danh sách các mẫu được phân tách bằng khoảng trắng ở phía từ xa. Điều này thường gây phiền toái khi bạn cố sao chép một tệp có tên chứa khoảng trắng, nhưng ở đây nó hữu ích:scp -p 'user@machine:/path/a*' .
sẽ sao chép tất cả các tệp có tên bắt đầu bằng a
.
Lệnh của bạn sẽ hoạt động nếu bạn trích dẫn mẫu để nó được giải thích từ xa chứ không phải cục bộ, miễn là bạn vượt qua một rào cản khác. Mẫu !(a*)
không phải là mẫu vỏ cơ bản, đó là phần mở rộng ksh (bash và zsh cũng hỗ trợ nếu bạn đặt tùy chọn phù hợp). Vì vậy, điều này sẽ chỉ hoạt động nếu vỏ từ xa của bạn là ksh, không phải nếu nó là một vỏ khác và bạnexec ksh
từ .profile
hoặc một cái gì đó tương tự.
Cách dễ dàng, trừ khi bạn ở trong một loại môi trường bị hạn chế hoặc cổ xưa, là quên đi scp
. Bạn muốn các tệp từ xa hoạt động giống như các tệp cục bộ, vì vậy hãy đặt chúng thành các tệp cục bộ: gắn thư mục từ xa bằng sshfs . Điều này yêu cầu FUSE trên máy cục bộ và máy chủ SFTP (tức là một sftp-server
tệp thực thi sshd
khởi chạy) trên máy từ xa.
mkdir ~/net/machine
sshfs user@machine:/ ~/net/machine
cp -p ~/net/machine/path/!(a*) .