Dlaczego nie mogę kopiować za pomocą SCP, kiedy używam *
znaków na ścieżce?
scp SERVERNAME:/DIR/* .
Jakiej konfiguracji potrzebuje SCP, aby zezwolić *
na ścieżkę?
AKTUALIZACJA: problem nie występuje po stronie serwera; pscp próbuje użyć SCPv1 i dlatego komunikat o błędzie:
Odpowiedzi:
Musisz przejść dosłowną ucieczkę, aby
scp
uniknąć traktowania maszyny zdalnej*
jako globu (zauważ, że jest ona podwójnie cytowana):źródło
touch /tmp/abcd.1234; scp 'localhost:/tmp/abcd.\*' ./
:scp: /tmp/abcd.*: No such file or directory
pscp
dostępu po stronie klienta, aby umożliwić zdalne globowanie.Uważam, że rada Patricka jest poprawna, chociaż odpowiedź Chrisa doprowadziła mnie na właściwy tor. Używaj cudzysłowów, a potem nie potrzebujesz odwrotnego ukośnika przed gwiazdką.
scp: /tmp/file_num*.csv: Brak takiego pliku lub katalogu
judgments_for_job_171642.csv 100% 32KB 32.0KB / s 00:00
judgments_for_job_172394.csv 100% 548KB 182,6KB / s 00:03
źródło
*
), a nie jak globować tylko na pilocie.UWAGA: Rozwiązanie oferowane poniżej przetestowane i działające poprawnie.
Pojedyncze cudzysłowy przerywają rozszerzanie zmiennych, jeśli aliasujesz część ścieżki, którą globujesz.
Oto skrypt, który wykorzystuje DOUBLE cytaty dotyczące użytkowej przypadku globbed filename poleceń configure_ .tar.gz * przy użyciu ścieżki aliasem ze zmienną:
Po zamknięciu podwójnego cudzysłowu konstruuje się katalog docelowy lokalnego katalogu poprzez wyodrębnienie katalogu domowego określonego użytkownika z / etc / passwd .
Sama komenda scp jest poprzedzona
sshpass
i-o StrictHostKeyChecking=no
pełni zautomatyzowaćscp
komendę bez interakcji użytkownika. Wygląda na zawiłe, ale lepsze niż na stałe zakodowane ścieżki, które od czasu do czasu powinny się zmieniać.Anyhoo, przykład z podwójnymi cudzysłowami, w którym zmienne na ścieżce, którą globujesz, muszą się rozwijać. HTH
źródło