Jak nie kopiować, ale przenosić pliki z jednego serwera na inny (oba Linux)?
man scp
nie dał mi nic przydatnego. Nie mogę użyć „scp”, a następnie „rm”, ponieważ muszę się upewnić, że plik został pomyślnie przesłany. Jeśli podczas przesyłania wystąpi błąd, pliku nie można usunąć.
Być może powinienem jakoś użyć kodu wyjścia, ale jak? Ponadto istnieje wiele plików, a jeśli ostatni plik zawiedzie, nie byłaby to tak dobra opcja, aby zatrzymać całą masę pomyślnie przesłanych plików.
Może jest coś poza SCP?
linux
networking
scp
Putnik
źródło
źródło
-e ssh
jest domyślną domyślną wartością od wielu lat, zwykle nie ma już potrzeby używania tego parametru.smv() { rsync -az --remove-source-files "$@"; }
do mojego zestawu narzędzi. Dziękuję Ci.Użyj
rsync
zamiastscp
:Więcej informacji z
man rsync
.źródło
Odpowiedź na to pytanie jest w porządku, a odpowiedź zaakceptowana, ale ponieważ została przeniesiona na górę pierwszej strony, pomyślałam, że przynajmniej spróbuję odpowiedzieć na nią dokładniej, jeśli mniej elegancko. Tak, możesz użyć kodu powrotu z
scp
, a ja robię to często. Wbash
:Rozumiem twój punkt widzenia na temat wielu plików do poprawnego skopiowania i obsługi awarii na stosie, więc w przypadku wielu plików:
To ostatnie jest praktyczne, jeśli używasz
ssh-agent
, ale mam wielką nadzieję, że tak.źródło
-l
flagi. Na przykład,-l 8192
aby ograniczyć transfery na poziomie 8192 kb / sw mojej sytuacji port ssh nie ma 22, więc
pracuje dla mnie.
źródło
jeśli masz starszy serwer docelowy, tak jak ja, nie możesz go użyć
ale musisz użyć
zamiast.
źródło
Jeśli wykonanie tego w dwóch krokach nie stanowi problemu, możesz użyć
scp
do skopiowania pliku ze zdalnego serwera, a następnie wykonać go wssh -e "rm /path/to/file"
celu usunięcia z dysku. Podczas przenoszenia plików, szczególnie między komputerami, może się nie udać, więc dobrze jest wykonać osobne kopiowanie i usuwanie, a plik należy usuwać tylko wtedy, gdy masz pewność, że został on pomyślnie skopiowany jako pierwszy.źródło