Muszę przetransportować wiele plików z jednego komputera na drugi (oba Linux). Chciałbym do tego użyć scp
, ale scp
pozwala na przesyłanie tylko jednego pliku na raz.
W jaki sposób mogę to zrobić?
mam
- Brak możliwości użycia rsync lub jakiegokolwiek innego protokołu
- Brak możliwości użycia certyfikatów wolnych od hasła (ale posiadanie certyfikatu z hasłem)
- Lista plików do przesłania i lista ze ścieżką docelową plików na drugim serwerze
- Pliki są rozłożone na wiele katalogów, a nie na wszystkie pliki w katalogach, które chcę skopiować
Jeśli to możliwe, chciałbym transparentnie rozpakować i rozpakować, aby zaoszczędzić przepustowość!
czy to możliwe?
-C'' on a line by itself will cause the current directory to be changed to the directory specified on the following line. Names are terminated by newlines unless --null is specified. Note that --null also disables the special handling of lines containing
-C '”.Jestem prawie pewien, że to nieprawda, przynajmniej nie dla
scp
polecenia dostarczonego przez OpenSSH zawartego w większości dystrybucji Linuksa.Używam
scp file1 file2 ... fileN user@host:/destination/directory/
dość często.W przypadku przezroczystej kompresji protokół SSH ma tę wbudowaną funkcję i
scp
może jej używać, jeśli podasz-C
opcję w wierszu polecenia. W przypadku wielu podobnych małych plików znajdziesz opcję tar + gz sugerowaną przez akira, która zyskuje lepszą kompresję, ponieważ może korzystać z podobieństwa między takimi plikami, w którychscp
każdy plik jest oddzielny. Generalnie wolę używać scp, ponieważ łatwiej jest wznowić częściowe przeniesienie (lub, chociaż wiem, że w tej sytuacji pytający nie ma takiej opcji),rsync
ponieważ jest to nawet łatwiejsze do wznowienia i udostępnia całą opcję tar + gz przewaga kompresji strumienia.źródło
Nie
scp -r yourdir otherhost:/otherdir
działa?Spróbuj tego następnie:
z
FLAG do smoły robi kompresji. Lub możesz użyć -C do ssh:źródło
-C
zrobić?Na RHEL5 jest to jedyny znany mi sposób na bezpieczne skopiowanie listy plików zawierających znaki specjalne (np. Spację). Utwórz skrypt powłoki i dołącz następujące elementy:
źródło
Można to zrobić bez większych problemów.
Po prostu tworzę listę plików z nazwą hosta obok każdego pliku, a scp wydaje się, że parsuje to dobrze. to znaczy.
Scp wydaje się działać dobrze z tą składnią. Podczas próby bez nazwy hosta obok każdego pliku nie powiodło się po pierwszym pliku. Wydaje mi się, że pamiętam inną składnię, której użyłem wcześniej i opublikuję ją, gdy ją zlokalizuję.
źródło
~/
można w większości pominąć - SCP działa względem katalogu domowego. .. Jeśli masz listę z innych miejsc w$list
:scp $(echo "$list"|sed "s/^/$srchost:/") local_destination
(To spowoduje uszkodzenie nazw plików ze spacjami)Polecam częściom użycie takiego polecenia, aby utworzyć archiwum z listy plików
tar -cvf allfiles.tar -L mylist.txt
Następnie użyj scp, aby pobrać archiwum.
użytkownik scp @ remotehost: ~ / allfiles.tar
/programming/8033857/tar-archiving-that-takes-input-from-a-list-of-files
źródło