Nama jarak jauh yang dilewati scp
sebenarnya ditafsirkan sebagai daftar pola yang dipisahkan oleh spasi di sisi jarak jauh. Ini sering menjengkelkan ketika Anda mencoba menyalin file yang namanya mengandung spasi, tetapi ini berguna: scp -p 'user@machine:/path/a*' .
akan menyalin semua file yang namanya dimulai dengan a
.
Perintah Anda akan bekerja jika Anda mengutip polanya sehingga ditafsirkan dari jarak jauh daripada lokal, asalkan Anda melewati rintangan lain. Polanya !(a*)
bukan pola shell dasar, ini adalah ekstensi ksh (yang bash dan zsh juga mendukung jika Anda mengatur opsi yang sesuai). Jadi ini hanya akan berfungsi jika shell jarak jauh Anda adalah ksh, tidak jika itu shell lain dan Anda exec ksh
dari .profile
atau yang serupa.
Cara mudah, kecuali Anda berada di lingkungan yang terbatas atau antik, adalah melupakannya scp
. Anda ingin file jarak jauh berfungsi seperti file lokal, jadi buatlah file lokal: mount direktori jarak jauh dengan sshfs . Ini membutuhkan FUSE pada mesin lokal dan server SFTP (yaitu sftp-server
executable yang sshd
diluncurkan) pada mesin jarak jauh.
mkdir ~/net/machine
sshfs user@machine:/ ~/net/machine
cp -p ~/net/machine/path/!(a*) .