Muszę przenieść pliki z jednego serwera CentOS na inny. Przeniesie 5 MB plików co 10 minut. Nie potrzebujesz szyfrowania.
Co było łatwego w szybkim przesyłaniu plików?
Czy istnieje coś prostszego niż ftp?
Dzięki!
Muszę przenieść pliki z jednego serwera CentOS na inny. Przeniesie 5 MB plików co 10 minut. Nie potrzebujesz szyfrowania.
Co było łatwego w szybkim przesyłaniu plików?
Czy istnieje coś prostszego niż ftp?
Dzięki!
Odpowiedzi:
rsync
Używałbym rsync przed użyciem ftp lub tftp.
Więcej opcji i (z mojego doświadczenia) bardziej niezawodny transfer.
tar przez ssh jest w porządku, ale tar przez TCP przez netcat jest tak niski, jak to tylko możliwe! Jeśli jest to jednorazowa sprawa, daj temu szansę:
Na odbiorniku:
nc -l -p 8989 | tar x
Na nadawcy:
tar cf - /source-path | nc (receiving host ip address) 8989
Jeśli robisz to regularnie, prawdopodobnie użyłbym rsync.
Dwie osoby wspominały o tar nad ssh, ale nie powiedziały, jak to zrobić. Dla przypomnienia, podstawową procedurą jest uruchomienie:
tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'
Lub, jeśli chcesz rozpocząć przelewy od strony odbierającej:
ssh remotehost 'cd /source && tar cf - files' | tar xvf -
Zaletą robienia tego w ten sposób w porównaniu z rozwiązaniem Netcat firmy Evan jest to, że wszystko można uruchomić z jednego komputera; nie musisz koordynować dwóch wywołań netcat. Jeśli potrzebujesz, aby działało to automatycznie, możesz skonfigurować klucz ssh, który pozwala nawiązywać połączenia bez hasła, i używać tego klucza do tych połączeń.
ssh ma opcję -C do kompresji strumienia danych, lub możesz użyć wbudowanej funkcji kompresji GNU tar:
tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'
Rsync to kolejna opcja, ale jego mocną stroną jest aktualizacja plików, które już istnieją na końcu odbierającym. Odkryłem, że jest wolniejszy niż scp lub tar / ssh podczas używania go do przesyłania plików, które jeszcze nie istnieją na drugim końcu.
Użyję scp
lub tar
ponad ssh
, uczciwie. Szyfrowanie spowalnia rzeczy, ale łatwość konfiguracji i użytkowania, niezawodność i (subiektywnie, oczywiście) znajomość sprawiają, że jestem gotów podjąć trafienie, chyba że naprawdę potrzebuję takiej prędkości.
Możesz przyspieszyć transfer ssh, mówiąc mu, aby używał szybszego szyfru niż domyślny. Domyślnie jest to zwykle 3des
i możesz to zrobić -c des
, więc będzie to oczywiście szybsze i -c blowfish
jest również przedstawiane jako szybkie, chociaż nie przetestowałem tego dokładnie.
(W czasach SSHv1 często można było to zrobić -c none
, ale chyba ktoś uznał, że to złe juju.)
Jeśli musisz przejść przez scp / ssh, moje eksperymenty pokazują, że najszybszym domyślnie włączonym szyfrem jest RC4. Podajesz szyfr za pomocą „ -c arcfour ” w komendzie ssh / scp:
do wstępnej kopii:
scp -c arcfour -r foo/ desthost:/destdir
do aktualizacji:
rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir
Rsync to dobry sposób, ponieważ jeśli przesyłasz te same pliki więcej niż jeden raz, przyspieszy to kopiowanie, jak pokazano w tym cytacie ze strony podręcznika man.
rsync is a program that behaves in much the same way that rcp does, but
has many more options and uses the rsync remote-update protocol to
greatly speed up file transfers when the destination file is being
updated.
The rsync remote-update protocol allows rsync to transfer just the dif-
ferences between two sets of files across the network connection, using
an efficient checksum-search algorithm described in the technical
report that accompanies this package.
FTP jest dość prosty, ale jeszcze prostszym sposobem może być utworzenie udziału NFS na jednym komputerze i zamontowanie go na drugim. Następnie skopiowanie plików będzie polegało na wykonaniu cp z jednego katalogu do drugiego.
Jeśli chcesz prędkości, możesz użyć netcata i tar. Będzie szybszy niż ssh, rsync lub scp w sieci lokalnej, w której szyfrowanie nie stanowi problemu. Google „Netcat tar”.
nc -l -p 7878 | tar -C /target/dir -xzf -
tar -cz /source/dir | nc DestinationServer 7878
To oczywiście wymaga, aby Netcat został faktycznie zainstalowany. Google „Netcat tar”, aby uzyskać więcej informacji.
Wierzę, że już rozwiązałeś problem, ale w przypadku, gdy twój ssh działa na innym porcie (nie na standardowym porcie 22), możesz użyć tego
rsync -avz --rsh = 'ssh -pXXXXX' / local / dir / root@192.168.1.2: / remote / dir
Uwaga: - zastąp XXXXX numerem portu - zastąp 192.16.1.2 poprawnym adresem IP zdalnego serwera
https://www.npmjs.org/package/gist-cli
https://github.com/settings/applications#personal-access-tokens
albo ten:
https://github.com/defunkt/gist
Użyj polecenia gist, aby przesłać i pobrać