Kopiowanie plików przy użyciu rsync ze zdalnego serwera na komputer lokalny


318

Po ssh'owaniu na zdalnym serwerze, jakie byłoby polecenie skopiowania wszystkich plików z katalogu do katalogu lokalnego na moim komputerze?


4
Ponieważ możesz rsyncbezpośrednio z lokalnego komputera.
Johnsyweb

2
Och ... tak, mogę. Widzę teraz inne odpowiedzi. Dzięki.
markstewie

17
Jest to wspólne zadanie dla rozwoju (sieci) z dobrą odpowiedzią. Nie rozumiem, dlaczego wciąż jest zamknięty.
d.raev,

6
Myślę, że @ d.raev miał na myśli to, że pytanie zostało zamknięte jako nie na temat (jeśli dobrze pamiętam, oflagowałem migrację tego pytania do SuperUser, gdzie myślę, że pasuje lepiej), niż że nie było żadnej zaakceptowanej odpowiedzi . Mimo to ... miło było zaakceptować moją odpowiedź po tak długim czasie. :-)
Johnsyweb,

3
@ markstewie żadnych złych uczuć, to dobre pytanie i pomogło mi (wydaje się, że wiele innych też), ale to „zamknięte” sprawia, że ​​nie wygląda na godne zaufania, więc postanowiłem zwrócić na to uwagę.
d.raev

Odpowiedzi:


575

Z lokalnego komputera:

rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage

Z lokalnego komputera z niestandardowym portem ssh:

rsync -chavzP -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path

Lub ze zdalnego hosta, zakładając, że naprawdę chcesz pracować w ten sposób, a lokalny komputer nasłuchuje na SSH:

rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage

Zobacz man rsyncwyjaśnienie moich zwykłych przełączników.


255
Wyjaśnienie polecenia: wyjaśniahell.com/...
wołowina

118
Wow, ta strona z objaśnieniami jest niesamowita.
gosukiwi

2
@cmcdragonkai: w rzeczy samej, lokalny host musi mieć uruchomiony serwer ssh i być dostępny dla zdalnego hosta. To jeden z powodów, dla których wolę pierwsze rozwiązanie od drugiego.
Johnsyweb

16
Zachowaj ostrożność podczas rsynchronizacji z końcowymi ukośnikami. Polecenie wydane przez Johnnysweb utworzy katalog o nazwie copy wewnątrz /path/to/local/storage. Podoba mi się /path/to/local/storage/copy. Jeśli tego właśnie chcesz świetnie. Jednak częstszym scenariuszem jest skopiowanie zawartości katalogu zdalnego do katalogu lokalnego. Następnie zrobiłbyś to, /path/to/copy/co umieściłoby zawartość w katalogu /path/to/local/storagebez tworzenia lokalnego katalogu kopii.
rozdział

16
Przyszedłem tutaj po komendę rsync i wyszedłem z wyjaśniahell.com . Dzięki @beefsack!
Cyphase

50

Jeśli masz dostęp do SSH, nie musisz najpierw SSH, a następnie kopiować, wystarczy użyć Bezpiecznego kopiowania (SCP) z miejsca docelowego.

scp user@host:/path/file /localpath/file

Obsługiwane są znaki wieloznaczne, więc

scp user@host:/path/folder/* /localpath/folder

skopiuje wszystkie zdalne pliki z tego folderu. jeśli skopiujesz więcej niż jeden katalog.

Uwaga -r skopiuje również wszystkie podfoldery i zawartość.


6
Dlaczego używać scpzamiast rsync? Uważaj również, aby twoja powłoka nie próbowała się rozszerzać user@host:/path/folder/*, być może używając pojedynczych cudzysłowów ( ').
Johnsyweb

Uważam, że scp jest łatwiejszy w użyciu z miejsca docelowego .... Zasadniczo jest to kopiowanie plików przez ssh, ale bez konieczności wcześniejszego ustanowienia połączenia ssh.
Tezyn

8
Wiem, co to scpjest, to nie było moje pytanie. Dlaczego nie używałeś rsync? O to właśnie pyta pytanie, nie wymaga ustalonej sesji SSH i jest często szybsze i bardziej wydajne niż scp.
Johnsyweb,

26
Pamiętaj, że scp podąża za dowiązaniami symbolicznymi zamiast je kopiować. Może to prowadzić do kopiowania więcej niż się spodziewasz i utraty dowiązań symbolicznych (stają się normalnymi folderami / plikami).
Poniedziałek

2
Odpowiedź Mondane'a jest właśnie powodem, dla którego znalazłem ten post. Zwykle używam scp do wszystkiego, ale musiałem zachować uprawnienia i dowiązanie symboliczne między serwerami. Również różnica prędkości (bc moja nowicjuszka zdecydowanie zorientowana jako pierwsza) była ogromna.
kyle
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.