Как скопировать файлы с одной машины на другую с помощью ssh [duplicate]

В результате вашей команды

$ find . -name 'segment*' | xargs -n1 -P4 sh someFunction.sh

будет запущено не более четырех копий сценария оболочки someFunction.sh ( -P 4 ) параллельно (новые будут созданы, как только будут созданы старые), каждый из которых получит в качестве аргумента одно имя файла ( -n 1 ).

Это означает, что каждый вызов вашего скрипта будет выглядеть как

sh someFunction.sh segmentsomething

Внутри скрипта оболочка поместит значения позиционных параметров (аргументы в командной строке) в $ 1 , $ 2 и т. Д. ( $ 0 обычно содержит имя самого скрипта). В вашем случае $ 1 будет содержать имя файла, а остальные будут пустыми.

Итак, в сценарии:

filename="$1"

echo "$filename"
cat "$filename"

Вот и все. Теперь, когда обычно используется find для поиска файлов и передачи их имен в xargs , возникает проблема с нечеткими именами файлов, которые люди склонны напоминать друг другу, и я сделаю это. это тоже здесь.

Утилита find передает имена файлов, разделенные пробелами. Это бесполезно, если у вас есть имена файлов с пробелами в них, поскольку это вызовет проблемы для xargs , чтобы вызвать ваш скрипт с собственными именами.

Поэтому рекомендуется всегда использовать -print0 с find и -0 с xargs , что означает, что имена файлов не разделяются пробелами, а разделяются символами nul ( \ 0 ). Это делает его намного безопаснее.

Таким образом:

$ find . -name 'segment*' -print0 | xargs -0 -n1 -P4 sh someFunction.sh
725
16.06.2018, 06:56
5 ответов

Если у вас одна из распространенных операционных систем, вы можете установить pigz, который аналогичен gzip, за исключением того, что он будет использовать несколько ядер и работать быстрее в быстрой сети. Моя команда немного другая.

tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S"

или другой способ получения файлов

ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S

или сделайте резервную копию корневой файловой системы с помощью

ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner. | pigz" > root.tgz
3
04.08.2020, 19:09

Более простой метод, который работает с компьютерами NVIDIA Jetson, управляемыми через SSH, заключается в подключении с помощью SFTP. (Протокол передачи файлов SSH ).

Предположим, я хочу переместить документ UFO_blueprint.odtс удаленных серверов НАСА в мои документы.

  1. cdтуда, куда вы хотите сохранить файл

    $ cd Documents
    
  2. Подключить

    $ sftp sammy@your_server_ip_or_remote_hostname
    
  3. Перейдите в каталог, содержащий файл, который необходимо передать.

    $ cd NASA/secret_files/
    
  4. Передача

    $ get UFO_blueprint.odt
    

Чтобы получить полный каталог, вместо этого используйте

$ get -r secret_files/
9
01.10.2020, 03:53

Юникс/Линукс рекурсивное копирование файлов и папок через безопасную оболочку с использованием следующего кода:

scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path>

Полный пример может выглядеть так::

scp -r sizwe@hprobook:./home/sizwe/PycharmProjects./home/immaculate/OtherPycharmProjects

Обратите внимание: если у вас нет DNS-сервера для разрешения имен хостов, используйте вместо этого свой IP-адрес. Пример выше может выглядеть так

scp -r 192.168.43.167:./home/sizwe/PycharmProjects./home/immaculate/OtherPycharmProjects
3
09.11.2020, 10:32

Если они используют SCP/SSH на другом порту, убедитесь, что вы указали параметр порта -Pв верхнем регистре.

Пример:

scp -P 7121 /users/admin/downloads/* root@155.138.150.12:/home/
14
06.02.2021, 19:13

Если вам важнее скорость (, а не безопасность ), попробуйте netcat. Прежде чем я начну, позвольте мне предупредить вас, что это следует использовать только в доверенной сети, поскольку передача данных по сети не зашифрована.

Сначала на принимающей стороне запустите:

nc -lp 22222 >FileName

Затем на отправляющей стороне:

nc -w3 <receiver IP or hostname> 22222 <FileName

Примечания:

  • -l :Режим прослушивания
  • -p :Номер порта для прослушивания (Я выбрал произвольный порт)
  • -w :Время ожидания соединения
2
28.04.2021, 07:14

Теги

Похожие вопросы