Załóżmy, że muszę skopiować pliki
~/path/to/file
do user@remote:/path/to/file
~/path/to/another/file
do user@remote:/path/to/another/file
~/path/alternative
do user@remote:/path/alternative
Czy istnieje sposób, aby to zrobić za pomocą rsync
lub scp
?
próbowałem rsync ~/path/{to/file,to/another/file,alternative} user@remote:/path
Ale to nie jest opcja, jeśli muszę skopiować do innego dest another_path
.
Kopiowanie pliku po pliku jest zbyt długie, jeśli muszę skopiować co najmniej 20 plików.
rsync
file-transfer
scp
Nemoden
źródło
źródło
~/path/
następnie powinieneś spojrzeć na rsync--files-from
opcja.Odpowiedzi:
Jeśli chcesz przesłać wybrane pliki za pomocą rsync, tj. Nie całego katalogu zawierającego zawartość, najlepszym sposobem jest użycie rsync
--files-from
opcja. Umieść nazwy ścieżek plików, które chcesz przesłać, względem określonego katalogu źródłowego. Zobacz stronę podręcznika rsync, aby uzyskać bardziej szczegółowe informacje.źródło
Ten skrypt skopiuje dowolną liczbę katalogów wejściowych do dowolnej liczby hostów, równolegle dzięki wykorzystaniu zadań w tle powłoki. Tutaj użyłem cpio ponieważ łatwo jest podzielić i potokować pliki wejściowe, ale można to zmienić
rsync --files-from
również.Stosowanie:
multi-cpio.sh <srcfile> <dstfile>
(wymaga kluczy ssh na potrzeby nieinteraktywnego logowania)srcfile
zawiera jeden katalog na linię, taki jak:dstfile
zawiera jeden zdalny cel na linię, taki jak:... i źródło
multi-cpio.sh
:Zobacz też http://rightsock.com/~kjw/Ramblings/tar_v_cpio.html aby uzyskać dodatkowe odniesienie do cpio i inspirację dla tego skryptu.
Edytuj: Alternatywna składnia tylko jednego src dst, bez tworzenia pliku docelowego srcfile:
źródło