Зависит от того, что у вас есть на коробке ARM. У вас есть uuencode
? base64
? perl
?
В основном вы конвертируете двоичный файл в ASCII с помощью некоторой программы-оболочки, отправляете файл ASCII на удаленную машину, а затем разворачиваете его обратно в двоичный файл.
Так, например
uuencode myfile > myfile.uue
Теперь отправьте myfile.uue на удаленный конец
Затем на удаленном конце
uudecode myfile.uue
Есть много способов обернуть двоичный код в ASCII; uuencode
и base64
— два распространенных метода.Не зная, что у вас есть на машине, невозможно понять, какой метод будет лучше для вас.
После того, как вы разобрались, как это сделать , затем вы можете использовать этот метод для передачи лучшей программы, такой как minicom
или rz
, и использовать ее. В основном используйте оболочку ASCII для «запуска» надежного процесса передачи.
Вам не хватает обязательного :
после d
в строке while getopts
, если -d
должен принимать параметр. Поэтому ваш copy_dest
пуст, и, следовательно, cp
жалуется на «отсутствующий операнд». Если вы добавите «отладочные» строки, такие как
echo "Source parameter: $copy_source"
echo "Destination parameter: $copy_dest"
после цикла вы увидите проблему. Чтобы решить, просто добавьте:
:
while getopts s:d: flag
do
...
done
Также , обратите внимание, что, в частности, при работе с именами файлов вы всегда должны заключать в кавычки переменные оболочки, как в
cp "$copy_source" "$copy_dest"
Кроме того , имейте в виду, что запуск скрипта как
sh test_cp.sh
переопределит строку shebang -#!/bin/bash
, и вы не можете быть уверены, что она выполняется под bash
! Если вы хотите убедиться, что используется правильная оболочка, вы можете явно указать
bash test_cp.sh arguments
или сделайте файл сценария исполняемым и запустите его как
./test_cp.sh arguments