Mengapa saya tidak bisa menyalin dengan scp ketika saya menggunakan *
karakter di jalur?
scp SERVERNAME:/DIR/* .
Konfigurasi apa yang dibutuhkan SCP untuk memungkinkan *
di jalur?
PEMBARUAN: masalahnya bukan pada sisi server; pscp sedang mencoba menggunakan SCPv1, dan itulah sebabnya pesan kesalahan:
Jawaban:
Anda harus melewati pelarian harfiah
scp
untuk menghindari mesin jarak jauh yang memperlakukan*
sebagai gumpalan (perhatikan bahwa ini dikutip dua kali lipat):sumber
touch /tmp/abcd.1234; scp 'localhost:/tmp/abcd.\*' ./
:scp: /tmp/abcd.*: No such file or directory
pscp
di sisi klien untuk memungkinkan globbing jarak jauh.Saya menemukan saran Patrick itu benar, walaupun jawaban Chris membuat saya di jalur yang benar. Gunakan tanda kutip dan Anda tidak perlu garis miring terbalik sebelum tanda bintang.
scp: /tmp/file_num*.csv: Tidak ada file atau direktori tersebut
judgments_for_job_171642.csv 100% 32KB 32.0KB / s 00:00
judgments_for_job_172394.csv 100% 548KB 182,6KB / s 00:03
sumber
*
), bukan tentang bagaimana glob pada remote saja.CATATAN: Solusi yang ditawarkan di bawah ini telah diuji dan diketahui berfungsi dengan benar.
Kutipan tunggal akan memecah ekspansi variabel jika Anda telah alias bagian dari jalan yang Anda globbing.
Berikut ini adalah skrip yang menggunakan tanda kutip DOUBLE untuk kasus penggunaan nama file globbed command-configure_ .tar.gz * menggunakan path alias dengan variabel:
Setelah kutip ganda penutup, target direktori lokal dibuat dengan hanya mengekstrak dir home user yang ditentukan dari / etc / passwd .
Perintah scp sendiri diawali dengan
sshpass
dan-o StrictHostKeyChecking=no
untuk mengotomatisasi sepenuhnyascp
perintah tanpa interaksi pengguna. Terlihat berbelit-belit tetapi lebih baik daripada jalur hard-coding yang diharapkan berubah dari waktu ke waktu.Anyhoo, contoh menggunakan tanda kutip ganda di mana variabel di jalur yang Anda globbing perlu diizinkan untuk berkembang. HTH
sumber