Korzystam z scp, aby skopiować katalog z jednego zdalnego serwera do nowego katalogu (IE tylko zmienia nazwę) na innym zdalnym serwerze, takim jak:
scp -prq server1:dir1 server2:dir2
Działa to dobrze, jeśli katalog 2 nie istnieje na serwerze 2, tworzy nowy katalog o nazwie katalog 2, który zawiera wszystko od katalogu 1 na serwerze 1.
Problem pojawia się, gdy dir2 już istnieje na serwerze 2 (UWAGA: nie mam możliwości wcześniejszego poinformowania o tym ani zrobienia usunięcia z dir2 na serwerze 2) - co się dzieje, to otrzymuję kopię dir1, zwaną dir1, w dir2.
Jestem pewien, że brakuje mi czegoś podstawowego, ale wydaje mi się, że nie mogę tego rozwiązać.
Każda pomoc bardzo doceniana!
Pozdrowienia,
Giles
Okej, mam mniej niż 10 powtórzeń i nie mogę czekać 8 godzin, więc oto co otrzymałem:
Oto skrypt, który działa dla mnie:
#!/bin/sh
echo "method 1"
scp -prq server1:dir1/* server2:dir2/ >/dev/null 2>&1
if [ "$?" -ne "0" ]; then
echo "failed ... trying method 2"
scp -prq server1:dir1 server2:dir2
fi
exit
Nadal nie jestem pewien, jak to zrobić za pomocą jednego polecenia, a nawet jeśli to możliwe.
Pozdrawiam @mindthemonkey, czasem zdobycie nowego punktu widzenia może pomóc wskazać drogę.
cd dir2
.Odpowiedzi:
Użyj tej składni „kropkowej”:
Spowoduje to skopiowanie zawartości tego katalogu, a nie samego katalogu. I wierzę, że jest bardziej przenośny niż
*
globbing.źródło
scp: error: unexpected filename: .
Zwykle do kontrolowania tworzenia katalogu należy użyć znaku
/
końca, aby wskazać pełną ścieżkę, ale myślę, że wówczas nie uda się utworzyć katalogu, jeśli nie istnieje:Może to również brakować ukrytego. pliki z powodu rozszerzenia * glob (bez skomplikowanej pracy powłoki )
Możesz podejść do tego inaczej za pomocą
ssh
itar
.Ale to oznacza, że ruch przechodzi przez lokalną maszynę.
źródło