Porównaj ceny domen i usług IT, sprzedawców z całego świata

Polecenie SCP ze spacjami i przecinkami


przez cały dzień były problemy z tym pojedynczym poleceniem scp. Szukałem i pytałem ludzi itp.
$ scp -P portNumber/ReferenceFiles/CompanyA,The/Some\ DirectoryWithA\ Space/Game user@server:/ReferenceFiles/CompanyA/Game

Próbowałem utworzyć plik w katalogu, ale plik nie istnieje, a jeśli spróbuję scp w katalogu, otrzymuję komunikat „nie jest to zwykły plik”.
Próbowałem użyć podwójnych odwrotnych ukośników dla spacji, używając pojedynczych i podwójnych cudzysłowów. Jestem w tym naprawdę nowy i spodziewałem się, że się dowiem, kiedy powiedziano mi, że będę robił głównie PHP i Flash ...
Każda pomoc lub sugestie są bardzo mile widziane.
dzięki
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Standardowe znaki ucieczki powłoki powinny wystarczyć, więc dodaj przecinek:
scp -P Numer portu/Pliki referencyjne/KompanyA \, The/Some \ DirectoryWithA \ Space/Game user @ server:/ReferenceFiles/CompanyA/Game
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jednym z najłatwiejszych sposobów obejścia znaków ucieczki w wierszu poleceń (jeśli to jest przyczyną problemu) jest użycie uzupełniania tabulatorami, aby umożliwić wypełnianie „niezręcznych” znaków; w zależności od tego, jak pełny jest twój katalog/ReferenceFiles, możesz zrobić coś takiego
 scp -P portNumber/Ref<tab>CompanyA<tab>Some<tab>Game/file user@server:...

Alternatywnie, czy możesz użyć? zamiast symbolu, pod warunkiem, że nie ma zbyt wielu sprzecznych nazw plików/katalogów:
scp -P portNumber/ReferenceFiles/CompanyA,The/Some?DirectoryWithA?Space/Game/file ...

W przypadku katalogów musisz użyć parametru -r dla scp (z powodu jego braku, otrzymałeś błąd „nie jest to zwykły plik”).
Wreszcie, czy może być tak, że miejsce docelowe na serwerze nie istnieje tak, jak zostało wprowadzone, i jakie jest źródło błędu (a nie oryginalny plik)?
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz użyć obu \ escaping

i

cytaty:
scp -o port=portNumber "/ReferenceFiles/CompanyA,The/Some\ DirectoryWithA\ Space/Game" user@server:/ReferenceFiles/CompanyA/Game

Nie pytaj dlaczego, ale to działa.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Twój zespół pracuje dla mnie; czy to naprawdę zespół sprawiał Ci problemy i nie idzie w drugą stronę?
         scp
nie ma problemu z lokalnymi nazwami plików, ale

zdalny

nazwy plików podlegają rozszerzaniu powłoki po stronie zdalnej. Więc jeśli piszesz
         scp
w powłoce należy umieścić podwójne cudzysłowy w nazwach usuniętych plików. Łatwym sposobem, jeśli nazwa nie zawiera apostrofów, jest zabezpieczenie znaków specjalnych za pomocą
         \
a następnie umieść argument w pojedynczych cudzysłowach, jak w
scp -P portNumber user@server:'/ReferenceFiles/CompanyA,The/Some\ DirectoryWithA\ Space/Game'/ReferenceFiles/CompanyA/Game

To samo dotyczy
         rsync
Tak poza tym.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zakładając, że "Gra" jest katalogiem, aby skopiować wszystkie pliki w danym katalogu przy użyciu scp, wystarczy użyć opcji -r (rekurencyjna) z katalogiem jako celem. Celem jest również nazwa gry nadrzędnej na pilocie, więc możesz usunąć „Game” z argumentu zdalnego. Musisz także usunąć przecinek.
Na przykład.
$ scp -r -P portNumber/ReferenceFiles/CompanyA\,The/Some\ DirectoryWithA\ Space/Game user@server:/ReferenceFiles/CompanyA

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się