Używam scp do kopiowania rzeczy do zdalnej lokalizacji. Ale czasami scp nie działa zgodnie z oczekiwaniami, okazało się, że czasami kopia nie kończy się poprawnie (być może po dodaniu nowych plików do folderu, który kopiuję).
Chcę najpierw usunąć folder zdalny, a następnie wykonać kopię, aby upewnić się, że mam dokładnie to, czego potrzebuję.
Czy istnieją inne polecenia, takie jak scp (np. Srm lub smv)? Czy istnieje sposób na usunięcie zdalnych folderów i plików?
ssh you@host bash -c "command1;command2;command3; commandN"
.Rsync skopiuje całą ścieżkę / drzewo i sprawdzi pliki znajdujące się już w miejscu docelowym i nie zawróci ich kopiowania, jeśli nie zostaną zmienione. Jeśli użyjesz opcji --delete, spowoduje to usunięcie wszystkich plików znajdujących się w miejscu docelowym, które nie są już w źródle. Działa nad ssh
źródło
rsync -avz -e shh root@location:/path/to/dest /path/from/host
ale nie powiedzie się po wprowadzeniu hasłash: rsync: not found
. Czy to oznacza, że rsync musi istnieć na zdalnym komputerze? Dzięki!Jeśli Twój zdalny serwer SSH obsługuje podsystem SFTP (większość tak, chyba że zostało to wyraźnie wyłączone), możesz użyć
sftp
powłoki (lub dowolnego innego klienta SFTP ) do manipulowania plikami i katalogami na zdalnym serwerze.Niestety, jedna podstawowa
sftp
powłoka najwyraźniej nie obsługuje rekurencyjnego usuwania katalogu; aby usunąć katalog, musisz najpierw usunąć całą jego zawartość. Jednak większość innych klientów (zwłaszcza graficznych) zazwyczaj obsługuje tę funkcję.(Nie wspominasz, jaki jest twój lokalny system operacyjny, ale jeśli jest to Linux, możesz użyć natywnego menedżera plików jako klienta GUI SFTP , wskazując go na adres URL taki jak sftp: // użytkownik @ host / ścieżka /. W systemie Windows WinSCP jest przyzwoitym klientem, a FileZilla to dobre rozwiązanie dla wielu platform).
źródło
Aby opróżnić zdalny (/ lokalny) katalog, użyj rsync w następujący sposób:
Uważaj - usuwa wszystko poniżej określonego miejsca docelowego!
źródło
ssh server rsync --version
lubssh -v server rsync --version
znaleźć przyczynę.Alternatywnie, podłączenie zdalnego katalogu do lokalnego, a następnie usunięcie go
rm -r /path_to_directory_to_remove
i na końcu podłączenie katalogu załatwia sprawę.Oryginalna odpowiedź tutaj: /programming//a/24650511/973919
źródło